The endpoint
https://api.amator.app/api/v1/public/postsSend a JSON body and put the key in the X-API-KEY header (not Authorization: Bearer).
Field names are camelCase, in requests and responses: clubId, createdAt. A name with an underscore, such as club_id, is refused with 400 PUBLIC_API_SNAKE_CASE_FIELD, and the response names the field to send instead.
curl -X POST https://api.amator.app/api/v1/public/posts \
-H "X-API-KEY: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"content":"Training moved to 19:00 tonight"}'
A successful post returns 201 with a link to it:
HTTP/1.1 201 Created
{
"success": true,
"data": {
"id": "…",
"destination": "club",
"clubId": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-10-05T18:00:00.000Z",
"url": "https://amator.app/posts/…",
"media": []
},
"requestId": "…"
}
Photos
To publish photos, send the same fields as multipart/form-data instead of JSON and add up to 4 files in photos — they appear in the order you send them. Text only, photos only or both: content may be left out when at least one photo is sent.
curl -X POST https://api.amator.app/api/v1/public/posts \
-H "X-API-KEY: YOUR_API_KEY_HERE" \
-H "Idempotency-Key: 9b2f6d4e-1c3a-4f5b-8e7d-2a1c0b9f8e7d" \
-F content="Match day! Kick-off at 18:00" \
-F clubId=00000000-0000-0000-0000-000000000000 \
-F photos=@a.jpg \
-F photos=@b.jpg
Limits: 40 photos a day per API key; the whole request at most 4 photos and the text. It is all or nothing — if anything fails, no photo is kept and nothing is published. Send an Idempotency-Key header (a UUID) and a retry after a timeout returns the first post instead of publishing it twice.