Skip to content
couryo

Developer guideGetting started

Quickstart

Send your first email with Couryo in 5 minutes, from sign-up to the message timeline.

View as Markdown

In 5 minutes you create an account, verify a domain, get a key and send your first email.

1. Create your account#

Sign in at app.couryo.com with your Google account. Every account starts on the Free plan and at level 0 (sandbox): up to 25 emails per day, only to the account's own addresses, which is enough to test your integration (before verifying a domain, use the teste@sandbox.couryo.com sender). See trust levels.

2. Add and verify your domain#

In the dashboard, under Domains, add the domain your email will come from (for example, example.com).

  • Using Cloudflare? Click Connect Cloudflare. Couryo creates the records for you.
  • Another DNS provider? Copy each record shown on screen. The status of each one updates live.

Once DKIM, return path and DMARC are correct, the domain becomes verified and your account moves to level 1 (100 per day). Your root domain's SPF stays untouched. The Free plan allows 1 domain. Details in Domains and DNS.

3. Create an API key#

Under Keys, create a key with the send scope. The full key is shown only once: store it in your secrets manager or .env.

Terminal
export COURYO_API_KEY="ck_live_..."

Want to test without delivering anything? Use a ck_test_ key. See Test mode.

4. Send#

cURL
curl https://api.couryo.com/v1/emails \
  -H "Authorization: Bearer $COURYO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: welcome-usr-123" \
  -d '{
    "from": "Example <hi@example.com>",
    "to": ["you@example.com"],
    "subject": "Hello from Couryo",
    "html": "<p>It works!</p>",
    "text": "It works!"
  }'
Node.js
const res = await fetch("https://api.couryo.com/v1/emails", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.COURYO_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "welcome-usr-123",
  },
  body: JSON.stringify({
    from: "Example <hi@example.com>",
    to: ["you@example.com"],
    subject: "Hello from Couryo",
    html: "<p>It works!</p>",
    text: "It works!",
  }),
});
console.log(res.status, await res.json());

The response is 202 Accepted:

Response
{ "id": "msg_9w2k7c1x0d4e5f6g", "status": "queued" }

5. Follow the delivery#

A send key can only send. To read the timeline, use a key with the read scope (or open the email in the dashboard):

cURL
curl https://api.couryo.com/v1/emails/msg_9w2k7c1x0d4e5f6g \
  -H "Authorization: Bearer $COURYO_READ_KEY"

The events field lists every step (accepted, queued, sent, delivered...) with time, receiving server, SMTP code and a plain-language explanation. See Events and timeline.

Next steps#

  • Get events in your system with webhooks.
  • Avoid duplicate sends with idempotency.
  • Use Couryo from your AI agent with the MCP server.
  • Rather not touch code? SMTP is coming soon.

Official Node and PHP SDKs are on the way. Until then, any HTTP client works, as in the examples above.