Requests and responses
Send and read JSON. A request that creates a row answers201. 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:
400 for a bad body names each field with what to fix:
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:
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 as3f2b8c1e-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 is429:
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 belive or staging. A staging endpoint takes test events and replays only.