Skip to content

Queue API Reference

queue/v1 API. See Queue for conceptual background.

Create a queue, provisioning the backing immutable edge table with the fixed queue schema (seq, value, and a server-assigned ULID message id).

POST /queue/v1/namespaces/{namespace}/queues
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
BodyqueueRequiredQueue name
BodystorageRequiredStorage URI (e.g., datastore://<namespace>/<table>)
BodypartitionsOptional (default: 30)Partition count, fixed at creation (minimum 1)

QueueDescriptorResponse - Queue metadata

ParameterValue
AuthorizationYOUR_API_KEY
namespaceyour_namespace
Terminal window
# POST /queue/v1/namespaces/your_namespace/queues
curl -X POST \
"http://ab.example.com/queue/v1/namespaces/your_namespace/queues" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"queue": "your_queue",
"storage": "datastore://your_namespace/your_queue",
"partitions": 30
}'
{
"namespace": "your_namespace",
"queue": "your_queue",
"partitions": 30,
"storage": "datastore://your_namespace/your_queue"
}

Get a queue’s metadata.

GET /queue/v1/namespaces/{namespace}/queues/{queue}
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name

QueueDescriptorResponse - Queue metadata

Terminal window
# GET /queue/v1/namespaces/your_namespace/queues/your_queue
curl "http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue" \
-H "Authorization: YOUR_API_KEY"
{
"namespace": "your_namespace",
"queue": "your_queue",
"partitions": 30,
"storage": "datastore://your_namespace/your_queue"
}

Activate or deactivate a queue. A queue must be disabled before it can be deleted.

PUT /queue/v1/namespaces/{namespace}/queues/{queue}/enable
PUT /queue/v1/namespaces/{namespace}/queues/{queue}/disable
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name

QueueDescriptorResponse - Queue metadata

Terminal window
# PUT /queue/v1/namespaces/your_namespace/queues/your_queue/disable
curl -X PUT \
"http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue/disable" \
-H "Authorization: YOUR_API_KEY"

Delete a queue. The queue must be disabled first; deleting an active queue returns 409 Conflict.

DELETE /queue/v1/namespaces/{namespace}/queues/{queue}
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name
Terminal window
# DELETE /queue/v1/namespaces/your_namespace/queues/your_queue
curl -X DELETE \
"http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue" \
-H "Authorization: YOUR_API_KEY"

204 No Content on success; 409 Conflict if the queue is still enabled.

Get a queue’s partition count, for consumers that fan a poll loop across 0 .. partitions-1.

GET /queue/v1/namespaces/{namespace}/queues/{queue}/partitions
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name

QueuePartitionsResponse - The partition count

Terminal window
# GET /queue/v1/namespaces/your_namespace/queues/your_queue/partitions
curl "http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue/partitions" \
-H "Authorization: YOUR_API_KEY"
{
"namespace": "your_namespace",
"queue": "your_queue",
"partitions": 30
}

Append messages to the queue. Each message is routed to a partition by its key; the server assigns a ULID id, and seq orders it within the partition.

POST /queue/v1/namespaces/{namespace}/queues/{queue}/messages
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name
BodymessagesRequiredList of messages, each with key, seq, and value

EnqueueRequest - Payload containing messages

EnqueueResponse - Per-message results

Terminal window
# POST /queue/v1/namespaces/your_namespace/queues/your_queue/messages
curl -X POST \
"http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue/messages" \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"key": "user1", "seq": 1000, "value": {"body": "hello"}},
{"key": "user1", "seq": 1001, "value": {"body": "world"}}
]
}'
{
"accepted": 2,
"results": [
{ "partition": 7, "id": "01JT7Q0Z8B3N5Y6W9XKQRVMH2D", "status": "CREATED" },
{ "partition": 7, "id": "01JT7Q0Z8CM4A1E8ZPXW3G5T7F", "status": "CREATED" }
]
}

Read one partition forward in seq order. The response’s offset is the cursor for the next poll, and the value to commit once the batch is processed.

GET /queue/v1/namespaces/{namespace}/queues/{queue}/partitions/{partition}/poll
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name
PathpartitionRequiredPartition to read (0 .. partitions-1)
QuerylimitOptional (default: 100)Max messages per page (maximum 1000)
QueryoffsetOptionalRead messages with seq > offset (exclusive)
QueryuntilOptionalRead messages with seq <= until (inclusive)

PollResponse - One partition’s page

Terminal window
# GET /queue/v1/namespaces/your_namespace/queues/your_queue/partitions/7/poll
curl "http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue/partitions/7/poll?limit=100&offset=1000" \
-H "Authorization: YOUR_API_KEY"
{
"messages": [
{
"partition": 7,
"id": "01JT7Q0Z8CM4A1E8ZPXW3G5T7F",
"seq": 1001,
"value": { "body": "world" }
}
],
"offset": 1001,
"hasNext": false
}

Commit a partition up to an offset: every message with seq <= offset is deleted. Assumes one logical consumer per partition; see Queue.

DELETE /queue/v1/namespaces/{namespace}/queues/{queue}/partitions/{partition}/messages
LocationParameterRequiredDescription
HeaderAuthorizationOptionalAuthentication key (reserved for future use)
PathnamespaceRequiredTarget namespace
PathqueueRequiredTarget queue name
PathpartitionRequiredPartition to commit (0 .. partitions-1)
QueryoffsetRequiredDelete every message with seq <= offset

QueueCommitResponse - How many messages were deleted

Terminal window
# DELETE /queue/v1/namespaces/your_namespace/queues/your_queue/partitions/7/messages
curl -X DELETE \
"http://ab.example.com/queue/v1/namespaces/your_namespace/queues/your_queue/partitions/7/messages?offset=1001" \
-H "Authorization: YOUR_API_KEY"
{
"namespace": "your_namespace",
"queue": "your_queue",
"partition": 7,
"committed": 2
}
data class QueueCreateRequest(
val queue: String, // Queue name
val storage: String, // Storage URI
val partitions: Int = 30, // Partition count, fixed at creation (minimum 1)
)
data class QueueDescriptorResponse(
val namespace: String,
val queue: String,
val partitions: Int,
val storage: String,
)
data class QueuePartitionsResponse(
val namespace: String,
val queue: String,
val partitions: Int,
)
data class EnqueueRequest(
val messages: List<EnqueueMessage>,
)
data class EnqueueMessage(
val key: String, // Routes to a partition
val seq: Long, // Orders within the partition; may encode a due time
val value: Any? = null // Opaque payload (JSON)
)
data class EnqueueResponse(
val accepted: Int, // Count of messages with status CREATED
val results: List<EnqueueResult>,
)
data class EnqueueResult(
val partition: Int, // Partition the message was routed to
val id: String, // Server-assigned ULID
val status: String, // CREATED on success
)
data class PollResponse(
val messages: List<PolledMessage>, // In seq order
val offset: Long?, // Cursor for the next poll (highest seq seen)
val hasNext: Boolean, // Whether more messages remain in the range
)
data class PolledMessage(
val partition: Int,
val id: String, // ULID message id
val seq: Long,
val value: Any?,
)
data class QueueCommitResponse(
val namespace: String,
val queue: String,
val partition: Int,
val committed: Int, // Messages deleted by this commit
)