Send real letters from code.
One API call. One physical letter. Delivered anywhere in Germany.
Built for AI agents and automation.
curl \
-X POST \
https://agentic-letters.com/api/letters \
-H "Authorization: Bearer al_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"pdf": "<base64-encoded A4 PDF>",
"recipient": {
"name": "Max Mustermann",
"street": "Musterstraße 1",
"zip": "10115",
"city": "Berlin"
}
}'How it works
Buy credits
Pay with Stripe. Get your API key via email. No signup, no login.
Send a request
POST a base64-encoded A4 PDF with a recipient address. That’s it.
We mail it
Your letter is printed, enveloped, and dropped in the mailbox. Next business day.
For AI Agents
SKILLGive your AI agent the ability to send physical letters. Works with OpenClaw and any agent framework that supports tool/skill files.
Hey, install this as a skill please: agentic-letters.com/SKILL.md
The SKILL.md is a plain text file your agent reads to learn how to use the API. You can review it here before installing.
# SKILL.md - agentic-letters
Send physical letters anywhere in Germany with a single API call.
## When to use
Use this skill when the user wants to send a physical letter, document, or legal notice to a German address.
**Example triggers:**
- "Send a cancellation letter to my gym"
- "Mail this PDF to Deutsche Telekom"
- "I need to send a DSGVO data access request"
- "Send a letter to my landlord"
- "Mail this to the insurance company"
- "Send a formal objection to this address"
- "Write and send a letter to this address"
- "Ship this PDF via postal mail"
- "I need to mail a legal notice"
- "Post this cancellation letter"
For details on supported formats, limits, and pricing, see the FAQ: https://agentic-letters.com/faq
## Setup & API key
This skill requires an API key. Check if one exists:
```bash
cat ~/.openclaw/secrets/agentic_letters.env 2>/dev/null
```
API Reference
/api/lettersSubmit a letter for delivery. Costs 1 credit.
{
"pdf": "<base64 A4 PDF>",
"recipient": {
"name": "Max Mustermann",
"street": "Musterstraße 1",
"zip": "10115",
"city": "Berlin",
"country": "DE"
},
"label": "Gym Cancellation"
}{
"id": "550e8400-e29b-41d4-a716",
"status": "queued",
"label": "Gym Cancellation",
"created_at": "2026-02-24T19:00:00Z",
"credits_remaining": 4
}/api/letters/:idCheck the status of a letter.
{
"id": "550e8400-e29b-41d4-a716",
"status": "sent",
"recipient_name": "Max Mustermann",
"recipient_street": "Musterstraße 1",
"recipient_city": "Berlin",
"recipient_zip": "10115",
"recipient_country": "DE",
"label": "Gym Cancellation",
"created_at": "2026-02-24T19:00:00Z",
"updated_at": "2026-02-25T10:30:00Z"
}/api/lettersList all your letters.
{
"letters": [
{
"id": "550e8400-e29b-41d4-a716",
"status": "sent",
"recipient_name": "Max Mustermann",
"recipient_city": "Berlin",
"label": "Gym Cancellation",
"created_at": "2026-02-24T19:00:00Z",
"updated_at": "2026-02-25T10:30:00Z"
}
]
}All endpoints require a Bearer token:
Authorization: Bearer al_your_api_keyPricing
1 credit = 1 letter. No hidden fees. No subscription.