Docs
BlogHomeStart building

Webhooks

Register, list, and delete webhook subscriptions for project events.


Webhooks let you subscribe to project events and receive an HTTP POST to your URL when the event occurs. All endpoints require the api-key header and are free.

Available events

EventFired when
agent.prompt.finishedThe AI agent finishes processing a prompt
project.credit_limit.reachedA project reaches its credit limit

Webhook payload delivered to your URL:

json
{
  "event": "agent.prompt.finished",
  "timestamp": "2026-03-17T10:30:00.000Z",
  "data": {
    "projectId": "my-app",
    "status": "done",
    "prompt": "Build a SaaS landing page..."
  }
}

#Register Webhook

PUT/api/v1/vcaas/webhooksFree

Subscribe to an event. You'll receive a POST to your URL when the event occurs.

Body parameters

FieldTypeRequiredDescription
urlstringYesHTTPS URL to receive webhook POST
eventstringYesEvent type to subscribe to. See available events above
headersobjectNoCustom headers to include in webhook POST

Response fields

FieldTypeDescription
data.idstringWebhook ID
data.urlstringThe registered URL
data.headersobjectCustom headers
data.eventstringThe subscribed event
data.createdAtstringISO 8601 date

Example request

bash
curl -X PUT \
  -H "api-key: tlm_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yourserver.com/webhook","event":"agent.prompt.finished"}' \
  https://api-accounts.totalum.app/api/v1/vcaas/webhooks
Success · 200 OK
json
{
  "errors": null,
  "data": {
    "id": "65f1a2b3c4d5e6f7a8b9c0d1",
    "url": "https://yourserver.com/webhook",
    "event": "agent.prompt.finished",
    "createdAt": "2026-03-17T10:00:00.000Z"
  }
}
Error · 400
json
{
  "errors": {
    "errorCode": "MISSING_WEBHOOK_FIELDS",
    "errorMessage": "url and event are required"
  },
  "data": null
}

Error codes

CodeHTTPMeaning
MISSING_WEBHOOK_FIELDS400url and event are required
INVALID_WEBHOOK_URL400Webhook URL must use HTTPS
INVALID_WEBHOOK_EVENT400Event not in allowed list
WEBHOOK_EVENT_ALREADY_EXISTS409A webhook for this event already exists

#List Webhooks

GET/api/v1/vcaas/webhooksFree

Get all your registered webhooks.

Response fields

FieldTypeDescription
data.webhooksarrayArray of webhooks
data.webhooks[].idstringWebhook ID
data.webhooks[].urlstringDestination URL
data.webhooks[].headersobjectCustom headers
data.webhooks[].eventstringSubscribed event
data.webhooks[].createdAtstringISO 8601 date

Example request

bash
curl -H "api-key: tlm_sk_your_key" \
  https://api-accounts.totalum.app/api/v1/vcaas/webhooks
Success · 200 OK
json
{
  "errors": null,
  "data": {
    "webhooks": [
      {
        "id": "65f1a2b3c4d5e6f7a8b9c0d1",
        "url": "https://yourserver.com/webhook",
        "event": "agent.prompt.finished",
        "createdAt": "2026-03-17T10:00:00.000Z"
      }
    ]
  }
}

#Delete Webhook

DELETE/api/v1/vcaas/webhooks/:webhookIdFree

Remove a webhook subscription.

Path parameters

ParameterTypeDescription
webhookIdstringThe webhook ID

Response fields

FieldTypeDescription
data.successbooleantrue on success

Example request

bash
curl -X DELETE -H "api-key: tlm_sk_your_key" \
  https://api-accounts.totalum.app/api/v1/vcaas/webhooks/65f1a2b3c4d5e6f7a8b9c0d1
Success · 200 OK
json
{ "errors": null, "data": { "success": true } }
Error · 404
json
{
  "errors": {
    "errorCode": "WEBHOOK_NOT_FOUND",
    "errorMessage": "Webhook not found"
  },
  "data": null
}

Error codes

CodeHTTPMeaning
WEBHOOK_NOT_FOUND404Webhook not found