Trigger agents, read run status, and manage approvals from your own code, Zapier, CI pipeline, or any HTTP client.
Bearer auth
Keys start with ak_. Generate in Settings → API keys.
60 req/min per key
Responses include X-RateLimit-Remaining. Burst over the limit and you get 429 with a Retry-After header.
Scoped keys
read, run, admin. Give each integration the minimum it needs.
Send your API key as a bearer token. The organization is resolved from the key — you don't need to pass an org ID.
curl https://revvedagents.example/api/v1/agents \ -H "Authorization: Bearer ak_YOUR_KEY_HERE"
/api/v1/agentsscope: readList active agents available to your org.
/api/v1/agents/{slug}/runsscope: runTrigger an agent run. Optional body: recordObjectType, recordId, config.
/api/v1/runs/{id}scope: readGet a run's status, progress, and results.
/api/v1/approvalsscope: readList approvals. Query: ?status=pending|approved|rejected, ?limit=50.
/api/v1/approvals/{id}/approvescope: adminApprove a pending approval and execute the underlying action.
/api/v1/approvals/{id}/rejectscope: adminReject a pending approval. Body: { reason?: string }.
curl -X POST https://revvedagents.example/api/v1/agents/deal-risk-autopilot/runs \
-H "Authorization: Bearer ak_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{ "recordObjectType": "deal", "recordId": "12345" }'
# → 202 Accepted
# { "success": true, "data": { "runId": "...", "status": "queued" } }401 — missing or invalid bearer token.403 — key lacks the required scope for that endpoint.404 — resource not visible to this org.429 — rate limit exceeded; inspect Retry-After.5xx — transient; safe to retry with backoff.Subscribe to events at Settings → Webhooks. Each delivery is a POST with a JSON body and two headers: X-RevvedAgents-Event (event name) and X-RevvedAgents-Signature (HMAC-SHA256 of the raw body, keyed by your endpoint secret). Non-2xx responses retry with exponential backoff — 30s, 2m, 15m, 1h, 6h. After 5 consecutive failures the endpoint is marked failed and paused.
agent.run.completedAn agent run finished successfully. Payload includes runId, agentSlug, summary, score, findingsCount, completedAt.
agent.run.failedAn agent run failed. Payload includes runId, agentSlug, error.
finding.criticalA completed run produced a critical-severity finding. Emits once per critical finding.
approval.createdAn agent queued an action for human approval. Payload includes approvalId, action, expiresAt.
approval.approvedA pending approval was approved (dashboard or API). Payload includes approvalId, action, reviewedAt.
approval.rejectedA pending approval was rejected. Payload includes approvalId, action, reason, reviewedAt.
hubspot.connection.disconnectedA HubSpot connection for this org was disconnected. Payload includes connectionId, portalId.
import crypto from "crypto";
export function verifyRevvedAgentsWebhook(req, rawBody, secret) {
const sent = req.headers["x-agenthub-signature"];
const expected =
"sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(sent || "", "utf8");
const b = Buffer.from(expected, "utf8");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}Always compute the HMAC over the raw request body, before any JSON parsing. Reject any request where the signature doesn't match — the event payload may have been tampered with.
Full machine-readable spec: /api/v1/openapi.json. Drop it into Postman, Stoplight, or your favorite SDK generator.