Skip to content

List queues

Last updated 

GET /spools/{spool}/queues

One name-ordered page of the spool's queues, each with its settings and lifecycle state; counts are on the spool's stats. Keyset pagination: a paged walk never duplicates or skips a queue that exists throughout it, but settings and membership may drift between pages.

Sample ​

sh
curl -X GET "$SPOOLER_API/spools/<spool>/queues" \
  -H "Authorization: Bearer $SPOOLER_KEY"

Parameters ​

NameInTypeRequiredDescription
spoolpathIdentName, 1–63 chars, ^[A-Za-z0-9_:-]+$yesThe spool name.
limitqueryinteger, 1–1,000, default 100noMax queues per page.
afterqueryCursor, 1–256 charsnoResume the listing just past this cursor (the previous page's next); absent starts at the first queue.
matchquerystringnoKeep only queue names matching this RE2 regular expression, unanchored (anchor with ^ and $ for an exact match); absent lists everything. Pagination walks matching names only.

Responses ​

StatusDescription
200One page of the spool's queues.
400The request is malformed; the kind names the problem.
401The API key is missing or not recognized.
402The account is suspended.
403A plan limit refuses the operation; the kind names it. A 403 without a kind, on any operation, means the API key is blocked.
404The spool or queue does not exist; the kind says which.
429The per-account request rate cap is exceeded. The body names the kind (rate_limited); the wait is the Retry-After header and is not repeated in the body. Headers are as structured as the body, and this one is the header HTTP defines for a wait.
503The spool is momentarily unavailable.

200 body shape ​

The shape, not a sample: values are the wire types; ? marks an optional field.

jsonc
{
  // One page of the spool's queues, ordered by name in byte order.
  items: [
    {
      // The queue's name.
      //
      // Length:  1–63 chars
      // Pattern: ^[A-Za-z0-9_:-]+$
      name: string,

      // The time of the queue creation; a recreation under the same name
      // gets a new one, so it identifies the queue across reuse of the
      // name.
      createdAt: string,

      // The queue's lifecycle state. draining refuses new messages and is
      // deleted once consumers empty it (failed messages block the drain
      // until discarded or recovered); deleting refuses all operations
      // while the deletion completes. Deleted queues leave the listing.
      state: "active" | "draining" | "deleting",

      // The queue's current settings, as applied.
      settings: {
        // Seconds before an unacked delivery is auto-nacked; 0 means the
        // timeout is disabled.
        leaseTimeoutSeconds: integer,

        // Redeliveries before a message is failed; 0 means no retries.
        maxRetries: integer,

        // Seconds a dedup key is remembered; 0 means dedup is disabled.
        dedupWindowSeconds: integer,

        // Seconds a message is kept before it is discarded, as set. At
        // least a minute today; 0 is reserved to mean no expiry, so treat
        // it as such.
        retentionSeconds: integer,

        // The retention actually enforced: retentionSeconds bounded by
        // the plan's retention limit. The clock starts when a message
        // first becomes visible (a send delay does not count) and keeps
        // running: a leased message is not expired while held, but nack,
        // release and a lease timeout return it with the clock as it was.
        // Failing restarts the clock, and so does recovering. A failed
        // message expires like any other.
        effectiveRetentionSeconds: integer,

        // The cap on the rate Recv hands out messages; all zero means no
        // limit.
        recvRateLimit: {
          // The token-bucket refill interval in microseconds; 0 means no
          // limit.
          intervalMicros: integer,

          // The bucket size; 0 means no limit.
          burst: integer,
        },
      },
    }
  ],

  // Cursor of the following page (pass as after); absent when this page
  // ends the listing.
  //
  // Length: 1–256 chars
  next?: string,
}

429 headers ​

HeaderDescription
Retry-AfterSeconds until the next request is admitted, whole and at least 1; always the delay-seconds form, never an HTTP-date.