Inkpilots

Inkpilots V1 API Dokümantasyonu

Amaç: Node.js SDK oluşturma için tam endpoint açıklamaları, sorgu parametreleri, kimlik doğrulama, yanıt formatları ve kota sistemi içeren V1 genel API referansı.


İçindekiler

  1. Kimlik Doğrulama
  2. Temel URL ve CORS
  3. API Endpoint'leri
  4. Hata Yönetimi
  5. Kota Sistemi
  6. Yanıt Formatları
  7. Endpoint Özeti

Kimlik Doğrulama

API Anahtarı ile Kimlik Doğrulama

Tüm V1 API endpoint'leri API anahtarı ile kimlik doğrulama gerektirir. API anahtarı istek başlığında gönderilir.

Başlık Formatı:

x-api-key: Bearer <api-anahtarınız>

Örnek:

curl -H "x-api-key: Bearer api_anahtariniz_burada" https://inkpilots.com/api/v1/agents

Doğrulama Akışı

  1. İstemci x-api-key başlığı ile istek gönderir
  2. Sunucu verifyApiKey(apiKeyHeader) fonksiyonunu çağırır
  3. Geçerliyse döndürür:
    • isValid: boolean
    • workspaceId: string (string olarak MongoDB ObjectId)
  4. Geçersizse { isValid: false } döndürür

Hata Yanıtları

  • 401 Yetkisiz: Geçersiz veya eksik API anahtarı, ya da yetersiz izinler
  • 402 Ödeme Gerekli: Çalışma alanı planı için API erişim kotası aşıldı

Temel URL ve CORS

Temel URL

https://inkpilots.com/api/v1

CORS Başlıkları

Tüm yanıtlar aşağıdaki CORS başlıklarını içerir:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Headers: Authorization, Content-Type, x-api-key

Not: API çerez kullanmadığından (durumsuz kimlik doğrulama) CORS tüm kaynaklara izin verir.

Ön Kontrol İstekleri

Tüm endpoint'ler CORS ön kontrolü için OPTIONS isteklerini destekler:

curl -X OPTIONS https://inkpilots.com/api/v1/agents

Yanıt: CORS başlıkları ile 204 No Content.


API Endpoint'leri

1. Ajanları Listele

Endpoint: GET /agents

Özet: Ajanları listele

Açıklama: Durum, çalıştırma modu, LLM modeli ile gelişmiş filtreleme ve isim ile prompt üzerinde tam metin arama ile sayfalanmış ajan listesi getirir. x-api-key başlığı ile kimlik doğrulama ve geçerli API kotası gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key)

Etiketler: Ajanlar

Sorgu Parametreleri:

ParametreTürVarsayılanAçıklamaÖrnek
skipnumber0Sayfalama için atlanacak ajan sayısı (offset)0
limitnumber10Sayfa başına döndürülecek maksimum ajan sayısı (maksimum 100)20
sortBystringcreatedAtAjanların sıralanacağı alan (örn: name, createdAt, model, isActive)createdAt
sortOrderenumdescSıralama yönü (artan veya azalan)desc
statusenumisteğe bağlıAjanları duruma göre filtrele (active veya inactive)active
executionModeenumisteğe bağlıAjanları çalıştırma moduna göre filtrele (scheduled veya batched)scheduled
modelstringisteğe bağlıAjanları LLM model adına göre filtrelellama-2-70b-chat
searchstringisteğe bağlıAjan adı ve prompt'ta tam metin arama (büyük/küçük harf duyarsız)blog yazarı

Yanıt Şeması (200 OK):

{
  "data": [
    {
      "id": "507f1f77bcf86cd799439011",
      "workspaceId": "507f1f77bcf86cd799439010",
      "name": "Teknoloji Blog Yazarı",
      "description": "Haftalık programla teknoloji makaleleri üretir",
      "status": "active",
      "executionMode": "scheduled",
      "schedule": "0 0 * * MON",
      "model": "llama-2-70b-chat",
      "language": "tr",
      "isActive": true,
      "createdAt": "2024-01-15T10:30:00Z",
      "updatedAt": "2024-01-20T15:45:00Z"
    }
  ],
  "pagination": {
    "skip": 0,
    "limit": 20,
    "totalCount": 12,
    "totalPages": 1,
    "currentPage": 1,
    "hasNextPage": false,
    "hasPrevPage": false
  }
}

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz sorgu parametreleri
  • 401 Yetkisiz: Geçersiz API anahtarı
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/agents?limit=20&skip=0&status=active&sortBy=createdAt&sortOrder=desc&model=llama-2-70b-chat"

