Docs

Everything you can do in the dashboard also works over the REST API, the postramen CLI and MCP. Create an API key under API keys first.

REST API

Base URL https://postra.men/api/v1. Authenticate with Authorization: Bearer pr_….

GET  /me
GET  /accounts
GET  /accounts/{id}/creator-info
POST /media                 multipart "file"  or  {"url": "https://…"}
POST /posts                 create / schedule a post
GET  /posts?status=&limit=
GET  /posts/{id}
POST /posts/{id}/cancel     scheduled posts only
POST /posts/{id}/retry      failed posts only

Post a video from a URL, scheduled:

curl https://postra.men/api/v1/posts \
  -H "Authorization: Bearer $POSTRAMEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": 1,
    "media_urls": ["https://example.com/clip.mp4"],
    "caption": "Fresh bowl 🍜 #ramen",
    "privacy_level": "PUBLIC_TO_EVERYONE",
    "scheduled_at": "2026-11-20T19:30:00+08:00"
  }'

Upload a local file, then post it:

curl https://postra.men/api/v1/media -H "Authorization: Bearer $POSTRAMEN_API_KEY" -F [email protected]
# → {"id": "k3j…", "url": "https://postra.men/media/k3j….mp4", …}

curl https://postra.men/api/v1/posts -H "Authorization: Bearer $POSTRAMEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"account_id": 1, "media_ids": ["k3j…"], "caption": "hi", "privacy_level": "SELF_ONLY"}'

All post fields

account_id          int      required
media_ids           [string] uploaded media ids
media_urls          [string] public URLs to import
caption             string   video caption (≤2200) / photo description (≤4000)
title               string   photo title (≤90)
privacy_level       string   required when mode = direct
mode                string   "direct" (default) | "draft"
scheduled_at        RFC3339  omit to post now
disable_comment     bool     disable_duet bool   disable_stitch bool
brand_organic       bool     "Promotional content" label
brand_content       bool     "Paid partnership" label (not with SELF_ONLY)
is_aigc             bool     AI-generated label
auto_add_music      bool     photos only
cover_timestamp_ms  int      video cover frame

CLI

The same Go binary that runs this server. Build it with go build -o postramen . from the repo.

postramen login --key pr_… --url https://postra.men
postramen accounts
postramen creator 1
postramen post --account 1 --file clip.mp4 --caption "Fresh bowl 🍜" \
               --privacy PUBLIC_TO_EVERYONE --wait
postramen post --account 1 --file a.jpg --file b.jpg --title "Menu" \
               --privacy FOLLOWER_OF_CREATOR --at "2026-11-20 19:30"
postramen post --account 1 --url https://example.com/clip.mp4 --draft
postramen posts
postramen status 42 --wait

MCP

Postramen is a remote MCP server (Streamable HTTP) at https://postra.men/mcp. Tools: list_accounts, get_creator_info, upload_media, create_post, list_posts, get_post, cancel_post, retry_post.

Claude Code

claude mcp add --transport http postramen https://postra.men/mcp \
  --header "Authorization: Bearer pr_…"

Any client with a JSON config

{
  "mcpServers": {
    "postramen": {
      "type": "http",
      "url": "https://postra.men/mcp",
      "headers": { "Authorization": "Bearer pr_…" }
    }
  }
}