İçeriğe geç

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ı listeler
  • generateÜ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).

HTTP durum kodları
DurumAnlamı
400Geçersiz istekINVALID_REQUEST, INVALID_SCHEDULE
401Anahtar eksik, geçersiz veya iptal edilmişAPI_KEY_INVALID, UNAUTHENTICATED
402Plan sınırına ulaşıldıQUOTA_EXCEEDED, PLAN_LIMIT_SAVED_ITEMS, PLAN_LIMIT_ACCOUNTS, PLAN_LIMIT_WORKSPACES, INSUFFICIENT_CREDITS
403Yetki, rol, onay veya TikTok onayı reddiAPI_SCOPE_FORBIDDEN, FORBIDDEN, ROLE_FORBIDDEN, APPROVAL_REQUIRED, APPROVAL_STALE, TIKTOK_UI_CONSENT_REQUIRED
404Bulunamadı (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
422Bir iş kuralı reddetti (uyum, hesap, format…)
429Hız sınırı aşıldı (Retry-After başlığına bakın)RATE_LIMITED
500Beklenmeyen hataINTERNAL_ERROR
503Bir 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.

API anahtarı oluştur