Skip to content

İstek Gönderme ​

Bu sayfa, Chainabit API ile etkileşime girerken bilmeniz gereken kuralları ve kalıpları kapsar: temel URL, başlıklar, yanıt biçimi, sayfalama, hata yönetimi ve idempotency.


Temel URL ​

Tüm uç noktalar şuna görelidir:

https://api.chainabit.com/api/v1

Örneğin, AI oturumları uç noktası {API_URL}/api/v1/ai/sessions adresine çözümlenir.


Ortam Değişkenleri ​

Bu sayfadaki herhangi bir örneği çalıştırmadan önce bu değişkenleri ayarlayın:

bash
export BASE_URL="https://api.chainabit.com/api/v1"
export TOKEN="your-access-token"

Zorunlu Başlıklar ​

Her istek şunları içermelidir:

BaşlıkDeğerZorunlu
Content-Typeapplication/jsonPOST, PUT ve PATCH istekleri için
AuthorizationBearer <accessToken>Kimlik doğrulaması gereken tüm uç noktalar için

Yanıt Zarfı ​

Her API yanıtı tutarlı bir zarf yapısını izler:

json
{
  "data": { ... },
  "meta": { ... },
  "error": null
}
AlanAçıklama
dataİstenen kaynak veya sonuç. Bir hata oluştuğunda null olur.
metaSayfalama bilgisi gibi ek üst veriler. Geçerli değilse null olur.
errorHata ayrıntıları. İstek başarılı olduğunda null olur.

Zarf tasarımının daha ayrıntılı açıklaması için Yanıt Zarfı sayfasına bakın.

Başarılı Yanıt ​

json
{
  "data": {
    "id": "c9f8e7d6-5432-10fe-dcba-0987654321fe",
    "title": "Research Assistant",
    "status": "active"
  },
  "meta": null,
  "error": null
}

Hata Yanıtı ​

json
{
  "data": null,
  "meta": null,
  "error": {
    "statusCode": 404,
    "message": "Chain not found",
    "code": "NOT_FOUND"
  }
}

Sayfalama ​

Liste uç noktaları, iki sorgu parametresiyle offset tabanlı sayfalamayı destekler:

ParametreVarsayılanAçıklama
limit20Döndürülecek öğe sayısı (üst sınır uç noktaya göre değişir).
offset0Atlanacak öğe sayısı.

Örnek ​

bash
curl "https://api.chainabit.com/api/v1/ai/sessions?limit=10&offset=20" \
  -H "Authorization: Bearer $TOKEN"
js
const response = await fetch(
  `${BASE_URL}/ai/sessions?limit=10&offset=20`,
  {
    headers: { Authorization: `Bearer ${TOKEN}` },
  }
);
const { data, meta } = await response.json();
python
import requests

response = requests.get(
    f"{BASE_URL}/ai/sessions",
    params={"limit": 10, "offset": 20},
    headers={"Authorization": f"Bearer {TOKEN}"},
)
result = response.json()
data, meta = result["data"], result["meta"]
txt
Open AI → GET List Sessions
Add query params: limit=10, offset=20

Yanıt

json
{
  "data": [
    { "id": "...", "title": "Developer Pipeline" },
    { "id": "...", "title": "Research Assistant" }
  ],
  "meta": {
    "total": 42,
    "limit": 10,
    "offset": 20
  },
  "error": null
}

Sayfa sayısını hesaplamak veya daha fazla öğe olup olmadığını belirlemek için meta.total değerini kullanın. Sayfalamanın tüm ayrıntıları için Sayfalama sayfasına bakın.


Hata Yönetimi ​

Yanıttaki error alanını her zaman kontrol edin. Yaygın HTTP durum kodları:

DurumAnlamı
400Hatalı istek -- geçersiz veya eksik parametreler.
401Yetkisiz -- eksik veya süresi dolmuş token.
403Yasak -- yetersiz izinler veya captcha hatası.
404Bulunamadı -- kaynak mevcut değil.
409Çakışma -- yinelenen kaynak veya idempotency anahtarı çakışması.
422İşlenemeyen varlık -- doğrulama hatası.
429Çok fazla istek -- hız sınırı aşıldı.
500Dahili sunucu hatası.

