Vitrinify API
Vitrinify API ile kendi uygulamanızdan veya bir yapay zekâ ajanından içerik üretebilir, takvime koyabilir ve paylaşabilirsiniz. Uygulamadaki kurallar (sektör ve uyum kuralları, plan sınırları, onay modu, TikTok kuralları) API'de de geçerlidir.
Temel adres: https://vitrinify.app/v1 · OpenAPI 3.1 şeması
Bu sayfada
Kimlik doğrulama
Çalışma alanı sahibi Ayarlar → API anahtarları sayfasından anahtar oluşturur. Her isteği Authorization: Bearer <anahtar> başlığıyla gönderin. Geçersiz veya iptal edilmiş anahtar 401 döner.
Örnek: anahtarla istek
curl "https://vitrinify.app/v1/content" \
-H "Authorization: Bearer $VITRINIFY_API_KEY"Yetkiler (kapsamlar)
Bir anahtar yalnızca seçilen yetkilerle çalışır; yetki dışı işlem 403 API_SCOPE_FORBIDDEN döner. Anahtar, çalışma alanında editör gibi davranır ve hiçbir zaman onay veremez: onay modunda yalnızca bir onaylayıcının onayladığı içerik paylaşılır.
readOkuma — içerikleri ve paylaşım sonuçlarını listelergenerateÜretim — içerik adayı üretir (günlük üretim hakkınızdan düşer)publishPaylaşım — içerikleri takvime koyar ve paylaşır (onay modunda yalnızca onaylı içerik)
Uç noktalar
POST /v1/content/generate
İçerik adayları üretir (uyum motorundan geçer; engellenen adaylar kaydedilmez).
Yetki: generateBaşarılı yanıt: 201
Örnek istek
curl -X POST "https://vitrinify.app/v1/content/generate" \
-H "Authorization: Bearer $VITRINIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5,"format":"slideshow"}'Yanıt alanları · 201
{
"requested": integer,
"created": integer,
"blocked": integer,
"duplicates": integer,
"items": object[]
}Olası hata durumları: 400, 401, 402, 403, 422, 429, 500, 503
GET /v1/content
Çalışma alanının içeriklerini yeniden eskiye listeler (sayfalı).
Yetki: readBaşarılı yanıt: 200
Sorgu parametreleri: status, limit, cursor
Örnek istek
curl "https://vitrinify.app/v1/content?limit=20" \
-H "Authorization: Bearer $VITRINIFY_API_KEY"Yanıt alanları · 200
{
"items": object[],
"nextCursor": string | null
}Olası hata durumları: 400, 401, 403, 429, 500
POST /v1/content/{id}/schedule
İçeriği kaydeder ve takvime koyar; zamanı gelince otomatik paylaşılır.
Yetki: publishBaşarılı yanıt: 200
Örnek istek
curl -X POST "https://vitrinify.app/v1/content/$CONTENT_ID/schedule" \
-H "Authorization: Bearer $VITRINIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"at":"2026-11-02T19:00:00+03:00","platforms":["instagram"]}'Yanıt alanları · 200
{
"id": string,
"scheduledAt": string,
"platforms": "instagram" | "tiktok"[],
"approval": "approved" | "pending" | "stale" | null
}Olası hata durumları: 400, 401, 402, 403, 404, 409, 422, 429, 500
POST /v1/content/{id}/publish
İçeriği hemen paylaşım kuyruğuna alır; sonucu gönderi uç noktasından izleyin.
Yetki: publishBaşarılı yanıt: 202
Örnek istek
curl -X POST "https://vitrinify.app/v1/content/$CONTENT_ID/publish" \
-H "Authorization: Bearer $VITRINIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"instagram"}'Yanıt alanları · 202
{
"id": string,
"contentId": string,
"platform": "instagram" | "tiktok",
"account": string,
"status": "queued" | "publishing" | "published" | "failed",
"outcomeUnknown": boolean,
"url": string | null,
"errorCode": string | null,
"createdAt": string,
"publishedAt": string | null
}Olası hata durumları: 400, 401, 402, 403, 404, 409, 422, 429, 500
GET /v1/posts/{id}
Bir gönderinin paylaşım durumunu döner.
Yetki: readBaşarılı yanıt: 200
Örnek istek
curl "https://vitrinify.app/v1/posts/$POST_ID" \
-H "Authorization: Bearer $VITRINIFY_API_KEY"Yanıt alanları · 200
{
"id": string,
"contentId": string,
"platform": "instagram" | "tiktok",
"account": string,
"status": "queued" | "publishing" | "published" | "failed",
"outcomeUnknown": boolean,
"url": string | null,
"errorCode": string | null,
"createdAt": string,
"publishedAt": string | null
}Olası hata durumları: 400, 401, 403, 404, 429, 500
TikTok
TikTok kuralları gereği gizlilik ayarı, etkileşimler, ticari içerik beyanı ve açık paylaşım onayı yalnızca uygulamadaki TikTok paylaşım ekranında verilir. API, TikTok'a yalnızca bu ayarların ve onayın uygulamada verildiği içerikleri gönderir; aksi hâlde 403 TIKTOK_UI_CONSENT_REQUIRED döner.
MCP sunucusu (Claude ve diğer yapay zekâ ajanları)
Aynı işlemler bir MCP sunucusu olarak da sunulur (generate_content, list_content, schedule_content, publish_content, get_post). Kurulum için depodaki apps/mcp/README.md dosyasına bakın; sunucu VITRINIFY_API_KEY ortam değişkenindeki anahtarla çalışır.
Hatalar
Hatalar sabit bir kod ve Türkçe/İngilizce mesajla döner (error.code, error.message, error.messages.tr, error.messages.en). message, Accept-Language başlığına göre seçilir (varsayılan Türkçe).
| Durum | Anlamı |
|---|---|
| 400 | Geçersiz istekINVALID_REQUEST, INVALID_SCHEDULE |
| 401 | Anahtar eksik, geçersiz veya iptal edilmişAPI_KEY_INVALID, UNAUTHENTICATED |
| 402 | Plan sınırına ulaşıldıQUOTA_EXCEEDED, PLAN_LIMIT_SAVED_ITEMS, PLAN_LIMIT_ACCOUNTS, PLAN_LIMIT_WORKSPACES, INSUFFICIENT_CREDITS |
| 403 | Yetki, rol, onay veya TikTok onayı reddiAPI_SCOPE_FORBIDDEN, FORBIDDEN, ROLE_FORBIDDEN, APPROVAL_REQUIRED, APPROVAL_STALE, TIKTOK_UI_CONSENT_REQUIRED |
| 404 | Bulunamadı (veya anahtarın çalışma alanında değil)NOT_FOUND |
| 409 | İçeriğin mevcut durumuyla çakışmaPUBLISH_DUPLICATE, INSTAGRAM_REPOST_BLOCKED, TIKTOK_REPOST_BLOCKED, SCHEDULE_IN_PROGRESS, PUBLISH_NOT_READY, VIDEO_NOT_READY |
| 413 | İstek gövdesi çok büyükPAYLOAD_TOO_LARGE |
| 422 | Bir iş kuralı reddetti (uyum, hesap, format…) |
| 429 | Hız sınırı aşıldı (Retry-After başlığına bakın)RATE_LIMITED |
| 500 | Beklenmeyen hataINTERNAL_ERROR |
| 503 | Bir servis geçici olarak kullanılamıyor |
Hız ve plan sınırları
Anahtar başına dakikada 60 istek (üretim: dakikada 5). Aşılırsa 429 ve Retry-After başlığı döner. Üretim günlük üretim hakkınızdan, zamanlama/paylaşım aylık kayıt hakkınızdan düşer (402).
Başlamaya hazır mısınız?
Anahtarı çalışma alanı sahibi Ayarlar → API anahtarları sayfasından oluşturur.