2. ID ile Ajan Getir

Endpoint: GET /agents/{agentId}

Özet: ID ile ajan getir

Açıklama: Tek bir ajanın tam yapılandırma ve meta verilerini getirir. x-api-key başlığı ile kimlik doğrulama ve geçerli API kotası gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key)

Etiketler: Ajanlar

Yol Parametreleri:

ParametreTürAçıklamaÖrnek
agentIdstringGetirilecek ajanın MongoDB ObjectId'si507f1f77bcf86cd799439011

Yanıt Şeması (200 OK):

{
  "agent": {
    "id": "507f1f77bcf86cd799439011",
    "workspaceId": "507f1f77bcf86cd799439010",
    "name": "Teknoloji Blog Yazarı",
    "description": "Haftalık programla teknoloji makaleleri üretir",
    "status": "active",
    "executionMode": "scheduled",
    "schedule": "0 0 * * MON",
    "model": "llama-2-70b-chat",
    "language": "tr",
    "prompt": "Şu konu hakkında makale yaz: {topic}",
    "isActive": true,
    "createdAt": "2024-01-15T10:30:00Z",
    "updatedAt": "2024-01-20T15:45:00Z",
    "createdBy": "507f1f77bcf86cd799439050",
    "updatedBy": "507f1f77bcf86cd799439050"
  }
}

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz ajan ID formatı
  • 401 Yetkisiz: Geçersiz API anahtarı
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Ajan veya çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/agents/507f1f77bcf86cd799439011"

3. Makaleleri Listele

Endpoint: GET /articles

Özet: Makaleleri listele

Açıklama: Ajan, durum, dil, etiketler ile gelişmiş filtreleme ve başlık, açıklama, anahtar kelimeler üzerinde tam metin arama ile sayfalanmış makale listesi getirir. x-api-key başlığı ile kimlik doğrulama ve geçerli API kotası gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key)

Etiketler: Makaleler

Sorgu Parametreleri:

ParametreTürVarsayılanAçıklamaÖrnek
skipnumber0Sayfalama için atlanacak makale sayısı (offset)0
limitnumber10Sayfa başına döndürülecek maksimum makale sayısı (maksimum 100)20
sortBystringcreatedAtMakalelerin sıralanacağı alan (örn: title, createdAt, status, updatedAt)createdAt
sortOrderenumdescSıralama yönü (artan veya azalan)desc
agentIdstringisteğe bağlıMakaleleri kaynak ajan ID'sine göre filtrele (MongoDB ObjectId)507f1f77bcf86cd799439011
statusenumisteğe bağlıMakaleleri yayın durumuna göre filtrele (draft, published, archived)published
slugstringisteğe bağlıMakaleleri verilen slug'a göre filtrelegeneric-article-slug-as-example
languagestringisteğe bağlıMakaleleri dil koduna göre filtrele (örn: en, tr, de)tr
modelstringisteğe bağlıMakaleleri üretimde kullanılan LLM modeline göre filtrelellama-2-70b-chat
tagsstringisteğe bağlıEtiketlere göre filtrele (virgülle ayrılmış, herhangi bir etikete eşleşir)öne-çıkan,trend,teknoloji
searchstringisteğe bağlıBaşlık, açıklama, anahtar kelimeler ve etiketlerde tam metin arama (büyük/küçük harf duyarsız)yapay zeka

Yanıt Şeması (200 OK):

{
  "data": [
    {
      "id": "607f1f77bcf86cd799439012",
      "workspaceId": "507f1f77bcf86cd799439010",
      "agentId": "507f1f77bcf86cd799439011",
      "title": "Next.js 14 ile Başlangıç",
      "slug": "nextjs-14-ile-baslangic",
      "description": "Next.js 14 ile modern web uygulamaları nasıl oluşturulur öğrenin",
      "status": "published",
      "language": "tr",
      "model": "llama-2-70b-chat",
      "tone": "professional",
      "tags": ["nextjs", "react", "web-gelistirme"],
      "createdBy": "507f1f77bcf86cd799439050",
      "updatedBy": "507f1f77bcf86cd799439050",
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2024-01-15T12:30:00Z"
    }
  ],
  "pagination": {
    "skip": 0,
    "limit": 20,
    "totalCount": 45,
    "totalPages": 3,
    "currentPage": 1,
    "hasNextPage": true,
    "hasPrevPage": false
  }
}

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz sorgu parametreleri
  • 401 Yetkisiz: Geçersiz API anahtarı
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/articles?limit=25&skip=0&status=published&agentId=507f1f77bcf86cd799439011&language=tr&tags=one-cikan,trend&search=yapay+zeka"

