Public betaExpect changes and occasional bugs.About the beta

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.

ToolUse it toSigns in with
Redemption APIActivate a customer’s app perk from your serverA server key for one campaign
JavaScript clientCall the redemption API from Node or Deno with less codeThe same server key
Command lineTry the API by hand, or script itThe same server key
MCP connectorDraft, publish and update campaigns from an AI assistantYour 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.

  1. 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.
  2. Keep the key on your server. Never put it in a mobile app, a web page, a QR code or an AI chat.
  3. Call the API from your backend with Authorization: Bearer ebr_….

Base URL: https://godkmybltlcvaaifrzdf.supabase.co/functions/v1/redemption-api/v1

RequestWhat it does
POST /redemptions/previewChecks a code and shows its campaign and perk, without using it.
POST /redemptionsUses 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 revoked

Errors 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.

Download redemption-client.mjs

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

  1. 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.
  2. 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.
  3. Ask. For example: “Draft a pre-order campaign for my ceramic mugs, shipping in March, $28 each.”
  4. Disconnect any time from your assistant’s connector settings.
ToolWhat it does
get_creator_statusYour creator page, identity and payment setup, plan, and how many campaigns you can still publish.
list_campaignsYour campaigns, a page at a time.
get_campaignOne campaign: perks, milestones, recent updates, sales totals, and anything stopping a draft from publishing.
create_campaign_draftStart a draft. Prices are in US dollars.
update_campaign_draftEdit a draft. Fields you leave out, and images added on the website, are kept.
publish_campaignPublish a draft. This uses a campaign credit.
post_updatePost a progress update. Customers and followers are emailed.
complete_milestoneMark a milestone done. Customers and followers are emailed.
announce_delayAnnounce a new delivery date. Customers who don’t agree to the delay can get refunds.
close_campaignStop 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.

Publishing, posting updates, completing milestones, announcing delays and closing a campaign affect real customers. Assistants are told to ask you first, but turn on your assistant’s approval prompts for these tools too: Earlybirdo can’t check that it asked.

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_id from the response.