Queues
Queues, background jobs and schedules. Send from a function binding or the REST API; a function, a URL (signed with the Standard Webhooks headers) or a pull client consumes. Retries with backoff, a dead-letter queue, cron schedules. Delivery is at least once.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Response
200object
queuesQueue[]requirednamestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
limitsQueueLimitsqueuesintegerschedulesintegermessageBytesintegerbatchSendMessagesintegerbatchSendBytesintegerbacklogBytesintegerretentionDaysintegermaxDelaySintegermaxVisibilitySintegermaxConcurrencyintegermaxBatchSizeintegerpeekintegerdailyOpsinteger | nulloperations a day (Hobby 10,000, then 429 ops_limit); null: no daily limit
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/queues" \
-H "Authorization: Bearer $KEY"/v1/queuesCreate a queue#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Request bodyapplication/json
namestringrequiredpattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
Response
201QueueCreated
namestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_name, bad_setting, bad_dlq |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues" \
-H "Authorization: Bearer $KEY" \
-d '{"name":"emails"}'/v1/queues/{name}Get a queue#
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200Queue
namestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/queues/emails" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}Delete a queue and its messages#
Refused while a live version binds it (409 bound).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
- Step-up
- With a dashboard session, a second factor confirmed in the last 10 minutes; API keys pass.
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
namestringdeletedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, step_up_required |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/queues/emails" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}Change a queue's settings#
Settings, the dead-letter queue, and pausing delivery (sends are still accepted while paused).
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
pausedboolean
Response
200Queue
namestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_setting, bad_dlq, nothing |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/queues/emails" \
-H "Authorization: Bearer $KEY" \
-d '{"visibility_timeout_s":1,"max_retries":0,"retry_delay_s":0,"retention_s":60,"delivery_delay_s":0,"dead_letter_queue":"…","paused":true}'/v1/queues/{name}/consumerSet the consumer function#
A function (its queue(batch, env, ctx) handler gets batches), a URL (each message POSTed, signed with the Standard Webhooks headers; the answer adds signing_secret, shown once) or pull.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
one of function, url or pull
functionstringone of the team's functions or apps
urlstringan HTTPS address; each message is POSTed to it, signed with the Standard Webhooks headers
pullbooleantrue: messages wait for POST …/pull
batch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Response
200Queue
namestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_consumer, bad_setting |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PUT "https://api.ibel.ai/v1/queues/emails/consumer" \
-H "Authorization: Bearer $KEY" \
-d '{"function":"…","url":"https://example.com","pull":true,"batch_size":1,"batch_wait_s":0,"batch_wait_ms":0,"max_concurrency":1}'- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200Queue
namestringrequiredmessagesintegerrequiredthe backlog: ready, delayed and in flight
in_flightintegerdelayedintegerbytesintegerstored size of the messages
oldest_age_sinteger | nullpausedbooleanrequiredcreated_atstring (date-time)visibility_timeout_sintegerseconds a delivery may take before it is retried (default 30; alias visibility_timeout)
at least 1
max_retriesintegerretries after the first delivery (default 3); then the dead-letter queue
0–100
retry_delay_sintegerseconds before the first retry, doubling each time, at most 12 hours (default 5)
0–43200
retention_sintegerseconds a message is kept (alias retention; up to 1 day on Hobby, 14 days on Pro)
at least 60
delivery_delay_sintegera delay for every message without its own (up to the plan's delay)
at least 0
dead_letter_queuestring | nullanother queue of the team that receives messages after their last retry (alias dead_letter)
consumernull | QueueConsumertypestringrequiredone of
function,url,pullfunctionstringurlstringbatch_sizeinteger1–100
batch_wait_sinteger0–60
batch_wait_msinteger0–60000
max_concurrencyintegerdeliveries at once (alias concurrency)
at least 1
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/queues/emails/consumer" \
-H "Authorization: Bearer $KEY"- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 charactersstatestringqueryone of
all,ready,delayed,in_flightlimitintegerquery1–100
afterstringquerya message id: the next page
Response
200QueuePeek
queuestringmessagesQueueMessage[]idstringbodyanybytesintegerattemptsintegerdeliveries so far
enqueued_atstring (date-time)available_atstring (date-time)statestringone of
ready,delayed,in_flightdead_fromstring | nullin a dead-letter queue: the queue it came from
dead_reasonstring | null
nextstring | null
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_state, bad_param |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/queues/emails/messages" \
-H "Authorization: Bearer $KEY"- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
bodyanyrequiredany JSON value, up to 128 KB
delay_secondsintegerdeliver after this long (alias delaySeconds; up to the plan's delay)
at least 0
delaySecondsintegerthe same as delay_seconds (the binding's name)
at least 0
dedup_idstringthe same id within 10 minutes is accepted once
Response
202QueueSentAccepted
sentintegerrequiredidsstring[]duplicatesintegermessages whose dedup_id was already seen
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_message, bad_delay, message_too_large, queue_full |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/messages" \
-H "Authorization: Bearer $KEY" \
-d '{"body":null}'- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
messagesQueueMessageIn[]required1–100 items
bodyanyrequiredany JSON value, up to 128 KB
delay_secondsintegerdeliver after this long (alias delaySeconds; up to the plan's delay)
at least 0
delaySecondsintegerthe same as delay_seconds (the binding's name)
at least 0
dedup_idstringthe same id within 10 minutes is accepted once
Response
202QueueSentAccepted
sentintegerrequiredidsstring[]duplicatesintegermessages whose dedup_id was already seen
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_message, too_many, bad_delay, message_too_large, batch_too_large, queue_full |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/messages/batch" \
-H "Authorization: Bearer $KEY" \
-d '{"messages":[{"body":null,"delay_seconds":0,"delaySeconds":0,"dedup_id":"…"}]}'/v1/queues/{name}/consumer/rotate-secretRotate a URL consumer's signing secret#
A new whsec_ secret, shown once; the old one stops signing.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
signing_secretstringrequired
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_consumer |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/consumer/rotate-secret" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}/pullPull messages#
For a pull consumer: takes up to max_messages ready messages and hides them for the visibility timeout; ack them with POST …/ack.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
max_messagesinteger1–100 · default
10visibility_timeout_sintegerat least 1
Response
200QueuePulled
messagesobject[]requiredidstringlease_idstringwhat ack takes
bodyanyattemptsintegertimestampstring (date-time)
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_setting |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: not_pull (the queue's consumer is a function or URL) |
| 429 | Too many: ops_limit |
| 500 | internal: an unexpected failure |
| 503 | Unavailable: unavailable (try again) |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/pull" \
-H "Authorization: Bearer $KEY" \
-d '{"max_messages":10,"visibility_timeout_s":1}'/v1/queues/{name}/ackAcknowledge or retry pulled messages#
A message neither acked nor retried comes back after its visibility timeout.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
acksstring[]lease ids
retriesobject[]lease_idstringrequireddelay_secondsintegerat least 0
Response
200object
ackedintegerretriedintegerdeadintegerretries past max_retries, moved to the dead-letter queue
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_message |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 409 | Conflict: not_pull |
| 429 | Too many: ops_limit |
| 500 | internal: an unexpected failure |
| 503 | Unavailable: unavailable (try again) |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/ack" \
-H "Authorization: Bearer $KEY" \
-d '{"acks":["…"],"retries":[{"lease_id":"…","delay_seconds":0}]}'/v1/queues/{name}/statsA queue's numbers now#
Backlog, ready, delayed, in flight, stored bytes, age of the oldest, per-minute rates over the last 5 minutes and the dead letters waiting.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200QueueStats
backlogintegerreadyintegerdelayedintegerin_flightintegerbytesintegeroldest_age_sinteger | nullratesobjectper minute, over the last 5 minutes
sentnumberdeliverednumberackednumberfailednumberdeadnumber
dead_lettersintegermessages from this queue waiting in its dead-letter queue
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
| 503 | Unavailable: unavailable (try again) |
Example
curl "https://api.ibel.ai/v1/queues/emails/stats" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}/dead-lettersList a queue's dead letters#
The messages in this queue's dead-letter queue that came from it.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characterslimitintegerqueryat least 1
afterstringquerya message id, for the next page
Response
200object
queuestringdead_letter_queuestring | nullmessagesQueueMessage[]idstringbodyanybytesintegerattemptsintegerdeliveries so far
enqueued_atstring (date-time)available_atstring (date-time)statestringone of
ready,delayed,in_flightdead_fromstring | nullin a dead-letter queue: the queue it came from
dead_reasonstring | null
nextstring | null
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/queues/emails/dead-letters" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}/dead-lettersDelete a queue's dead letters#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
- Step-up
- With a dashboard session, a second factor confirmed in the last 10 minutes; API keys pass.
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
purgedinteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, step_up_required |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/queues/emails/dead-letters" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}/dead-letters/retryRetry dead letters#
Moves dead letters back into this queue, oldest first (or only ids), with their attempts reset.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
limitinteger1–10000 · default
1000idsstring[]
Response
200object
retriedinteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_limit |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/dead-letters/retry" \
-H "Authorization: Bearer $KEY" \
-d '{"limit":1000,"ids":["…"]}'/v1/queues/{name}/purgeDelete every message#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
- Step-up
- With a dashboard session, a second factor confirmed in the last 10 minutes; API keys pass.
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Response
200object
namestringpurgedinteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, step_up_required |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/purge" \
-H "Authorization: Bearer $KEY"/v1/queues/{name}/redriveRedrive a dead-letter queue#
Moves dead letters back to the queue each came from (or to), with fresh retries.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 characters
Request bodyapplication/json
limitinteger1–10000
tostring
Response
200object
namestringredriveninteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_limit, bad_target |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/queues/emails/redrive" \
-H "Authorization: Bearer $KEY" \
-d '{"limit":1,"to":"2026-11-04T06:00:00Z"}'/v1/queues/{name}/observabilityQueue metrics#
Messages waiting, age of the oldest, sent, processed, failed deliveries and dead-lettered messages.
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
namestringpathrequiredthe queue's name
pattern
^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$· up to 63 charactersrangestringqueryone of
1h,24h,7d· default"1h"
Response
200Observability
rangestringrequiredstepstringrequiredtotalsPercentilesrequiredrequestsintegerevery request served, static files and code
function_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_4xxintegererrors_5xxintegererror_ratenumberp50number | nullp95number | nullp99number | null
seriesPercentiles[]requiredtstring (date-time)requestsintegerfunction_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_4xxintegererrors_5xxintegerp50number | nullp95number | nullp99number | null
routesPercentiles[]requiredroutestringrequestsintegerfunction_requestsintegerrequests that ran the code
static_requestsintegerrequests answered with a static file
errors_5xxintegererror_ratenumberavg_msnumber | nullp50number | nullp95number | nullp99number | null
notestringcopiesFunctionCopieslimitintegerrequiredthe plan's copies per server (function_copies in GET /v1/limits)
perstringrequiredone of
servertotalsCopyFiguresrequiredcopies_maxintegerthe most copies running at once on one server
copies_avgnumberthe average copies on a server while it ran the function, one decimal
startsintegerextra copies started because the function was busy
start_ms_avginteger | nulltheir average start time, ms
start_ms_maxinteger | nullstopsintegerextra copies stopped when idle
requestsintegerqueuedintegerrequests that waited for a free copy
queue_ms_avginteger | nullthe average wait, ms
queue_ms_maxinteger | nullrejectedintegerrequests turned away with 429 or 503 (Retry-After 1) because no copy was free in time
rejected_planintegerof those, the 429s: the function was at its plan's copies
seriesobject[]requiredthe same steps as the observability series
tstring (date-time)copies_maxintegercopies_avgnumberstartsintegerstart_ms_avginteger | nullqueuedintegerqueue_ms_avginteger | nullqueue_ms_maxinteger | nullrejectedintegerrejected_planinteger
serversCopyFigures[]requiredserverstringthe server's number, "1", "2", and on
copies_maxintegerthe most copies running at once on one server
copies_avgnumberthe average copies on a server while it ran the function, one decimal
startsintegerextra copies started because the function was busy
start_ms_avginteger | nulltheir average start time, ms
start_ms_maxinteger | nullstopsintegerextra copies stopped when idle
requestsintegerqueuedintegerrequests that waited for a free copy
queue_ms_avginteger | nullthe average wait, ms
queue_ms_maxinteger | nullrejectedintegerrequests turned away with 429 or 503 (Retry-After 1) because no copy was free in time
rejected_planintegerof those, the 429s: the function was at its plan's copies
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_range |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/queues/emails/observability" \
-H "Authorization: Bearer $KEY"/v1/schedulesList schedules#
- Credential
- An API key or a dashboard session
- Roles
- Any role
Response
200object
schedulesSchedule[]requiredidstringrequirednamestring | nullcronstringrequiredfive fields, e.g. 0 3 * * *
timezonestringrequiredtargetobjectrequiredtypestringrequiredone of
queue,function,urlqueuestringfunctionstringurlstring
bodyanythe message each run sends
pausedbooleanrequiredlast_atstring (date-time) | nulllast_statusstring | nullone of
sent,failed,nullcreated_atstring (date-time)signing_secretstringon create with a URL target only, shown once
limitsobjectschedulesinteger
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/schedules" \
-H "Authorization: Bearer $KEY"/v1/schedulesCreate a schedule#
Sends body on a cron expression to a queue, a function or a URL. A URL target answers signing_secret once.
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Request bodyapplication/json
namestringcronstringrequiredtimezonestringdefault
"Asia/Tehran"targetobject | object | objectrequiredqueuestringrequired
bodyanypausedboolean
Response
201ScheduleCreated
idstringrequirednamestring | nullcronstringrequiredfive fields, e.g. 0 3 * * *
timezonestringrequiredtargetobjectrequiredtypestringrequiredone of
queue,function,urlqueuestringfunctionstringurlstring
bodyanythe message each run sends
pausedbooleanrequiredlast_atstring (date-time) | nulllast_statusstring | nullone of
sent,failed,nullcreated_atstring (date-time)signing_secretstringon create with a URL target only, shown once
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_cron, bad_target |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden, limit |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X POST "https://api.ibel.ai/v1/schedules" \
-H "Authorization: Bearer $KEY" \
-d '{"cron":"…","target":{"queue":"…"}}'/v1/schedules/{id}Get a schedule#
- Credential
- An API key or a dashboard session
- Roles
- Any role
Parameters
idstringpathrequiredthe schedule's id
Response
200Schedule
idstringrequirednamestring | nullcronstringrequiredfive fields, e.g. 0 3 * * *
timezonestringrequiredtargetobjectrequiredtypestringrequiredone of
queue,function,urlqueuestringfunctionstringurlstring
bodyanythe message each run sends
pausedbooleanrequiredlast_atstring (date-time) | nulllast_statusstring | nullone of
sent,failed,nullcreated_atstring (date-time)signing_secretstringon create with a URL target only, shown once
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl "https://api.ibel.ai/v1/schedules/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY"/v1/schedules/{id}Delete a schedule#
- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
idstringpathrequiredthe schedule's id
Response
200object
idstringdeletedboolean
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_json |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X DELETE "https://api.ibel.ai/v1/schedules/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY"- Credential
- An API key or a dashboard session
- Roles
- owner, admin, developer
Parameters
idstringpathrequiredthe schedule's id
Request bodyapplication/json
namestringcronstringtimezonestringbodyanypausedboolean
Response
200Schedule
idstringrequirednamestring | nullcronstringrequiredfive fields, e.g. 0 3 * * *
timezonestringrequiredtargetobjectrequiredtypestringrequiredone of
queue,function,urlqueuestringfunctionstringurlstring
bodyanythe message each run sends
pausedbooleanrequiredlast_atstring (date-time) | nulllast_statusstring | nullone of
sent,failed,nullcreated_atstring (date-time)signing_secretstringon create with a URL target only, shown once
Errors
| Status | Description |
|---|---|
| 400 | Bad request: bad_cron |
| 401 | unauthorized: missing, invalid, expired or revoked credential |
| 403 | Not allowed: forbidden |
| 404 | Not found: not_found |
| 500 | internal: an unexpected failure |
Example
curl -X PATCH "https://api.ibel.ai/v1/schedules/88e2fe1d-6d75-4de5-8c8f-27380ec66903" \
-H "Authorization: Bearer $KEY" \
-d '{"name":"emails","cron":"…","timezone":"…","body":null,"paused":true}'