Skip to main content
The fastest path: sign up → copy your key → drop the SDK into your app.

1. Sign up + grab your key

1

Sign in with magic link

Go to asyncbase.dev and sign in. First login shows your sk_live_... key exactly once.
2

Copy the key

Stash it in your secret manager as ASYNCBASE_KEY. Rotate from /settings/api-keys if you lose it.

2. Install the SDK

npm i @asyncbase/sdk

3. Send a message

import { Queue } from "@asyncbase/sdk"

const q = new Queue(process.env.ASYNCBASE_KEY!)

const r = await q.send("emails", {
  to: "jane@example.com",
  subject: "hello from AsyncBase",
}, { delay: "30s" })

console.log(r.id)   // msg_abc123
The message is now in the queue. See it live at app.asyncbase.dev or tail the stream:
curl -N https://api.asyncbase.dev/v1/queues/emails/tail \
  -H "Authorization: Bearer $ASYNCBASE_KEY"

4. Consume it

Consumer groups use the “messages after now” cursor. Boot your consumer before enqueuing, or prime the group with an empty pull first. Otherwise existing messages are skipped.
import { Queue } from "@asyncbase/sdk"

const q = new Queue(process.env.ASYNCBASE_KEY!)

for await (const msg of q.consume("emails", {
  group: "workers",
  visibilitySeconds: 60,
})) {
  try {
    await send(msg.payload)
    await msg.ack()
  } catch {
    await msg.nack()   // exp-backoff, DLQ after N retries
  }
}

5. Run it under supervisor

Consumers are long-running processes. In production, deploy as a separate service (Fly Machine, Railway worker, K8s Deployment, or supervisor / systemd on a VPS).

What’s next

Idempotency

Make your producer retry-safe with Idempotency-Key.

FIFO + dedup

Order messages per-key using fifo_group.

Retries + DLQ

Configure backoff, alerts on DLQ threshold.

MCP server

Let Claude / Cursor operate your queues from your editor.