Email infrastructure for AI agents

Give your agents
an email address

Send and receive email programmatically via a REST API. Create an inbox in one API call. No IMAP, no POP3, no UI — just an API.

terminal
# Create an inbox — one API call, instant email address
curl -X POST https://api.apimail.cc/v1/inboxes/ \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

# Response:
{ "email": "swiftfox482@agentcourier.cc", "status": "active" }

Live Demo

See it work in seconds

Get a real email address instantly. Send it an email from your phone or laptop and watch it arrive.

10-Second Setup

Three calls. Full email.

Create an inbox, receive email, read it. No DNS, no domain verification, no setup. Just an API key.

1

Create an inbox

POST with an empty body. You get a unique email address on the shared domain instantly.

curl -X POST https://api.apimail.cc/v1/inboxes/ \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

# => { "email": "swiftfox482@agentcourier.cc" }
2

Send email to that address

From any email client, another API, or another agent. It arrives in seconds.

# Send from Gmail, Outlook, or programmatically
# to: swiftfox482@agentcourier.cc
3

Read your mail

Fetch messages by inbox email address. Filter by unread, search by subject or body.

curl https://api.apimail.cc/v1/inboxes/swiftfox482@agentcourier.cc/messages \
  -H "X-API-Key: $API_KEY"

# => { "items": [{ "subject": "Hello!", "from_addr": "..." }] }

Everything you need

Built for programmatic email

Inbound + Outbound

Receive email at any address. Send, reply, reply-all, and forward with full threading support.

Instant Inboxes

Create an inbox with one POST. Get a working email address on the shared domain in milliseconds.

Custom Domains

Bring your own domain with full DNS verification, SPF, DKIM signing, and DMARC compliance.

Webhooks

Real-time notifications on message.received, message.sent, and message.rejected with HMAC-SHA256 signatures.

Threads & Search

Automatic conversation threading via email headers. Full-text search across subjects, senders, and bodies.

Attachments

Send and receive attachments. Dangerous file types are automatically blocked. 10MB total per send.

Labels

Tag messages with arbitrary labels. Filter your inbox by label to build custom workflows.

Idempotent Sends

Include an idempotency key to safely retry sends without duplicates. Get 409 on conflict.

Scoped API Keys

Read, send, and admin scopes. Create limited keys for dashboards or specific agents.

For AI Agents

Point your LLM at the skill file

AgentCourier publishes a machine-readable skill file at a public URL. Give it to any LLM or agent framework and they can send and receive email autonomously.

Give this to your agent
# The skill file contains the complete API reference,
# authentication guide, code examples, and tips for AI agents.
# It's served as plain markdown — no auth required.

Skill file URL: https://api.apimail.cc/skill.md

# OpenAPI spec for programmatic discovery:
OpenAPI URL:   https://api.apimail.cc/openapi.json

How to use with popular frameworks

Claude / AnthropicAdd the skill file URL to your system prompt or tool instructions.
system_prompt = """
You have access to email via AgentCourier.
Read the full API guide: https://api.apimail.cc/skill.md
Your API key is: om_...
"""
OpenAI / GPTInclude in your function calling setup or system instructions.
messages = [
  {"role": "system", "content": """
    You can send and receive email using the AgentCourier API.
    Full documentation: https://api.apimail.cc/skill.md
    API key: om_...
    Use curl or HTTP requests to interact with the API.
  """}
]
Any HTTP-capable agentFetch the skill file at runtime for always-up-to-date docs.
# Fetch the skill file dynamically
curl -s https://api.apimail.cc/skill.md

# Or the OpenAPI spec for structured discovery
curl -s https://api.apimail.cc/openapi.json

Tips for agents

  • Start with shared domain — no DNS setup, instant inbox. Use custom domains for production.
  • Use email addresses as IDs — all inbox endpoints accept hello@example.com instead of UUIDs.
  • Fetch + mark read in one call — use ?mark_read=true on GET to prevent reprocessing.
  • Use webhooks — register a message.received webhook instead of polling.
  • Prefer body_text — plain text is easier for LLMs to parse than HTML.

API Reference

Simple, RESTful, complete

Every endpoint documented with request/response schemas. Interactive docs available at the Swagger UI.

MethodEndpoint
POST/v1/inboxes/
GET/v1/inboxes/{email}/messages
GET/v1/messages/{id}
POST/v1/messages/send
POST/v1/messages/reply
POST/v1/messages/forward
POST/v1/webhooks/
POST/v1/domains/
POST/v1/domains/{id}/verify
GET/v1/threads/