For the complete documentation index, see llms.txt. This page is also available as Markdown.

Webhooks

Manage HTTP webhooks for projects.

Webhooks allow you to receive HTTP POST notifications when certain events occur in your test runs:

  • RUN_FINISH: Run completed (passed or failed)

  • RUN_START: Run started

  • RUN_TIMEOUT: Run timed out

  • RUN_CANCELED: Run was cancelled

Webhooks are useful for integrating with external tools like n8n, Zapier, or custom automation platforms.

List webhooks

get
/webhooks

Get all generic webhooks for a project

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
Responses
200

List of webhooks

application/json
statusstring · enumRequiredPossible values:
get/webhooks
GET /v1/webhooks?projectId=text HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": [
    {
      "hookId": "123e4567-e89b-12d3-a456-426614174000",
      "projectId": "text",
      "url": "https://example.com",
      "headers": "text",
      "hookEvents": [
        "RUN_FINISH"
      ],
      "label": "text",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "updatedAt": "2026-01-01T00:00:00.000Z"
    }
  ]
}

Create webhook

post
/webhooks

Create a new generic webhook for a project

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
Body
urlstring · uri · max: 2048Required

URL to send webhook POST requests to

headersstring · max: 4096 · nullableOptional

Custom headers as a JSON object string (e.g., {"Authorization": "Bearer token"})

labelstring · min: 1 · max: 255 · nullableOptional

Human-readable label for the webhook

Responses
201

Webhook created

application/json
statusstring · enumRequiredPossible values:
post/webhooks
POST /v1/webhooks?projectId=text HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 89

{
  "url": "https://example.com",
  "headers": "text",
  "hookEvents": [
    "RUN_FINISH"
  ],
  "label": "text"
}
{
  "status": "OK",
  "data": {
    "hookId": "123e4567-e89b-12d3-a456-426614174000",
    "projectId": "text",
    "url": "https://example.com",
    "headers": "text",
    "hookEvents": [
      "RUN_FINISH"
    ],
    "label": "text",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  }
}

Get webhook

get
/webhooks/{hookId}

Get a specific webhook by ID. The hookId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
hookIdstring · uuidRequired

The webhook ID (UUID)

Example: 550e8400-e29b-41d4-a716-446655440000
Responses
200

Webhook details

application/json
statusstring · enumRequiredPossible values:
get/webhooks/{hookId}
GET /v1/webhooks/{hookId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "hookId": "123e4567-e89b-12d3-a456-426614174000",
    "projectId": "text",
    "url": "https://example.com",
    "headers": "text",
    "hookEvents": [
      "RUN_FINISH"
    ],
    "label": "text",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  }
}

Update webhook

put
/webhooks/{hookId}

Update an existing webhook. Supports partial updates. The hookId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
hookIdstring · uuidRequired

The webhook ID (UUID)

Example: 550e8400-e29b-41d4-a716-446655440000
Body
urlstring · uri · max: 2048Optional

URL to send webhook POST requests to

headersstring · max: 4096 · nullableOptional

Custom headers as a JSON object string (e.g., {"Authorization": "Bearer token"})

labelstring · min: 1 · max: 255 · nullableOptional

Human-readable label for the webhook

Responses
200

Webhook updated

application/json
statusstring · enumRequiredPossible values:
put/webhooks/{hookId}
PUT /v1/webhooks/{hookId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 89

{
  "url": "https://example.com",
  "headers": "text",
  "hookEvents": [
    "RUN_FINISH"
  ],
  "label": "text"
}
{
  "status": "OK",
  "data": {
    "hookId": "123e4567-e89b-12d3-a456-426614174000",
    "projectId": "text",
    "url": "https://example.com",
    "headers": "text",
    "hookEvents": [
      "RUN_FINISH"
    ],
    "label": "text",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z"
  }
}

Delete webhook

delete
/webhooks/{hookId}

Delete a webhook. The hookId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
hookIdstring · uuidRequired

The webhook ID (UUID)

Example: 550e8400-e29b-41d4-a716-446655440000
Responses
200

Webhook deleted

application/json
statusstring · enumRequiredPossible values:
delete/webhooks/{hookId}
DELETE /v1/webhooks/{hookId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "hookId": "123e4567-e89b-12d3-a456-426614174000",
    "projectId": "text"
  }
}

Last updated

Was this helpful?