Skip to main content

Requests and responses

Send and read JSON. A request that creates a row answers 201. A request with an invalid body answers 400.

Errors

An error has an HTTP status and a JSON body. Read the status first. Most errors have a detail with a sentence for a person:
A 400 for a bad body names each field with what to fix:
A rate limit error also has code and retry_after. Read Rate limits. Do not parse the sentence in detail. It can change. Use the status and, where it exists, code.

Pages

A route that lists rows for a table returns one page:
These query parameters work on such a route: Some feed routes read newest first and use a cursor, not a page number. A timeline or a list of deliveries takes before with a time, and returns next for the following request. The list of conversations takes offset. The API reference shows the parameters of each route.

Ids

An id is a UUID in text form, such as 3f2b8c1e-5a4d-4e6f-9b7a-1c2d3e4f5a6b. Send it in the path. Apps use their own slug in the path.

Time

ImpelLabs stores time in UTC. A time in a response is an ISO 8601 text. Show times to a person in their own zone.

Deleting

Rows are not erased. A delete marks the row as archived and removes it from lists. Some archived rows come back with a restore route, for example a record of an app or a knowledge group. The reference names these routes.

Rate limits

The MCP endpoint takes a set number of requests a minute for each token. The limits are in MCP limits. Over the limit, the answer is 429:
retry_after is in seconds. The response has a Retry-After header with the same value. Wait that long, then send the request again. An outgoing webhook endpoint has its own rate in deliveries a minute. A delivery over the rate waits and is sent later. See Webhooks.

Retries

A request has no idempotency key. If a request that creates a row times out, list the rows before you send it again. Routes that read are safe to repeat.

Live and test

The API has no separate test mode. Use a separate workspace for tests. A webhook endpoint can be live or staging. A staging endpoint takes test events and replays only.