Hoppa till innehåll

Agentdator-API

Prova det i API Playground.

https://api.rebyte.ai/v1

Varje förfrågan kräver en API_KEY-header. Hämta din nyckel från Inställningar > API-nycklar.

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


MetodSökvägBeskrivning
POST/tasksSkapa en uppgift
GET/tasksLista uppgifter
GET/tasks/:idHämta uppgift med status och prompthistorik
POST/tasks/:id/promptsSkicka en uppföljningsprompt
PATCH/tasks/:id/visibilityÄndra uppgiftssynlighet
DELETE/tasks/:idMjukradera en uppgift
GET/tasks/:id/eventsSSE-ström av exekveringshändelser
POST/filesHämta en signerad URL för filuppladdning
POST/webhooksRegistrera en webhook
GET/webhooksLista webhooks
GET/webhooks/:idHämta webhookdetaljer
DELETE/webhooks/:idRadera en webhook
Alla sökvägar är relativa till bas-URL:en (https://api.rebyte.ai/v1).

POST /tasks

Skapar 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ältTypObligatoriskBeskrivning
promptstringJaUppgiftsbeskrivning (max 100 000 tecken)
executorstringNejclaude (standard), gemini, codex, opencode
modelstringNejModellnivå för exekutorn. Se Modeller.
workspaceIdstringNejUUID för en befintlig arbetsyta att återanvända
filesobject[]NejFiler från POST /files. Varje: {"id": "...", "filename": "..."}
skillsstring[]NejSkill slugs (t.ex. ["deep-research", "pdf"])
githubUrlstringNejGitHub-repo i formatet owner/repo
branchNamestringNejGrennamn (standard: 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"
}'

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:

Terminal window
# Första uppgiften – provisionerar en ny VM
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')
# 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\"}"

Tillgängliga modeller beror på exekutorn:

ExekutorTillgängliga modellerStandard
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 (auto-routes between flash and pro)auto-gemini-3
opencodeSamma som claudegemini-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).

GET /tasks?limit=50&offset=0

Returnerar uppgifter skapade via API:et, sorterade efter skapandetid (nyaste först).

ParameterTypStandardBeskrivning
limitnumber50Resultat per sida (max 100)
offsetnumber0Pagineringsoffset
Terminal window
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
}
GET /tasks/:id

Returnerar fullständiga uppgiftsdetaljer inklusive prompthistorik och härledd status.

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

StatusVillkor
runningNågon prompt är pending eller running
completedAlla prompter är terminala, den senaste är succeeded
failedAlla prompter är terminala, den senaste är failed
canceledAlla prompter är terminala, den senaste är canceled
POST /tasks/:id/prompts

Skicka en uppföljningsprompt till en körande eller slutförd uppgift. Om VM:en är stoppad återupptas den automatiskt.

FältTypObligatoriskBeskrivning
promptstringJaUppföljningsprompt (max 100 000 tecken)
skillsstring[]NejYtterligare skill slugs för denna prompt
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"}'

Svar (201):

{
"promptId": "770f9500-..."
}
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.

Terminal window
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
PATCH /tasks/:id/visibility
FältTypObligatoriskBeskrivning
visibilitystringJaprivate, shared, eller public
NivåVem kan se
privateEndast API-nyckelns ägare
sharedAlla organisationsmedlemmar (standard)
publicVem som helst med länken (skrivskyddad)
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"}'

När den är inställd på public inkluderar svaret en shareUrl för oautentiserad åtkomst.

DELETE /tasks/:id

Mjukraderar uppgiften. Returnerar 204 No Content.

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

POST /files
FältTypObligatoriskBeskrivning
filenamestringJaFilnamn (max 255 tecken)
contentTypestringNejMIME-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.

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

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.


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ändelseUtlöses när
task.createdEn ny uppgift skapas
task.runningAgenten börjar exekvera
task.completedUppgiften slutförs framgångsrikt
task.failedUppgiften misslyckas
task.canceledUppgiften avbryts av användaren
POST /webhooks
FältTypObligatoriskBeskrivning
urlstringJaHTTPS-slutpunkts-URL
eventsstring[]JaHändelser att prenumerera på
descriptionstringNejMänskligt läsbar etikett (max 500 tecken)
secretstringNejFördelad hemlighet (max 500 tecken). När den är inställd inkluderas den som X-Webhook-Secret-header i varje leverans.
Terminal window
# Webhook utan hemlighet
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"]
}'
# Webhook med fördelad hemlighet
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"
}'

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/false exponeras.
GET /webhooks

Returnerar alla webhooks för din organisation med statusinformation (lastTriggeredAt, failureCount, isActive). Hemligheter exponeras aldrig.

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

Returnerar 204 No Content. Raderade webhooks slutar omedelbart att ta emot leveranser.

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 vid task.created och task.running)

Anropa GET /tasks/:id för fullständiga uppgiftsdetaljer inklusive prompthistorik.

Leveransheaders:

HeaderAlltid närvarandeBeskrivning
Content-TypeJaapplication/json
X-Webhook-SignatureJaBase64-kodad RSA-SHA256-signatur
X-Webhook-TimestampJaUnix-tidsstämpel (sekunder)
X-Webhook-SecretEndast om hemlighet konfigureradDet 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 failureCount till 0

Varje leverans signeras med din organisations RSA-2048 nyckelpar, oavsett om en fördelad hemlighet är konfigurerad.

Så fungerar det:

  1. Rebyte sammanfogar {timestamp}.{body} (t.ex. 1706443200.{"event":"task.completed",...})
  2. Signerar strängen med RSA-SHA256 med din organisations privata nyckel
  3. 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, 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

Webhooks stöder två oberoende verifieringsmetoder som kan användas tillsammans:

MetodHeaderSå fungerar detAnvändningsfall
RSA-signaturX-Webhook-SignatureKryptografiskt bevis på att nyttolasten kom från RebyteManipulationssäker verifiering
Fördelad hemlighetX-Webhook-SecretStatisk sträng du angav vid skapandet, återges i varje leveransEnkel 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.


Komplett exempel: skapa en uppgift, polla tills den är klar, skicka sedan en uppföljning.

Terminal window
# Skapa uppgift
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"
# Polla tills klar
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
# Skicka en uppföljning
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"}'

Alla fel följer denna struktur:

{
"error": {
"code": "validation_error",
"message": "Invalid request body"
}
}
KodHTTP-statusBeskrivning
missing_api_key401API_KEY-header saknas
invalid_api_key401Ogiltig eller utgången API-nyckel
validation_error400Förfrågningskroppen misslyckades med validering
not_found404Resursen existerar inte eller är inte tillgänglig
limit_exceeded400Organisationsgränsen nådd (t.ex. max webhooks)
agent_disabled403Den begärda exekutorn är inaktiverad för denna organisation
internal_error500Server-sidigt fel

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.