Developers · Public beta
Build with Earlybirdo
There are two ways in. The redemption API lets your app’s backend activate what customers pre-ordered. The MCP connector lets ChatGPT, Claude and other assistants manage your campaigns for you.
| Tool | Use it to | Signs in with |
|---|---|---|
| Redemption API | Activate a customer’s app perk from your server | A server key for one campaign |
| JavaScript client | Call the redemption API from Node or Deno with less code | The same server key |
| Command line | Try the API by hand, or script it | The same server key |
| MCP connector | Draft, publish and update campaigns from an AI assistant | Your Earlybirdo account |
Redemption API
For campaigns whose perk lives in your app, such as a lifetime plan or early access. Each customer gets a private code with their order. They enter it on your activation page, and your backend sends it to Earlybirdo, which ties it to that customer’s account in your app. A code works once.
- Open your app campaign in the creator dashboard and create a server key under App redemption API. It starts with
ebr_, is shown once, works only for that campaign, and expires after 90 days. - Keep the key on your server. Never put it in a mobile app, a web page, a QR code or an AI chat.
- Call the API from your backend with
Authorization: Bearer ebr_….
Base URL: https://godkmybltlcvaaifrzdf.supabase.co/functions/v1/redemption-api/v1
| Request | What it does |
|---|---|
POST /redemptions/preview | Checks a code and shows its campaign and perk, without using it. |
POST /redemptions | Uses the code for one of your accounts and returns a receipt. Needs an Idempotency-Key header, so a retry can’t activate twice. |
GET /redemptions/{id} | Rechecks a receipt: active, suspended (for example during a dispute) or revoked (refunded or cancelled). |
JavaScript client (the SDK)
There’s no package to install. The client is one small file with no dependencies, for Node 22+ or Deno. Download it into your backend and import it. It checks your inputs, sets the headers, refuses redirects and times out after 15 seconds. It’s for servers only, never browsers or apps.
import { createRedemptionClient } from './redemption-client.mjs';
const api = createRedemptionClient({
baseUrl: process.env.EARLYBIRDO_REDEMPTION_URL,
key: process.env.EARLYBIRDO_REDEMPTION_KEY,
});
const preview = await api.preview(code); // doesn't use the code
const receipt = await api.redeem({ code, externalUserId, idempotencyKey });
const latest = await api.status(receipt.data.id); // active, suspended or revokedErrors are thrown as RedemptionError, with the error code, HTTP status, requestId and retryAfter. Using another language? Any HTTP library works; the OpenAPI reference can generate a client for it.
Command line
There’s no Earlybirdo command-line tool to install. The API is plain HTTPS and JSON, so curl does everything. Put your key in an environment variable rather than typing it into the command.
# Check a code without using it
curl -sS "https://godkmybltlcvaaifrzdf.supabase.co/functions/v1/redemption-api/v1/redemptions/preview" \
-H "Authorization: Bearer $EARLYBIRDO_REDEMPTION_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"0123-4567-89ab-cdef"}'
# Activate it for one of your app's accounts
curl -sS "https://godkmybltlcvaaifrzdf.supabase.co/functions/v1/redemption-api/v1/redemptions" \
-H "Authorization: Bearer $EARLYBIRDO_REDEMPTION_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: op_2b7f0c1e9d" \
-d '{"code":"0123-4567-89ab-cdef","external_user_id":"user_8412"}'
# Recheck a saved receipt
curl -sS "https://godkmybltlcvaaifrzdf.supabase.co/functions/v1/redemption-api/v1/redemptions/RECEIPT_ID" \
-H "Authorization: Bearer $EARLYBIRDO_REDEMPTION_KEY"Previewing is safe to repeat. Activating uses the code, so test with an order of your own.
MCP connector for ChatGPT and Claude
The Model Context Protocol (MCP) lets an AI assistant use Earlybirdo’s tools for you. Ask it to draft a campaign from your notes, check how sales are going, or post an update, and it acts on your account.
Connector URL: https://earlybirdo.com/mcp
- Add the connector. In Claude, open Settings → Connectors → Add custom connector. In ChatGPT, add it as a connector or app under Settings (this may need developer mode). Paste the URL above.
- Sign in. Your assistant sends you to Earlybirdo. Sign in, read what it’s asking for, and choose Allow. No password or key is ever shared with the assistant.
- Ask. For example: “Draft a pre-order campaign for my ceramic mugs, shipping in March, $28 each.”
- Disconnect any time from your assistant’s connector settings.
| Tool | What it does |
|---|---|
get_creator_status | Your creator page, identity and payment setup, plan, and how many campaigns you can still publish. |
list_campaigns | Your campaigns, a page at a time. |
get_campaign | One campaign: perks, milestones, recent updates, sales totals, and anything stopping a draft from publishing. |
create_campaign_draft | Start a draft. Prices are in US dollars. |
update_campaign_draft | Edit a draft. Fields you leave out, and images added on the website, are kept. |
publish_campaign | Publish a draft. This uses a campaign credit. |
post_update | Post a progress update. Customers and followers are emailed. |
complete_milestone | Mark a milestone done. Customers and followers are emailed. |
announce_delay | Announce a new delivery date. Customers who don’t agree to the delay can get refunds. |
close_campaign | Stop taking pre-orders early. This can’t be undone. |
What it can’t do: see customers, orders or messages; refund, cancel or charge; upload images; change identity, payment or plan settings; or moderate. Do those on the website.
Building your own MCP client? The connector speaks Streamable HTTP and uses OAuth 2.1 with PKCE. Clients find the sign-in server at /.well-known/oauth-protected-resource/mcp, and each client registers itself. Tokens only work for this connector, and a connected assistant can only reach your own campaigns.
Limits, status and support
- Everything here is in public beta and may change. The redemption API is versioned (
/v1). - The redemption API allows 120 requests a minute per campaign. Back off when you get a 429 and honour
Retry-After. - Apple and Google have their own rules for unlocking digital content in apps. The redemption API doesn’t exempt you from them; the API guide explains more.
- Questions or a bug? Email hello@earlybirdo.com with the
request_idfrom the response.