4. ID ile Makale Getir

Endpoint: GET /articles/{articleId}

Özet: ID ile makale getir

Açıklama: Tam içerik ve yapılandırılmış bloklarla tek bir makaleyi ID'sine göre getirir. x-api-key başlığı ile kimlik doğrulama ve geçerli API kotası gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key)

Etiketler: Makaleler

Yol Parametreleri:

ParametreTürAçıklamaÖrnek
articleIdstringGetirilecek makalenin MongoDB ObjectId'si607f1f77bcf86cd799439012

Yanıt Şeması (200 OK):

{
  "article": {
    "id": "607f1f77bcf86cd799439012",
    "workspaceId": "507f1f77bcf86cd799439010",
    "agentId": "507f1f77bcf86cd799439011",
    "title": "Next.js 14 ile Başlangıç",
    "slug": "nextjs-14-ile-baslangic",
    "description": "Next.js 14 ile modern web uygulamaları nasıl oluşturulur öğrenin",
    "content": "Tam makale markdown/metin içeriği burada...",
    "status": "published",
    "language": "tr",
    "model": "llama-2-70b-chat",
    "tone": "professional",
    "tags": ["nextjs", "react", "web-gelistirme"],
    "blocks": [
      {
        "type": "header",
        "content": "Next.js 14 ile Başlangıç",
        "level": 1
      },
      {
        "type": "text",
        "content": "Next.js 14 yeni özellikler sunuyor..."
      },
      {
        "type": "image",
        "url": "https://example.com/image.jpg",
        "caption": "Next.js logosu"
      }
    ],
    "meta": {
      "keywords": "nextjs, react, web geliştirme",
      "description": "Next.js 14 ile modern web uygulamaları nasıl oluşturulur öğrenin",
      "tags": ["nextjs", "react", "web-gelistirme"]
    },
    "createdAt": "2024-01-10T08:00:00Z",
    "updatedAt": "2024-01-15T12:30:00Z",
    "createdBy": "507f1f77bcf86cd799439050",
    "updatedBy": "507f1f77bcf86cd799439050"
  }
}

Blok Türleri:

  • text: Düz metin paragrafı

    {"type": "text", "content": "Paragraf metni"}
    
  • header: Başlık (1-6 seviye)

    {"type": "header", "content": "Başlık", "level": 1}
    
  • image: İsteğe bağlı açıklamalı görsel

    {"type": "image", "url": "https://example.com/img.jpg", "caption": "Açıklama"}
    
  • list: Sıralı veya sırasız liste

    {"type": "list", "items": ["madde1", "madde2"], "ordered": false}
    
  • code: Dil belirtilmiş kod bloğu

    {"type": "code", "content": "const x = 1;", "language": "javascript"}
    
  • video: Video yerleştirme

    {"type": "video", "url": "https://example.com/video.mp4", "title": "Video başlığı"}
    

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz makale ID formatı
  • 401 Yetkisiz: Geçersiz API anahtarı
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Makale veya çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/articles/607f1f77bcf86cd799439012"

5. Ajan Makalelerini Getir

Endpoint: GET /agents/{agentId}/articles

Özet: Belirli ajandan makaleleri getir

Açıklama: Belirli bir ajan tarafından oluşturulan tüm makaleleri filtreleme ve sayfalama ile getirir. Makaleleri en yeniden en eskiye sıralar. x-api-key başlığı ile kimlik doğrulama ve geçerli API kotası gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key)

Etiketler: Ajanlar

Yol Parametreleri:

ParametreTürAçıklamaÖrnek
agentIdstringAjanın MongoDB ObjectId'si507f1f77bcf86cd799439011

Sorgu Parametreleri:

