API Reference

The Conduit REST API ingests events and manages pipelines. All endpoints are versioned under /v1 and return JSON. Requests and responses use UTF-8; timestamps are RFC 3339 in UTC.

Base URL and authentication

Send every request to the production host over HTTPS:

bash
https://api.conduit.dev

Authenticate with a live API key in the Authorization header using the Bearer scheme. Keys begin with ck_live_ and carry the permissions of the workspace that issued them.

bash
Authorization: Bearer ck_live_8Hx2Qm4Rt9Vn0Lb

A missing or invalid key returns 401 Unauthorized. Requests that exceed the workspace rate limit return 429 Too Many Requests with a Retry-After header.

Create an event

POST /v1/events

Ingest a single event into a pipeline. The call returns once the API has durably accepted the event for processing. Supply an idempotency_key to make retries safe: a repeated key within 24 hours returns the original result instead of creating a duplicate.

Request parameters

FieldTypeRequiredDescription
pipeline_idstringrequiredTarget pipeline that receives the event, for example pl_8f3a.
event_typestringrequiredDot-namespaced event name, for example order.created.
payloadobjectrequiredArbitrary JSON body for the event. Maximum encoded size is 256 KB.
idempotency_keystringoptionalClient-supplied dedup token. Repeated keys within 24h return the first result.

Response fields

FieldTypeDescription
event_idstringServer-assigned identifier for the stored event.
pipeline_idstringPipeline the event was routed to. Echoes the request.
event_typestringEvent name as submitted. Echoes the request.
statusstringAcceptance state. accepted means queued for the sink.
received_atstringRFC 3339 timestamp when the API accepted the event.

Example request

The same call in three clients. Selecting a language here switches every example on the page.

bash
curl https://api.conduit.dev/v1/events \
  -H "Authorization: Bearer ck_live_8Hx2Qm4Rt9Vn0Lb" \
  -H "Content-Type: application/json" \
  -d '{
    "pipeline_id": "pl_8f3a",
    "event_type": "order.created",
    "payload": { "orderId": "ord_1042", "amount": 4999, "currency": "usd" },
    "idempotency_key": "evt-key-3f9c2a"
  }'

Example response

A 200 OK response echoes pipeline_id and event_type and adds the server-assigned fields:

json
{
  "event_id": "evt_5b1c9d",
  "pipeline_id": "pl_8f3a",
  "event_type": "order.created",
  "status": "accepted",
  "received_at": "2026-06-21T14:09:33Z"
}

Retrieve a pipeline

GET /v1/pipelines/{id}

Fetch a single pipeline by id, including its resolved name and batch settings and its current run state.

Path parameters

FieldTypeRequiredDescription
idstringrequiredPipeline identifier from the create call, for example pl_8f3a.

Response fields

FieldTypeDescription
idstringPipeline identifier.
namestringHuman-readable label set in the config.
statusstringOne of active, paused, or draining.
batch_sizeintEvents buffered before a flush to the sink.
created_atstringRFC 3339 creation timestamp.

Example request

bash
curl https://api.conduit.dev/v1/pipelines/pl_8f3a \
  -H "Authorization: Bearer ck_live_8Hx2Qm4Rt9Vn0Lb"
json
{
  "id": "pl_8f3a",
  "name": "orders-stream",
  "status": "active",
  "batch_size": 100,
  "created_at": "2026-06-18T09:12:04Z"
}

List events

GET /v1/events

Return events in reverse-chronological order. Results are cursor-paginated: pass the next_cursor from one response as the cursor of the next request until has_more is false.

Query parameters

FieldTypeRequiredDescription
pipeline_idstringoptionalRestrict results to one pipeline. Omit to list across the workspace.
limitintoptionalPage size, 1–100. Defaults to 50.
cursorstringoptionalOpaque pagination token from a prior next_cursor.

Response fields

FieldTypeDescription
dataarrayList of event objects, newest first.
has_morebooleantrue when more pages remain.
next_cursorstringToken for the next page, or null on the last page.

Example request

bash
curl "https://api.conduit.dev/v1/events?pipeline_id=pl_8f3a&limit=2" \
  -H "Authorization: Bearer ck_live_8Hx2Qm4Rt9Vn0Lb"
json
{
  "data": [
    {
      "event_id": "evt_5b1c9d",
      "pipeline_id": "pl_8f3a",
      "event_type": "order.created",
      "received_at": "2026-06-21T14:09:33Z"
    }
  ],
  "has_more": true,
  "next_cursor": "ev_cursor_2a7f"
}

Delete a pipeline

DELETE /v1/pipelines/{id}

Permanently delete a pipeline. In-flight events already accepted are still flushed to the sink; no new events are accepted after deletion. This action cannot be undone.

Path parameters

FieldTypeRequiredDescription
idstringrequiredIdentifier of the pipeline to delete.

Response fields

FieldTypeDescription
idstringIdentifier of the deleted pipeline.
deletedbooleanAlways true on success.

Example request

bash
curl -X DELETE https://api.conduit.dev/v1/pipelines/pl_8f3a \
  -H "Authorization: Bearer ck_live_8Hx2Qm4Rt9Vn0Lb"
json
{
  "id": "pl_8f3a",
  "deleted": true
}

Error responses

Errors use standard HTTP status codes and a JSON body with a stable error.code and a human-readable error.message. See Concepts for retry and dead-letter behavior.

json
{
  "error": {
    "code": "payload_too_large",
    "message": "payload exceeds the 256KB limit"
  }
}
On this page