İçeriğe geç

Aracı Bilgisayar API'si

API Playground’da deneyin.

https://api.rebyte.ai/v1

Her istek bir API_KEY başlığı gerektirir. Anahtarınızı Ayarlar > API Anahtarları bölümünden alın.

Terminal window
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.


MetotYolAçıklama
POST/tasksBir görev oluştur
GET/tasksGörevleri listele
GET/tasks/:idDurum ve istem geçmişiyle birlikte görevi al
POST/tasks/:id/promptsTakip istemi gönder
PATCH/tasks/:id/visibilityGörevin görünürlüğünü değiştir
DELETE/tasks/:idBir görevi geçici olarak sil
GET/tasks/:id/eventsYürütme olaylarının SSE akışı
POST/filesİmzalı bir dosya yükleme URL’si al
POST/webhooksBir webhook kaydet
GET/webhooksWebhook’ları listele
GET/webhooks/:idWebhook ayrıntılarını al
DELETE/webhooks/:idBir webhook’u sil
Tüm yollar temel URL’ye (https://api.rebyte.ai/v1) göredir.

POST /tasks

Yeni 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:

AlanTipGerekliAçıklama
promptstringEvetGörev açıklaması (maks 100.000 karakter)
executorstringHayırclaude (varsayılan), gemini, codex, opencode
modelstringHayırYürütücü için model katmanı. Modeller bölümüne bakın.
workspaceIdstringHayırYeniden kullanılacak mevcut bir çalışma alanının UUID’si
filesobject[]HayırPOST /files’tan dosyalar. Her biri: {"id": "...", "filename": "..."}
skillsstring[]HayırBeceri slug’ları (örn. ["deep-research", "pdf"])
githubUrlstringHayırowner/repo formatında GitHub deposu
branchNamestringHayırDal adı (varsayılan: main)
Terminal window
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:

Terminal window
# İlk görev -- yeni bir VM sağlar
RESP=$(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\"}"

Mevcut modeller yürütücüye bağlıdır:

YürütücüMevcut ModellerVarsayılan
claudeclaude-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-flashclaude-sonnet-4.6
codexgpt-5.4, gpt-5.3-codexgpt-5.4
geminiauto-gemini-3 (flash ve pro arasında otomatik yönlendirme)auto-gemini-3
opencodeclaude 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).

GET /tasks?limit=50&offset=0

API aracılığıyla oluşturulan görevleri, oluşturulma zamanına göre (en yeniden en eskiye) sıralanmış olarak döndürür.

ParametreTipVarsayılanAçıklama
limitnumber50Sayfa başına sonuç (maks 100)
offsetnumber0Sayfalama ofseti
Terminal window
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
}
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.

Terminal window
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:

DurumKoşul
runningHerhangi bir istem beklemede veya çalışıyor
completedTüm istemler terminalde, en sonuncusu başarılı
failedTüm istemler terminalde, en sonuncusu başarısız
canceledTüm istemler terminalde, en sonuncusu iptal edildi
POST /tasks/:id/prompts

Çalışan veya tamamlanmış bir göreve takip istemi gönderin. VM durdurulmuşsa, otomatik olarak devam ettirilir.

AlanTipGerekliAçıklama
promptstringEvetTakip istemi (maks 100.000 karakter)
skillsstring[]HayırBu istem için ek beceri slug’ları
Terminal window
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-..."
}
GET /tasks/:id/events

Gö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.

Terminal window
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
PATCH /tasks/:id/visibility
AlanTipGerekliAçıklama
visibilitystringEvetprivate, shared veya public
SeviyeKimler görüntüleyebilir
privateYalnızca API anahtarı sahibi
sharedTüm organizasyon üyeleri (varsayılan)
publicBağlantıya sahip herkes (salt okunur)
Terminal window
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.

DELETE /tasks/:id

Görevi geçici olarak siler. 204 İçerik Yok döndürür.

Terminal window
curl -X DELETE https://api.rebyte.ai/v1/tasks/550e8400-... \
-H "API_KEY: rbk_xxx"