ParametreTürVarsayılanAçıklamaÖrnek
limitnumber50Döndürülecek maksimum makale sayısı30
skipnumber0Sayfalama için atlanacak kayıt sayısı0
statusstringisteğe bağlıMakale durumuna göre filtrele (draft, published, archived)published
sortstringcreatedAtSıralanacak alancreatedAt
orderenumdescSıralama yönü (asc veya desc)desc
slugstringisteğe bağlıMakaleleri URL dostu slug'a göre filtrelenextjs-ile-baslangic

Yanıt Şeması (200 OK):

{
  "articles": [
    {
      "id": "607f1f77bcf86cd799439012",
      "workspaceId": "507f1f77bcf86cd799439010",
      "agentId": "507f1f77bcf86cd799439011",
      "title": "Next.js ile Başlangıç",
      "slug": "nextjs-ile-baslangic",
      "description": "Next.js için kapsamlı bir rehber",
      "status": "published",
      "language": "tr",
      "model": "llama-2-70b-chat",
      "tone": "professional",
      "tags": ["nextjs", "react", "web-gelistirme"],
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2024-01-15T12:30:00Z"
    }
  ],
  "pagination": {
    "skip": 0,
    "limit": 30,
    "totalCount": 45,
    "totalPages": 2,
    "currentPage": 1,
    "hasNextPage": true,
    "hasPrevPage": false
  }
}

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz ajan ID formatı
  • 401 Yetkisiz: Geçersiz API anahtarı
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Ajan veya çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/agents/507f1f77bcf86cd799439011/articles?limit=30&skip=0&status=published&sort=createdAt&order=desc"

6. Çalışma Alanı Verilerini Getir

Endpoint: GET /workspaces/{workspaceId}

Özet: Çalışma alanı verilerini getir

Açıklama: Çalışma alanı meta verileri, tüm ajanlar ve tam içerikli yayınlanmış makaleler dahil tam çalışma alanı verilerini getirir. Çalışma alanı içerik yapısına kolay erişim için makalelerle birlikte iç içe ajanlar döndürür. Çalışma alanı ID'si ile eşleşen API anahtarı kimlik doğrulaması gerektirir.

Kimlik Doğrulama: Gerekli (x-api-key) - Erişilen çalışma alanı ile eşleşmeli

Etiketler: Çalışma Alanları

Yol Parametreleri:

ParametreTürAçıklamaÖrnek
workspaceIdstringGetirilecek çalışma alanının MongoDB ObjectId'si507f1f77bcf86cd799439010

Yanıt Şeması (200 OK):

{
  "workspace": {
    "id": "507f1f77bcf86cd799439010",
    "ownerId": "507f1f77bcf86cd799439001",
    "name": "İçerik Stüdyom",
    "description": "Yapay zeka destekli içerik üretim çalışma alanı",
    "plan": "pro",
    "isActive": true,
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-15T12:30:00Z"
  },
  "agents": [
    {
      "id": "607f1f77bcf86cd799439011",
      "workspaceId": "507f1f77bcf86cd799439010",
      "name": "Teknoloji İçerik Ajanı",
      "description": "Teknik makaleler ve öğreticiler üretir",
      "status": "active",
      "executionMode": "scheduled",
      "schedule": "0 0 * * *",
      "model": "llama-2-70b-chat",
      "tone": "professional",
      "language": "tr",
      "isActive": true,
      "createdAt": "2024-01-10T12:00:00Z",
      "updatedAt": "2024-01-20T10:15:00Z",
      "articles": [
        {
          "id": "707f1f77bcf86cd799439012",
          "workspaceId": "507f1f77bcf86cd799439010",
          "agentId": "607f1f77bcf86cd799439011",
          "title": "Next.js ile Başlangıç",
          "slug": "nextjs-ile-baslangic",
          "description": "Next.js için kapsamlı bir rehber",
          "status": "published",
          "language": "tr",
          "model": "llama-2-70b-chat",
          "tone": "professional",
          "tags": ["nextjs", "react", "web"],
          "createdAt": "2024-01-10T08:00:00Z",
          "updatedAt": "2024-01-15T12:30:00Z"
        }
      ]
    }
  ]
}

Hata Yanıtları:

  • 400 Hatalı İstek: Geçersiz çalışma alanı ID formatı
  • 401 Yetkisiz: Geçersiz API anahtarı veya çalışma alanı uyumsuzluğu
  • 402 Ödeme Gerekli: API kotası aşıldı
  • 404 Bulunamadı: Çalışma alanı bulunamadı
  • 500 Sunucu Hatası: Sunucu hatası

Örnek İstek:

curl -H "x-api-key: Bearer api_anahtariniz" \
  "https://inkpilots.com/api/v1/workspaces/507f1f77bcf86cd799439010"

Hata Yönetimi

Tüm endpoint'ler HTTP durum kodları ile standartlaştırılmış hata yanıtları döndürür:

Hata Yanıt Formatı

{
  "error": "Hata türü",
  "details": "Detaylı hata mesajı"
}

HTTP Durum Kodları

DurumAçıklama
200Başarılı - İstek başarıyla tamamlandı
400Hatalı İstek - Geçersiz sorgu parametreleri veya yol formatı
401Yetkisiz - Geçersiz veya eksik API anahtarı
402Ödeme Gerekli - Çalışma alanı planı için API kotası aşıldı
404Bulunamadı - Kaynak mevcut değil
500Sunucu Hatası - Sunucu tarafı hatası oluştu

Kota Sistemi

Her çalışma alanının abonelik planına dayalı bir API çağrı kotası vardır. Kota aylık olarak sıfırlanır ve her istekte uygulanır.

Plan Limitleri

  • Ücretsiz: Aylık 0 API çağrısı
  • Başlangıç: Aylık 0 API çağrısı
  • Pro: Aylık 10.000 API çağrısı
  • Ajans: ~ API çağrısı/ay
  • Kurumsal: Sınırsız

Kota Uygulaması

Her API isteği aylık kotaya karşı 1 çağrı olarak sayılır. Kota aşıldığında:

  • HTTP Durumu: 402 Ödeme Gerekli
  • Yanıt: { error: "API erişim kotası aşıldı" }

Yanıt Formatları

Başarılı Yanıt

Tüm başarılı yanıtlar JSON verisi ile 200 durum kodu döndürür:

{
  "data": [...],
  "pagination": {...}
}

Sayfalama Formatı

Tüm liste endpoint'leri tutarlı sayfalama meta verileri kullanır:

{
  "pagination": {
    "skip": 0,
    "limit": 20,
    "totalCount": 45,
    "totalPages": 3,
    "currentPage": 1,
    "hasNextPage": true,
    "hasPrevPage": false
  }
}

Hata Yanıtı

Tüm hata yanıtları error ve details alanlarını içerir:

{
  "error": "Yetkisiz",
  "details": "Geçersiz veya eksik API anahtarı"
}

Endpoint Özeti

MetotEndpointAçıklama
GET/agentsSayfalama ve filtrelerle ajanları listele
GET/agents/{agentId}ID ile tek ajan getir
GET/articlesSayfalama ve gelişmiş filtrelerle makaleleri listele
GET/articles/{articleId}Tam içerikle ID ile tek makale getir
GET/agents/{agentId}/articlesBelirli ajandan makaleleri getir
GET/workspaces/{workspaceId}Tüm ajanlar ve makalelerle çalışma alanını getir
OPTIONS/*CORS ön kontrol desteği

En İyi Uygulamalar

Sayfalama

  • Zaman aşımlarını önlemek için liste endpoint'lerinde her zaman sayfalama kullanın
  • skip: 0 ve limit: 25-50 ile başlayın
  • Daha fazla sonuç olup olmadığını belirlemek için hasNextPage kullanın
  • Başarısız istekler için üstel geri çekilme uygulayın

Filtreleme

  • Yanıt boyutunu azaltmak için belirli filtreler kullanın
  • Sonuçları daraltmak için status ve language ile filtreleyin
  • Tüm kayıtları getirmek yerine tam metin araması için search kullanın

Hata Yönetimi

  • Her zaman 401 (kimlik doğrulama) ve 402 (kota) hatalarını kontrol edin
  • Üstel geri çekilme ile yeniden deneme mantığı uygulayın
  • Hata ayıklama için hata detaylarını günlüğe kaydedin
  • 4xx hatalarını istemci sorunları, 5xx hatalarını sunucu sorunları olarak ele alın

Performans

  • API çağrılarını azaltmak için sonuçları 5-10 dakika önbelleğe alın
  • Optimum performans için limit=50 kullanın
  • Sonuç kümesi boyutunu minimize etmek için filtreleri birleştirin
  • Kota limitlerine göre sayfalama toplu iş boyutunu değerlendirin

Doküman Sürümü: 2.0 Son Güncelleme: Ocak 2026 API Sürümü: v1 Durum: SDK Oluşturma için Üretime Hazır