Hız Sınırlama ​

Hız sınırını aştığınızda API, kaç saniye beklenmesi gerektiğini belirten bir Retry-After başlığıyla 429 Too Many Requests döndürür:

json
{
  "data": null,
  "meta": null,
  "error": {
    "statusCode": 429,
    "message": "Rate limit exceeded. Try again in 30 seconds.",
    "code": "RATE_LIMITED"
  }
}

En iyi uygulama: üstel geri çekilme uygulayın ve Retry-After başlığına uyun. Hız sınırı katmanları ve kotalar için Hız Sınırlama sayfasına bakın.

Tüm hata kodu referansı için Hatalar sayfasına bakın.


Idempotency ​

Bazı değiştirici uç noktalar (işlem oluşturma veya olay kaydetme gibi) bir Idempotency-Key başlığı kabul eder. Aynı uç nokta için aynı idempotency anahtarını göndermek, yinelenen bir kaynak oluşturmadan özgün yanıtı döndürür.

bash
curl -X POST https://api.chainabit.com/api/v1/ai/sessions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -d '{"title": "Pipeline session"}'
js
const response = await fetch(`${BASE_URL}/ai/sessions`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${TOKEN}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify({ title: 'Pipeline session' }),
});
const { data } = await response.json();
python
import requests
import uuid

response = requests.post(
    f"{BASE_URL}/ai/sessions",
    headers={
        "Authorization": f"Bearer {TOKEN}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={"title": "Pipeline session"},
)
data = response.json()["data"]
txt
Open AI → POST Create Session
Set Idempotency-Key header to {{$randomUUID}}

Kurallar:

  • Idempotency anahtarı olarak bir UUID v4 kullanın.
  • Anahtarlar hesabınıza ve belirli bir uç noktaya göre kapsamlandırılır.
  • Anahtarların süresi 24 saat sonra dolar. Sonrasında aynı anahtar yeniden kullanılabilir.
  • Özgün istek hâlâ işleniyorsa, aynı anahtarla gönderilen sonraki bir istek 409 Conflict döndürür.

Tam İstek-Yanıt Örneği ​

Aşağıda bir AI oturumu oluşturan, olası hataları ele alan ve doğru başlık kullanımını gösteren eksiksiz bir örnek yer alıyor:

bash
curl -s -w "\nHTTP_STATUS:%{http_code}" \
  -X POST https://api.chainabit.com/api/v1/ai/sessions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
    "title": "Research Assistant"
  }'

Başarılı -- 201 Created

json
{
  "data": {
    "id": "sess_01HQ3K5N2P4R7T9V1X3Z5A7C9E",
    "title": "Research Assistant",
    "status": "active",
    "createdAt": "2026-05-04T20:00:00.000Z"
  },
  "meta": null,
  "error": null
}

Doğrulama hatası -- 422 Unprocessable Entity

json
{
  "data": null,
  "meta": null,
  "error": {
    "statusCode": 422,
    "message": "Validation failed",
    "code": "VALIDATION_ERROR",
    "details": [
      {
        "field": "title",
        "message": "title must be a string and is required"
      }
    ]
  }
}

Token süresi doldu -- 401 Unauthorized

json
{
  "data": null,
  "meta": null,
  "error": {
    "statusCode": 401,
    "message": "Unauthorized",
    "code": "UNAUTHORIZED"
  }
}

Bir 401 aldığınızda token'ınızı yenileyin (Kimlik Doğrulama sayfasına bakın) ve isteği yeniden deneyin.


Sonraki Adımlar ​

  • Ayrıntılı uç nokta belgeleri için tüm API Referansı belgesine göz atın.
  • Token yönetimi için Kimlik Doğrulama konusunu öğrenin.
  • Eksiksiz hata kodu kataloğu için Hatalar sayfasını inceleyin.

Built with purpose.