Aracı Bilgisayar API'si
API Playground’da deneyin.
Temel URL
Section titled “Temel URL”https://api.rebyte.ai/v1Kimlik Doğrulama
Section titled “Kimlik Doğrulama”Her istek bir API_KEY başlığı gerektirir. Anahtarınızı Ayarlar > API Anahtarları bölümünden alın.
curl https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_your_key_here"Başlık adı büyük/küçük harfe duyarlı değildir. API_KEY, api-key ve x-api-key hepsi çalışır.
Uç Noktalar
Section titled “Uç Noktalar”| Metot | Yol | Açıklama |
|---|---|---|
| POST | /tasks | Bir görev oluştur |
| GET | /tasks | Görevleri listele |
| GET | /tasks/:id | Durum ve istem geçmişiyle birlikte görevi al |
| POST | /tasks/:id/prompts | Takip istemi gönder |
| PATCH | /tasks/:id/visibility | Görevin görünürlüğünü değiştir |
| DELETE | /tasks/:id | Bir görevi geçici olarak sil |
| GET | /tasks/:id/events | Yürütme olaylarının SSE akışı |
| POST | /files | İmzalı bir dosya yükleme URL’si al |
| POST | /webhooks | Bir webhook kaydet |
| GET | /webhooks | Webhook’ları listele |
| GET | /webhooks/:id | Webhook ayrıntılarını al |
| DELETE | /webhooks/:id | Bir webhook’u sil |
Tüm yollar temel URL’ye (https://api.rebyte.ai/v1) göredir. |
Görevler
Section titled “Görevler”Görev Oluştur
Section titled “Görev Oluştur”POST /tasksYeni bir görev oluşturur. Varsayılan olarak, yeni bir VM (Aracı Bilgisayar) sağlar. Görevi bunun yerine mevcut bir çalışma alanında çalıştırmak için workspaceId’yi geçirin — bu, sağlama işlemini atlar ve önemli ölçüde daha hızlıdır.
Çağrı, VM sağlanana ve ilk istem gönderilene kadar engellenir.
İstek gövdesi:
| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
prompt | string | Evet | Görev açıklaması (maks 100.000 karakter) |
executor | string | Hayır | claude (varsayılan), gemini, codex, opencode |
model | string | Hayır | Yürütücü için model katmanı. Modeller bölümüne bakın. |
workspaceId | string | Hayır | Yeniden kullanılacak mevcut bir çalışma alanının UUID’si |
files | object[] | Hayır | POST /files’tan dosyalar. Her biri: {"id": "...", "filename": "..."} |
skills | string[] | Hayır | Beceri slug’ları (örn. ["deep-research", "pdf"]) |
githubUrl | string | Hayır | owner/repo formatında GitHub deposu |
branchName | string | Hayır | Dal adı (varsayılan: main) |
curl -X POST https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Build a REST API with Express and add tests", "executor": "claude", "skills": ["deep-research"], "githubUrl": "your-org/your-repo" }'Yanıt (201):
{ "id": "550e8400-e29b-41d4-a716-446655440000", "workspaceId": "660e8400-e29b-41d4-a716-446655440001", "url": "https://app.rebyte.ai/run/550e8400-e29b-41d4-a716-446655440000", "status": "running", "createdAt": "2026-01-28T12:00:00.000Z"}Aynı Aracı Bilgisayarda takip görevleri oluşturmak için yanıttaki workspaceId’yi kaydedin:
# İlk görev -- yeni bir VM sağlarRESP=$(curl -s -X POST https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_xxx" -H "Content-Type: application/json" \ -d '{"prompt": "Set up the project"}')WS_ID=$(echo $RESP | jq -r '.workspaceId')
# İkinci görev -- aynı VM'yi yeniden kullanır (çok daha hızlı)curl -s -X POST https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_xxx" -H "Content-Type: application/json" \ -d "{\"prompt\": \"Now add tests\", \"workspaceId\": \"$WS_ID\"}"Modeller
Section titled “Modeller”Mevcut modeller yürütücüye bağlıdır:
| Yürütücü | Mevcut Modeller | Varsayılan |
|---|---|---|
claude | claude-sonnet-4.6, claude-opus-4.6, gemini-3.1-pro, gpt-5.3-codex, gpt-5.4, minimax-m2.7, kimi-k2.5, glm-5, gemini-3-flash | claude-sonnet-4.6 |
codex | gpt-5.4, gpt-5.3-codex | gpt-5.4 |
gemini | auto-gemini-3 (flash ve pro arasında otomatik yönlendirme) | auto-gemini-3 |
opencode | claude ile aynı | gemini-3.1-pro |
BYOK (kendi API anahtarınızı getirin) ile yalnızca yürütücünün yerel sağlayıcı modelleri mevcuttur (örn. BYOK ile claude yürütücüsü yalnızca claude-sonnet-4.6 ve claude-opus-4.6 alır).
Görevleri Listele
Section titled “Görevleri Listele”GET /tasks?limit=50&offset=0API aracılığıyla oluşturulan görevleri, oluşturulma zamanına göre (en yeniden en eskiye) sıralanmış olarak döndürür.
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
limit | number | 50 | Sayfa başına sonuç (maks 100) |
offset | number | 0 | Sayfalama ofseti |
curl "https://api.rebyte.ai/v1/tasks?limit=10" \ -H "API_KEY: rbk_xxx"Yanıt:
{ "data": [ { "id": "550e8400-...", "url": "https://app.rebyte.ai/run/550e8400-...", "title": "Build REST API with Express", "executor": "claude", "model": "claude-sonnet-4.6", "createdAt": "2026-01-28T12:00:00.000000+00:00", "completedAt": "2026-01-28T12:05:00.000000+00:00" } ], "total": 42, "limit": 10, "offset": 0}Görev Al
Section titled “Görev Al”GET /tasks/:idİstem geçmişi ve türetilmiş durum dahil olmak üzere tüm görev ayrıntılarını döndürür.
curl https://api.rebyte.ai/v1/tasks/550e8400-... \ -H "API_KEY: rbk_xxx"Yanıt:
{ "id": "550e8400-...", "url": "https://app.rebyte.ai/run/550e8400-...", "status": "running", "title": "Build REST API with Express", "executor": "claude", "model": "claude-sonnet-4.6", "createdAt": "2026-01-28T12:00:00.000000+00:00", "completedAt": null, "prompts": [ { "id": "660e8400-...", "status": "running", "submittedAt": "2026-01-28T12:05:00.000000+00:00", "completedAt": null }, { "id": "550e8400-...", "status": "succeeded", "submittedAt": "2026-01-28T12:00:01.000000+00:00", "completedAt": "2026-01-28T12:03:00.000000+00:00" } ]}Görev durumu istem durumlarından türetilir:
| Durum | Koşul |
|---|---|
running | Herhangi bir istem beklemede veya çalışıyor |
completed | Tüm istemler terminalde, en sonuncusu başarılı |
failed | Tüm istemler terminalde, en sonuncusu başarısız |
canceled | Tüm istemler terminalde, en sonuncusu iptal edildi |
Takip Gönder
Section titled “Takip Gönder”POST /tasks/:id/promptsÇalışan veya tamamlanmış bir göreve takip istemi gönderin. VM durdurulmuşsa, otomatik olarak devam ettirilir.
| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
prompt | string | Evet | Takip istemi (maks 100.000 karakter) |
skills | string[] | Hayır | Bu istem için ek beceri slug’ları |
curl -X POST https://api.rebyte.ai/v1/tasks/550e8400-.../prompts \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{"prompt": "Now add authentication with JWT"}'Yanıt (201):
{ "promptId": "770f9500-..."}Olayları Akışla Yayınla (SSE)
Section titled “Olayları Akışla Yayınla (SSE)”GET /tasks/:id/eventsGörevin en son istemi için bir Sunucu Tarafından Gönderilen Olaylar akışı açar. Olaylar, aracı çıktısını (stdout, stderr), araç çağrılarını ve tamamlama sinyallerini içerir.
curl -N https://api.rebyte.ai/v1/tasks/550e8400-.../events \ -H "API_KEY: rbk_xxx"Akış iki olay türü yayar:
event— yürütme olayları (aracı çıktısı, araç çağrıları)done— tamamlama durumuyla son olay, ardından akış kapanır
Görünürlüğü Değiştir
Section titled “Görünürlüğü Değiştir”PATCH /tasks/:id/visibility| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
visibility | string | Evet | private, shared veya public |
| Seviye | Kimler görüntüleyebilir |
|---|---|
private | Yalnızca API anahtarı sahibi |
shared | Tüm organizasyon üyeleri (varsayılan) |
public | Bağlantıya sahip herkes (salt okunur) |
curl -X PATCH https://api.rebyte.ai/v1/tasks/550e8400-.../visibility \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{"visibility": "public"}'public olarak ayarlandığında, yanıt kimlik doğrulaması yapılmamış erişim için bir shareUrl içerir.
Görevi Sil
Section titled “Görevi Sil”DELETE /tasks/:idGörevi geçici olarak siler. 204 İçerik Yok döndürür.
curl -X DELETE https://api.rebyte.ai/v1/tasks/550e8400-... \ -H "API_KEY: rbk_xxx"Dosyalar
Section titled “Dosyalar”Görevlere eklemek için dosyaları yükleyin. İki adımlı imzalı URL akışı kullanır.
Adım 1: Yükleme URL’si Al
Section titled “Adım 1: Yükleme URL’si Al”POST /files| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
filename | string | Evet | Dosya adı (maks 255 karakter) |
contentType | string | Hayır | MIME türü (varsayılan: application/octet-stream) |
Yanıt (201):
{ "id": "550e8400-...", "filename": "data.csv", "uploadUrl": "https://storage.googleapis.com/...", "maxFileSize": 52428800}Yükleme URL’si 1 saat içinde sona erer.
Adım 2: Dosyayı Yükle
Section titled “Adım 2: Dosyayı Yükle”curl -X PUT "UPLOAD_URL_FROM_STEP_1" \ -H "Content-Type: application/octet-stream" \ --data-binary @data.csvAdım 3: Göreve Ekle
Section titled “Adım 3: Göreve Ekle”Bir görev oluştururken Adım 1’den id ve filename’i geçirin:
{ "prompt": "Analyze the uploaded data", "files": [ {"id": "550e8400-...", "filename": "data.csv"} ]}Dosyalar, yürütme başladığında görevin VM’sine otomatik olarak kopyalanır.
Webhook’lar
Section titled “Webhook’lar”Görev olayları meydana geldiğinde HTTP POST bildirimleri alın. Webhook’lar evrenseldir — API, UI veya başka herhangi bir kanal aracılığıyla oluşturulmuş olsun, kuruluşunuzdaki tüm görevler için tetiklenirler.
Olaylar
Section titled “Olaylar”| Olay | Ne zaman tetiklenir |
|---|---|
task.created | Yeni bir görev oluşturulduğunda |
task.running | Aracı yürütmeye başladığında |
task.completed | Görev başarıyla tamamlandığında |
task.failed | Görev başarısız olduğunda |
task.canceled | Görev kullanıcı tarafından iptal edildiğinde |
Webhook Oluştur
Section titled “Webhook Oluştur”POST /webhooks| Alan | Tip | Gerekli | Açıklama |
|---|---|---|---|
url | string | Evet | HTTPS uç nokta URL’si |
events | string[] | Evet | Abone olunacak olaylar |
description | string | Hayır | İnsan tarafından okunabilir etiket (maks 500 karakter) |
secret | string | Hayır | Önceden paylaşılan gizli anahtar (maks 500 karakter). Ayarlandığında, her teslimatta X-Webhook-Secret başlığı olarak dahil edilir. |
# Gizli anahtarsız webhookcurl -X POST https://api.rebyte.ai/v1/webhooks \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-server.com/webhook", "events": ["task.completed", "task.failed"] }'
# Önceden paylaşılan gizli anahtarlı webhookcurl -X POST https://api.rebyte.ai/v1/webhooks \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-server.com/webhook", "events": ["task.completed", "task.failed"], "secret": "my-shared-secret-value" }'Yanıt (201):
{ "id": "880e8400-...", "url": "https://your-server.com/webhook", "events": ["task.completed", "task.failed"], "description": null, "hasSecret": true, "isActive": true, "createdAt": "2026-01-28T12:00:00.000Z", "lastTriggeredAt": null, "failureCount": 0}Davranış notları:
- Yinelenen URL’ler: aynı URL’yi iki kez kaydetmek mevcut webhook’u döndürür (idempotent)
- Limit: kuruluş başına maksimum 3 webhook. 4. webhook
limit_exceededdöndürür. - Gizli anahtar depolama: gizli anahtar değeri hiçbir yanıtta döndürülmez. Yalnızca
hasSecret: true/falsegösterilir.
Webhook’ları Listele
Section titled “Webhook’ları Listele”GET /webhooksKuruluşunuzdaki tüm webhook’ları durum bilgileriyle (lastTriggeredAt, failureCount, isActive) döndürür. Gizli anahtarlar asla gösterilmez.
Webhook Al
Section titled “Webhook Al”GET /webhooks/:idWebhook Sil
Section titled “Webhook Sil”DELETE /webhooks/:id204 İçerik Yok döndürür. Silinen webhook’lar teslimat almayı hemen durdurur.
Teslimat
Section titled “Teslimat”Bir görev olayı, bir webhook’un abone olduğu olaylarla eşleştiğinde, Rebyte webhook URL’sine bir HTTP POST gönderir.
Yük:
{ "event": "task.completed", "taskId": "550e8400-e29b-41d4-a716-446655440000", "timestamp": 1706443200, "data": { "status": "succeeded", "taskUrl": "https://app.rebyte.ai/run/550e8400-...", "result": "Created CSV file with 10 Hacker News posts..." }}status— istem durumu:beklemede(task.created),çalışıyor(task.running),başarılı(task.completed),başarısız(task.failed),iptal edildi(task.canceled)taskUrl— Rebyte UI’daki göreve doğrudan bağlantı (her zaman mevcut)result— nihai yapay zeka çıktı metni (terminal olaylarında mevcut:task.completed,task.failed,task.canceled;task.createdvetask.runningolaylarında yok)
İstem geçmişi dahil olmak üzere tüm görev ayrıntıları için GET /tasks/:id çağrısı yapın.
Teslimat başlıkları:
| Başlık | Her zaman mevcut | Açıklama |
|---|---|---|
Content-Type | Evet | application/json |
X-Webhook-Signature | Evet | Base64 kodlu RSA-SHA256 imzası |
X-Webhook-Timestamp | Evet | Unix zaman damgası (saniye) |
X-Webhook-Secret | Yalnızca gizli anahtar yapılandırılmışsa | Oluşturma sırasında ayarladığınız önceden paylaşılan gizli anahtar değeri |
Zaman aşımı: teslimatlar 10 saniye sonra zaman aşımına uğrar.
Hata işleme:
- Teslimat ateşle ve unut prensibine göre çalışır — hatada otomatik yeniden deneme yoktur
- 2xx olmayan yanıtlar
failureCount’ı artırır - 10 ardışık hatadan sonra, webhook otomatik olarak devre dışı bırakılır (
isActive: false) - Başarılı teslimatlar
failureCount’ı 0’a sıfırlar
İmza Doğrulama
Section titled “İmza Doğrulama”Her teslimat, önceden paylaşılan bir gizli anahtar yapılandırılmış olsun veya olmasın, kuruluşunuzun RSA-2048 anahtar çiftiyle imzalanır.
Nasıl çalışır:
- Rebyte
{timestamp}.{body}’yi birleştirir (örn.1706443200.{"event":"task.completed",...}) - Diziyi kuruluşunuzun özel anahtarını kullanarak RSA-SHA256 ile imzalar
- Base64 kodlu imzayı
X-Webhook-Signatureiçinde gönderir
Genel anahtarınızı alın: destekle iletişime geçin veya Rebyte kontrol panelinden alın. RSA-2048 anahtar çifti, ilk webhook oluşturulduğunda otomatik olarak oluşturulur ve kuruluş için kalıcı olur.
Doğrulama örneği (Node.js):
const crypto = require('crypto');
function verifyWebhook(rawBody, timestamp, signature, publicKey) { const payload = `${timestamp}.${rawBody}`; const verifier = crypto.createVerify('RSA-SHA256'); verifier.update(payload); return verifier.verify(publicKey, signature, 'base64');}
// Webhook işleyicinizde:app.post('/webhook', (req, res) => { const rawBody = req.body; // must be raw string, not parsed JSON const timestamp = req.headers['x-webhook-timestamp']; const signature = req.headers['x-webhook-signature'];
if (!verifyWebhook(rawBody, timestamp, signature, PUBLIC_KEY)) { return res.status(401).send('Invalid signature'); }
const event = JSON.parse(rawBody); console.log(`Task ${event.taskId}: ${event.event}`); res.status(200).send('OK');});Doğrulama örneği (Python):
from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import paddingimport base64
def verify_webhook(raw_body: str, timestamp: str, signature: str, public_key_pem: str) -> bool: public_key = serialization.load_pem_public_key(public_key_pem.encode()) payload = f"{timestamp}.{raw_body}".encode() try: public_key.verify( base64.b64decode(signature), payload, padding.PKCS1v15(), hashes.SHA256() ) return True except Exception: return Falseİki katmanlı güvenlik
Section titled “İki katmanlı güvenlik”Webhook’lar, birlikte kullanılabilecek iki bağımsız doğrulama yöntemini destekler:
| Metot | Başlık | Nasıl çalışır | Kullanım durumu |
|---|---|---|---|
| RSA imzası | X-Webhook-Signature | Yükün Rebyte’tan geldiğine dair kriptografik kanıt | Kurcalamaya dayanıklı doğrulama |
| Önceden paylaşılan gizli anahtar | X-Webhook-Secret | Oluşturma sırasında ayarladığınız statik dize, her teslimatta geri yansıtılır | Basit paylaşılan gizli anahtar kontrolü |
RSA imzaları her zaman mevcuttur. Önceden paylaşılan gizli anahtar isteğe bağlıdır — daha basit bir doğrulama yolu istiyorsanız webhook’u oluştururken ayarlayın.
Yoklama Örneği
Section titled “Yoklama Örneği”Tam örnek: bir görev oluşturun, tamamlanana kadar yoklayın, ardından bir takip gönderin.
# Görev oluşturTASK_ID=$(curl -s -X POST https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{"prompt": "Write a Python CLI that converts CSV to JSON"}' | jq -r '.id')
echo "Task: https://app.rebyte.ai/run/$TASK_ID"
# Tamamlanana kadar yoklawhile true; do STATUS=$(curl -s https://api.rebyte.ai/v1/tasks/$TASK_ID \ -H "API_KEY: rbk_xxx" | jq -r '.status') echo "Status: $STATUS" [[ "$STATUS" == "completed" || "$STATUS" == "failed" ]] && break sleep 5done
# Takip göndercurl -s -X POST https://api.rebyte.ai/v1/tasks/$TASK_ID/prompts \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{"prompt": "Now add support for nested JSON objects"}'Hata Formatı
Section titled “Hata Formatı”Tüm hatalar bu yapıyı takip eder:
{ "error": { "code": "validation_error", "message": "Invalid request body" }}| Kod | HTTP Durumu | Açıklama |
|---|---|---|
missing_api_key | 401 | API_KEY başlığı sağlanmadı |
invalid_api_key | 401 | Geçersiz veya süresi dolmuş API anahtarı |
validation_error | 400 | İstek gövdesi doğrulanamadı |
not_found | 404 | Kaynak mevcut değil veya erişilebilir değil |
limit_exceeded | 400 | Kuruluş limiti aşıldı (örn. maksimum webhook sayısı) |
agent_disabled | 403 | İstenen yürütücü bu kuruluş için devre dışı bırakıldı |
internal_error | 500 | Sunucu tarafı hatası |
Oran Sınırlaması
Section titled “Oran Sınırlaması”API şu anda anahtar başına oran sınırlamaları uygulamamaktadır. Her POST /tasks gerçek bir VM sağlar, bu nedenle maliyetler kullanımla birlikte artar. Gereksiz istekleri azaltmak için agresif yoklama yerine webhook’ları kullanın.