Clevera REST API'yi kullanma
Clevera'yı kendi betiklerinizden çağırın: temel URL, bearer-token kimlik doğrulaması, uç noktalar ve her birinin ihtiyaç duyduğu izinler, ücretli işler için fiyat teklifi alıp başlatma akışı, eşdeğerlik (idempotency), hata formatı ve hız sınırları.
Clevera'nın REST API'si, kendi betiklerinizin ve servislerinizin bir temsilcinin MCP üzerinden yapabildiği her şeyi yapmasını sağlar: kütüphanenizi okumak, video ve makale talep etmek, videoları dışa aktarmak, dokümantasyon siteleri üzerinde çalışmak ve işleri takip etmek. Bu makale temel URL'yi, kimlik doğrulamasını, ücretli işler için istek akışını, hataları ve hız sınırlarını kapsar.
Temeller
| Temel URL | https://app.clevera.ai/api/v1 |
| Kimlik Doğrulama | API token ile Authorization: Bearer <token> (clv_agent_ ile başlar) |
| Format | JSON giriş ve çıkış. Accept: application/json gönderin ve bir gövde ile birlikte Content-Type: application/json kullanın. |
| Kimlikler | İşler için job_… gibi herkese açık kimlikler. API'nin döndürdüğü kimlikleri kullanın. |
Bir token'ı GET /docs/me ile kontrol edin:
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
-H "Accept: application/json" \
https://app.clevera.ai/api/v1/docs/me
Yanıt, token'ın kimin adına hareket ettiğini söyler: token'ın adı ve son kullanma tarihi, kişi ve mevcut rolü, çalışma alanı, kapsamdaki siteler ve şu anda çalışan izinler (token'ın izinlerinin kişinin mevcut rolüne göre kırpılmış hali). Bir çağrı reddedildiğinde önce bunu çağırın.
Uç Noktalar
Her uç nokta gösterilen izne ihtiyaç duyar. Bu izin olmadan birini çağırmak 403 forbidden_ability döndürür. Bkz. Temsilci izinleri.
Kütüphane ve materyaller
| Yöntem ve yol | İzin | Ne yapar |
|---|---|---|
GET /create/types |
herhangi | Talep edebileceğiniz video ve sosyal klip türleri. |
GET /library |
library:read |
Token sahibinin görebildiği videolar, kayıtlar ve makaleler. |
GET /recordings |
library:read |
Yalnızca kayıtlar. |
GET /library/{item} |
library:read |
Bir öğe. |
GET /library/{item}/transcript |
library:read |
Transkripti. |
GET /library/{item}/article |
library:read |
Makalesi. |
GET /library/{item}/embed |
library:read |
Gömme kodu. |
GET /materials |
library:read |
Yüklenen görseller, videolar ve PDF'ler. |
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete |
materials:write |
Bir görsel, video veya PDF ekleyin (doğrudan, bir URL'den veya büyük bir yükleme olarak). |
Videolar ve makaleler
| Yöntem ve yol | İzin | Ne yapar |
|---|---|---|
POST /videos/quotes |
videos:create |
Bir kayıttan video (type: how_to, product_demo, cleanup, styled_video), bir kayıttan makale (article) veya bir çeviri (translation) için fiyat teklifi alın. |
POST /videos |
videos:create + credits:spend |
Teklif edilen videoyu oluşturun (quote_id). |
POST /articles/from-recording |
videos:create + credits:spend |
Teklif edilen makaleyi oluşturun. |
POST /videos/translations |
videos:create + credits:spend |
Teklif edilen çeviriyi oluşturun. |
POST /clips/quotes |
videos:create |
Bir sosyal klip için fiyat teklifi alın (GET /create/types'deki türler). |
POST /clips |
videos:create + credits:spend |
Teklif edilen sosyal klibi oluşturun. |
POST /videos/{video_id}/exports |
videos:export |
MP4 oluşturun: resolution 1080p (varsayılan), 2k veya 4k; her zaman 60 fps. Ücretsizdir. |
İşler ve krediler
| Yöntem ve yol | İzin | Ne yapar |
|---|---|---|
POST /quotes |
işin izni | Herhangi bir iş türü için fiyat teklifi. |
POST /jobs |
işin izni (+ ücretliyse credits:spend) |
Teklif edilen bir işi başlatın. |
GET /jobs |
jobs:read |
İşleri listele. |
GET /jobs/{job} |
jobs:read |
Bir işin durumu ve sonucu. |
GET /jobs/{job}/wait |
jobs:read |
Yoklama (polling) yerine bir değişiklik bekleyin. |
GET /jobs/{job}/events |
jobs:read |
İşin ilerleme etkinlikleri. |
POST /jobs/{job}/cancel |
jobs:read |
Bir işi iptal edin. Çok geç: "Bu iş artık iptal edilemez." |
GET /credits |
credits:spend veya jobs:read |
Çalışma alanının kredi bakiyesi. |
Dokümantasyon siteleri
| Yöntem ve yol | İzin | Ne yapar |
|---|---|---|
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages |
content:read |
Token kapsamındaki siteler ve sayfaları. |
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions |
content:read |
Taslaklar dahil sayfaları arayın ve okuyun. |
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review |
articles:write |
Taslak makaleler oluşturun ve düzenleyin, incelemeye gönderin. Canlı makaleler ayrıca site:publish gerektirir. |
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} |
structure:write |
Sayfaları ve bölümleri taşıyın, yeniden adlandırın, gizleyin ve kaldırın. |
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body |
content:read / site-pages:write |
Ana sayfa, iletişim ve yasal sayfalar. |
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} |
content:read / changelog:write |
Taslak olarak değişiklik günlüğü girişleri. |
POST /docs/media, POST /docs/media/uploads |
media:write |
Görsel yükleyin. |
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish |
site:publish |
Okuyucuların gördüklerini yayınlayın. |
GET /insights/sites/{site}, …/gaps, …/feedback |
insights:read |
Boşlukları, cevapsız soruları, sayfa geri bildirimlerini arayın. |
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects |
site:configure |
Site ayarları. |
POST /docs/sites |
sites:create |
Bir dokümantasyon sitesi oluşturun. |
Temsilciler ve dokümantasyon siteleri hakkında daha fazla bilgi: AI temsilcilerini dokümantasyon sitelerinize bağlayın.
Ücretli iş talep etme
Kredi harcayan işler her zaman önce fiyat teklifi, sonra başlatma şeklinde ilerler:
- Fiyat teklifi alın. İstediğiniz şeyle
POST /videos/quotes(veya/clips/quotes). Yanıt birquote_idve kredi aralığını içerir. Teklif 15 dakika geçerlidir ve bir kez kullanılabilir. - İsteğe bağlı olarak deneme çalışması yapın. Başlayıp başlamayacağını, onay gerekip gerekmediğini veya engellenip engellenmeyeceğini öğrenmek için
"dry_run": trueile başlatma isteği gönderin. Hiçbir şey yazılmaz. - Başlatın.
POST /videosilequote_idve birIdempotency-Keybaşlığı gönderin. Yanıt, bir iş ile birlikte202olur. - Takip edin. İşin
statusdeğişene kadarGET /jobs/{job}/waitkullanın veya web kancalarını dinleyin.
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
-H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
-d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'
curl -X POST https://app.clevera.ai/api/v1/videos \
-H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
-H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
-d '{"quote_id": "<quote id>"}'
İş durumları:
| Durum | Anlamı |
|---|---|
queued |
Kabul edildi, çalışmak üzere. |
running |
Devam ediyor. |
needs_input |
Bir kişiyi bekliyor, genellikle Temsilci istekleri üzerinde bir onay. İş bir bağlantı ve son kullanma tarihi taşır. |
succeeded |
Tamamlandı. İş, yeni videoya veya makaleye bağlantı verir. |
failed |
Başarısız oldu; iş bir error_code içerir. |
canceled |
İptal edildi veya onayı reddedildi. |
expired |
24 saat içinde kimse onaylamadı. |
Bir başlatma işleminin hemen mi çalışacağı yoksa bir kişiyi mi bekleyeceği, token'ın harcama sınırlarına ve Aşağıdakileri otomatik onayla ayarına bağlıdır. Bkz. Temsilci harcamalarını ve onaylarını kontrol etme.
Yeniden denemeler ve eşdeğerlik
Her oluşturma ve başlatma işleminde bir Idempotency-Key başlığı (eylem başına yeni bir UUID) gönderin. Ağ bağlantısı koparsa ve aynı anahtar ve gövde ile yeniden denerseniz, ikinci bir video yerine ilk yanıtı alırsınız. Anahtarlar 24 saat boyunca hatırlanır.
| Kod | Anlamı |
|---|---|
idempotency_key_reused |
Farklı bir gövdeye sahip aynı anahtar. Yeni bir istek için yeni bir anahtar kullanın. |
idempotency_in_progress |
Bu anahtarla yapılan ilk istek hala çalışıyor. Bekleyin ve yeniden deneyin. |
idempotency_conflict |
"Bu eşdeğerlik anahtarı farklı bir istek için kullanıldı." |
Hatalar
Her hata aynı yapıya sahiptir ve bir sonraki adımda ne yapmanız gerektiğini söyleyen bir mesaj içerir:
{
"error": {
"code": "forbidden_ability",
"message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
"details": { "ability": "videos:create" }
},
"request_id": "req_example"
}
Destek ekibiyle iletişime geçtiğinizde request_id bilgisini ekleyin.
| HTTP | Kodlar | Tipik neden |
|---|---|---|
| 401 | unauthenticated, token_expired, token_revoked |
Token yok, yanlış token, süresi dolmuş veya iptal edilmiş token. |
| 402 | insufficient_credits |
Çalışma alanının teklif için yeterli kredisi yok. |
| 403 | forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden |
Eksik izin, sahibin rolü, koleksiyon erişimi veya IP izin listesi. |
| 403 | plan_locked |
"Temsilci API'si bu çalışma alanının planında yok. Pro ve üzeri planlarda bulunur." |
| 404 | not_found, unknown_kind |
"Bu token'ın kapsamında bu kimliğe sahip ... yok. Önce listeleyin veya arayın ve döndürülen bir kimliği kullanın." |
| 409 | revision_conflict, quote_used, not_cancelable, idempotency_* |
İçerik değişti, teklif kullanıldı veya yeniden deneme çakışması. |
| 410 | quote_expired |
"Bu teklifin süresi doldu. Yeni bir teklif isteyin." |
| 413 | unsupported_media |
Dosya çok büyük veya desteklenen bir tür değil. |
| 422 | validation_failed, invalid_input, quote_mismatch, limit_reached |
Bir alan yanlış; details bunu adlandırır. |
| 429 | rate_limited, cap_exceeded, busy |
Çok fazla istek, harcama sınırı veya aynı anda iki başlatma. |
Her mesaj ve çözümü: Temsilci ve API hatalarını düzeltme.
Hız sınırları
| Sınır | Değer | Mesaj |
|---|---|---|
| Token başına istek | Dakikada 300 | "Bu token istek hızını aştı. Bekleyin ve yeniden deneyin." |
| Çalışma alanı başına istek | Dakikada 1.200, tüm token'lar birlikte | "Bu çalışma alanı temsilci istek hızını aştı. Bekleyin ve yeniden deneyin." |
| Token başına yazma | Dakikada 60 | "Bu token'dan çok fazla yazma işlemi yapıldı. Bekleyin ve yeniden deneyin." |
| Günlük token başına yazma | 2.000 | "Bu token günlük yazma sınırına ulaştı. Yarın tekrar deneyin." |
| Token başına yayınlama | Saatte 10 | "Bu token saatlik yayınlama sınırına ulaştı. Daha sonra tekrar deneyin." |
| Ücretli başlatmalar | Token başına saatte 20, çalışma alanı başına günde 100 | retry_after ile rate_limited |
| Yüklemeler | Dakikada 30; token başına günde 500 MB; dosya başına 25 MB | "Bu token'dan çok fazla yükleme yapıldı. Bekleyin ve yeniden deneyin." / "Bu token günlük yükleme hacmine ulaştı. Yarın tekrar deneyin." |
| Geçerli token olmadan çağrılar | IP adresi başına dakikada 60 | "Çok fazla istek. Bekleyin ve yeniden deneyin." |
Bir 429 yanıtı, Retry-After başlığına ve gövdede retry_after (saniye) değerine sahiptir. Yeniden denemeden önce o kadar süre bekleyin. Okumalar, fiyat teklifleri ve durum kontrolleri kredi harcamaz.