Agentdator-API
Prova det i API Playground.
Bas-URL
Section titled “Bas-URL”https://api.rebyte.ai/v1Autentisering
Section titled “Autentisering”Varje förfrågan kräver en API_KEY-header. Hämta din nyckel från Inställningar > API-nycklar.
curl https://api.rebyte.ai/v1/tasks \ -H "API_KEY: rbk_your_key_here"Headerns namn är skiftlägesokänsligt. API_KEY, api-key och x-api-key fungerar alla.
Slutpunkter
Section titled “Slutpunkter”| Metod | Sökväg | Beskrivning |
|---|---|---|
| POST | /tasks | Skapa en uppgift |
| GET | /tasks | Lista uppgifter |
| GET | /tasks/:id | Hämta uppgift med status och prompthistorik |
| POST | /tasks/:id/prompts | Skicka en uppföljningsprompt |
| PATCH | /tasks/:id/visibility | Ändra uppgiftssynlighet |
| DELETE | /tasks/:id | Mjukradera en uppgift |
| GET | /tasks/:id/events | SSE-ström av exekveringshändelser |
| POST | /files | Hämta en signerad URL för filuppladdning |
| POST | /webhooks | Registrera en webhook |
| GET | /webhooks | Lista webhooks |
| GET | /webhooks/:id | Hämta webhookdetaljer |
| DELETE | /webhooks/:id | Radera en webhook |
Alla sökvägar är relativa till bas-URL:en (https://api.rebyte.ai/v1). |
Uppgifter
Section titled “Uppgifter”Skapa uppgift
Section titled “Skapa uppgift”POST /tasksSkapar en ny uppgift. Som standard tillhandahålls en ny VM (Agentdator). Skicka workspaceId för att istället köra uppgiften på en befintlig arbetsyta – detta hoppar över provisionering och är betydligt snabbare.
Anropet blockerar tills VM:en är provisionerad och den första prompten har skickats.
Förfrågningskropp:
| Fält | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
prompt | string | Ja | Uppgiftsbeskrivning (max 100 000 tecken) |
executor | string | Nej | claude (standard), gemini, codex, opencode |
model | string | Nej | Modellnivå för exekutorn. Se Modeller. |
workspaceId | string | Nej | UUID för en befintlig arbetsyta att återanvända |
files | object[] | Nej | Filer från POST /files. Varje: {"id": "...", "filename": "..."} |
skills | string[] | Nej | Skill slugs (t.ex. ["deep-research", "pdf"]) |
githubUrl | string | Nej | GitHub-repo i formatet owner/repo |
branchName | string | Nej | Grennamn (standard: 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" }'Svar (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"}Spara workspaceId från svaret för att skapa uppföljningsuppgifter på samma Agentdator:
# Första uppgiften – provisionerar en ny VMRESP=$(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')
# Andra uppgiften – återanvänder samma VM (mycket snabbare)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”Tillgängliga modeller beror på exekutorn:
| Exekutor | Tillgängliga modeller | Standard |
|---|---|---|
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 (auto-routes between flash and pro) | auto-gemini-3 |
opencode | Samma som claude | gemini-3.1-pro |
Med BYOK (bring your own API key) är endast exekutorns egna leverantörsmodeller tillgängliga (t.ex. claude-exekutor med BYOK får endast claude-sonnet-4.6 och claude-opus-4.6).
Lista uppgifter
Section titled “Lista uppgifter”GET /tasks?limit=50&offset=0Returnerar uppgifter skapade via API:et, sorterade efter skapandetid (nyaste först).
| Parameter | Typ | Standard | Beskrivning |
|---|---|---|---|
limit | number | 50 | Resultat per sida (max 100) |
offset | number | 0 | Pagineringsoffset |
curl "https://api.rebyte.ai/v1/tasks?limit=10" \ -H "API_KEY: rbk_xxx"Svar:
{ "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}Hämta uppgift
Section titled “Hämta uppgift”GET /tasks/:idReturnerar fullständiga uppgiftsdetaljer inklusive prompthistorik och härledd status.
curl https://api.rebyte.ai/v1/tasks/550e8400-... \ -H "API_KEY: rbk_xxx"Svar:
{ "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" } ]}Uppgiftsstatus härleds från prompttillstånd:
| Status | Villkor |
|---|---|
running | Någon prompt är pending eller running |
completed | Alla prompter är terminala, den senaste är succeeded |
failed | Alla prompter är terminala, den senaste är failed |
canceled | Alla prompter är terminala, den senaste är canceled |
Skicka uppföljning
Section titled “Skicka uppföljning”POST /tasks/:id/promptsSkicka en uppföljningsprompt till en körande eller slutförd uppgift. Om VM:en är stoppad återupptas den automatiskt.
| Fält | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
prompt | string | Ja | Uppföljningsprompt (max 100 000 tecken) |
skills | string[] | Nej | Ytterligare skill slugs för denna prompt |
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"}'Svar (201):
{ "promptId": "770f9500-..."}Strömma händelser (SSE)
Section titled “Strömma händelser (SSE)”GET /tasks/:id/eventsÖppnar en Server-Sent Events-ström för uppgiftens senaste prompt. Händelser inkluderar agentutdata (stdout, stderr), verktygsanrop och slutförandesignaler.
curl -N https://api.rebyte.ai/v1/tasks/550e8400-.../events \ -H "API_KEY: rbk_xxx"Strömmen sänder ut två händelsetyper:
event– exekveringshändelser (agentutdata, verktygsanrop)done– slutlig händelse med slutförandestatus, sedan stängs strömmen
Ändra synlighet
Section titled “Ändra synlighet”PATCH /tasks/:id/visibility| Fält | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
visibility | string | Ja | private, shared, eller public |
| Nivå | Vem kan se |
|---|---|
private | Endast API-nyckelns ägare |
shared | Alla organisationsmedlemmar (standard) |
public | Vem som helst med länken (skrivskyddad) |
curl -X PATCH https://api.rebyte.ai/v1/tasks/550e8400-.../visibility \ -H "API_KEY: rbk_xxx" \ -H "Content-Type: application/json" \ -d '{"visibility": "public"}'När den är inställd på public inkluderar svaret en shareUrl för oautentiserad åtkomst.
Radera uppgift
Section titled “Radera uppgift”DELETE /tasks/:idMjukraderar uppgiften. Returnerar 204 No Content.
curl -X DELETE https://api.rebyte.ai/v1/tasks/550e8400-... \ -H "API_KEY: rbk_xxx"Ladda upp filer för att bifoga till uppgifter. Använder ett tvåstegsflöde med signerade URL:er.
Steg 1: Hämta uppladdnings-URL
Section titled “Steg 1: Hämta uppladdnings-URL”POST /files| Fält | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
filename | string | Ja | Filnamn (max 255 tecken) |
contentType | string | Nej | MIME-typ (standard: application/octet-stream) |
Svar (201):
{ "id": "550e8400-...", "filename": "data.csv", "uploadUrl": "https://storage.googleapis.com/...", "maxFileSize": 52428800}Uppladdnings-URL:en går ut om 1 timme.
Steg 2: Ladda upp filen
Section titled “Steg 2: Ladda upp filen”curl -X PUT "UPLOAD_URL_FROM_STEP_1" \ -H "Content-Type: application/octet-stream" \ --data-binary @data.csvSteg 3: Bifoga till uppgift
Section titled “Steg 3: Bifoga till uppgift”Skicka id och filename från Steg 1 när du skapar en uppgift:
{ "prompt": "Analyze the uploaded data", "files": [ {"id": "550e8400-...", "filename": "data.csv"} ]}Filer kopieras automatiskt till uppgiftens VM när exekveringen börjar.
Webhooks
Section titled “Webhooks”Ta emot HTTP POST-meddelanden när uppgiftshändelser inträffar. Webhooks är universella – de utlöses för alla uppgifter i din organisation, oavsett om de skapats via API, UI eller någon annan kanal.
Händelser
Section titled “Händelser”| Händelse | Utlöses när |
|---|---|
task.created | En ny uppgift skapas |
task.running | Agenten börjar exekvera |
task.completed | Uppgiften slutförs framgångsrikt |
task.failed | Uppgiften misslyckas |
task.canceled | Uppgiften avbryts av användaren |
Skapa webhook
Section titled “Skapa webhook”POST /webhooks| Fält | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
url | string | Ja | HTTPS-slutpunkts-URL |
events | string[] | Ja | Händelser att prenumerera på |
description | string | Nej | Mänskligt läsbar etikett (max 500 tecken) |
secret | string | Nej | Fördelad hemlighet (max 500 tecken). När den är inställd inkluderas den som X-Webhook-Secret-header i varje leverans. |
# Webhook utan hemlighetcurl -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"] }'
# Webhook med fördelad hemlighetcurl -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" }'Svar (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}Beteendenoteringar:
- Dubbla URL:er: att registrera samma URL två gånger returnerar den befintliga webhooken (idempotent)
- Gräns: maximalt 3 webhooks per organisation. Den 4:e returnerar
limit_exceeded. - Hemlighetslagring: hemlighetsvärdet returneras aldrig i något svar. Endast
hasSecret: true/falseexponeras.
Lista webhooks
Section titled “Lista webhooks”GET /webhooksReturnerar alla webhooks för din organisation med statusinformation (lastTriggeredAt, failureCount, isActive). Hemligheter exponeras aldrig.
Hämta webhook
Section titled “Hämta webhook”GET /webhooks/:idRadera webhook
Section titled “Radera webhook”DELETE /webhooks/:idReturnerar 204 No Content. Raderade webhooks slutar omedelbart att ta emot leveranser.
Leverans
Section titled “Leverans”När en uppgiftshändelse matchar en webhooks prenumererade händelser, skickar Rebyte en HTTP POST till webhook-URL:en.
Nyttolast:
{ "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– promptstatus:pending(task.created),running(task.running),succeeded(task.completed),failed(task.failed),canceled(task.canceled)taskUrl– direktlänk till uppgiften i Rebyte UI (alltid närvarande)result– slutlig AI-utdata (närvarande vid terminala händelser:task.completed,task.failed,task.canceled; frånvarande vidtask.createdochtask.running)
Anropa GET /tasks/:id för fullständiga uppgiftsdetaljer inklusive prompthistorik.
Leveransheaders:
| Header | Alltid närvarande | Beskrivning |
|---|---|---|
Content-Type | Ja | application/json |
X-Webhook-Signature | Ja | Base64-kodad RSA-SHA256-signatur |
X-Webhook-Timestamp | Ja | Unix-tidsstämpel (sekunder) |
X-Webhook-Secret | Endast om hemlighet konfigurerad | Det fördelade hemlighetsvärdet du angav vid skapandet |
Tidsgräns: leveranser tar slut efter 10 sekunder.
Felhantering:
- Leveransen är fire-and-forget – inga automatiska återförsök vid fel
- Svar som inte är 2xx ökar
failureCount - Efter 10 på varandra följande misslyckanden inaktiveras webhooken automatiskt (
isActive: false) - Framgångsrika leveranser återställer
failureCounttill 0
Signaturverifiering
Section titled “Signaturverifiering”Varje leverans signeras med din organisations RSA-2048 nyckelpar, oavsett om en fördelad hemlighet är konfigurerad.
Så fungerar det:
- Rebyte sammanfogar
{timestamp}.{body}(t.ex.1706443200.{"event":"task.completed",...}) - Signerar strängen med RSA-SHA256 med din organisations privata nyckel
- Skickar den base64-kodade signaturen i
X-Webhook-Signature
Hämta din publika nyckel: kontakta supporten eller hämta den från Rebyte-instrumentpanelen. RSA-2048 nyckelparet genereras automatiskt vid första webhook-skapandet och kvarstår för organisationen.
Verifieringsexempel (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');}
// In your webhook handler: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');});Verifieringsexempel (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 FalseTvåfaktorssäkerhet
Section titled “Tvåfaktorssäkerhet”Webhooks stöder två oberoende verifieringsmetoder som kan användas tillsammans:
| Metod | Header | Så fungerar det | Användningsfall |
|---|---|---|---|
| RSA-signatur | X-Webhook-Signature | Kryptografiskt bevis på att nyttolasten kom från Rebyte | Manipulationssäker verifiering |
| Fördelad hemlighet | X-Webhook-Secret | Statisk sträng du angav vid skapandet, återges i varje leverans | Enkel delad hemlighetskontroll |
RSA-signaturer är alltid närvarande. Den fördelade hemligheten är valfri – ställ in den när du skapar webhooken om du vill ha en enklare verifieringsväg.
Polling-exempel
Section titled “Polling-exempel”Komplett exempel: skapa en uppgift, polla tills den är klar, skicka sedan en uppföljning.
# Skapa uppgiftTASK_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"
# Polla tills klarwhile 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
# Skicka en uppföljningcurl -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"}'Felformat
Section titled “Felformat”Alla fel följer denna struktur:
{ "error": { "code": "validation_error", "message": "Invalid request body" }}| Kod | HTTP-status | Beskrivning |
|---|---|---|
missing_api_key | 401 | API_KEY-header saknas |
invalid_api_key | 401 | Ogiltig eller utgången API-nyckel |
validation_error | 400 | Förfrågningskroppen misslyckades med validering |
not_found | 404 | Resursen existerar inte eller är inte tillgänglig |
limit_exceeded | 400 | Organisationsgränsen nådd (t.ex. max webhooks) |
agent_disabled | 403 | Den begärda exekutorn är inaktiverad för denna organisation |
internal_error | 500 | Server-sidigt fel |
Hastighetsbegränsning
Section titled “Hastighetsbegränsning”API:et tillämpar för närvarande inga hastighetsbegränsningar per nyckel. Varje POST /tasks provisionerar en verklig VM, så kostnaderna skalas med användningen. Använd webhooks istället för aggressiv polling för att minska onödiga förfrågningar.