Görevlere eklemek için dosyaları yükleyin. İki adımlı imzalı URL akışı kullanır.

POST /files
AlanTipGerekliAçıklama
filenamestringEvetDosya adı (maks 255 karakter)
contentTypestringHayırMIME 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.

Terminal window
curl -X PUT "UPLOAD_URL_FROM_STEP_1" \
-H "Content-Type: application/octet-stream" \
--data-binary @data.csv

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.


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.

OlayNe zaman tetiklenir
task.createdYeni bir görev oluşturulduğunda
task.runningAracı yürütmeye başladığında
task.completedGörev başarıyla tamamlandığında
task.failedGörev başarısız olduğunda
task.canceledGörev kullanıcı tarafından iptal edildiğinde
POST /webhooks
AlanTipGerekliAçıklama
urlstringEvetHTTPS uç nokta URL’si
eventsstring[]EvetAbone olunacak olaylar
descriptionstringHayırİnsan tarafından okunabilir etiket (maks 500 karakter)
secretstringHayırÖnceden paylaşılan gizli anahtar (maks 500 karakter). Ayarlandığında, her teslimatta X-Webhook-Secret başlığı olarak dahil edilir.
Terminal window
# Gizli anahtarsız webhook
curl -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ı webhook
curl -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_exceeded döndürür.
  • Gizli anahtar depolama: gizli anahtar değeri hiçbir yanıtta döndürülmez. Yalnızca hasSecret: true/false gösterilir.
GET /webhooks

Kuruluşunuzdaki tüm webhook’ları durum bilgileriyle (lastTriggeredAt, failureCount, isActive) döndürür. Gizli anahtarlar asla gösterilmez.

GET /webhooks/:id
DELETE /webhooks/:id

204 İçerik Yok döndürür. Silinen webhook’lar teslimat almayı hemen durdurur.

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.created ve task.running olayları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ıkHer zaman mevcutAçıklama
Content-TypeEvetapplication/json
X-Webhook-SignatureEvetBase64 kodlu RSA-SHA256 imzası
X-Webhook-TimestampEvetUnix zaman damgası (saniye)
X-Webhook-SecretYalnızca gizli anahtar yapılandırılmışsaOluş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

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:

  1. Rebyte {timestamp}.{body}’yi birleştirir (örn. 1706443200.{"event":"task.completed",...})
  2. Diziyi kuruluşunuzun özel anahtarını kullanarak RSA-SHA256 ile imzalar
  3. Base64 kodlu imzayı X-Webhook-Signature iç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, serialization
from cryptography.hazmat.primitives.asymmetric import padding
import 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

Webhook’lar, birlikte kullanılabilecek iki bağımsız doğrulama yöntemini destekler:

MetotBaşlıkNasıl çalışırKullanım durumu
RSA imzasıX-Webhook-SignatureYükün Rebyte’tan geldiğine dair kriptografik kanıtKurcalamaya dayanıklı doğrulama
Önceden paylaşılan gizli anahtarX-Webhook-SecretOluşturma sırasında ayarladığınız statik dize, her teslimatta geri yansıtılırBasit 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.


Tam örnek: bir görev oluşturun, tamamlanana kadar yoklayın, ardından bir takip gönderin.

Terminal window
# Görev oluştur
TASK_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 yokla
while 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 5
done
# Takip gönder
curl -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"}'

Tüm hatalar bu yapıyı takip eder:

{
"error": {
"code": "validation_error",
"message": "Invalid request body"
}
}
KodHTTP DurumuAçıklama
missing_api_key401API_KEY başlığı sağlanmadı
invalid_api_key401Geçersiz veya süresi dolmuş API anahtarı
validation_error400İstek gövdesi doğrulanamadı
not_found404Kaynak mevcut değil veya erişilebilir değil
limit_exceeded400Kuruluş limiti aşıldı (örn. maksimum webhook sayısı)
agent_disabled403İstenen yürütücü bu kuruluş için devre dışı bırakıldı
internal_error500Sunucu tarafı hatası

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.