yeetpostyeetpost

Quickstart

One HTTP call posts to LinkedIn, X, Bluesky, Discord, Telegram and Mastodon. No SDK, no OAuth dance in your app: you connect the accounts once in the dashboard, then post to them by slug.


Building a product where your users connect their accounts? The flow below is the same, but you will want one profile per customer, scoped keys and webhook routing. Start at build a platform after your first post.

#1. Connect an account

Sign in at app.yeetpost.com and connect LinkedIn or X. Each connection gets a slug, which is how you address it from the API: linkedin, x, alexdoe_linkedin.

#2. Create an API key

Keys live at app.yeetpost.com/app/api. Your first key is created at sign-up, already filled into the commands on that page. Keep it in an environment variable, not in your source.

bash
export YEETPOST_API_KEY="yp_secret_..."

#3. Yeet

The one-liner endpoint takes the post as the request body, as plain text. This is the whole thing.

curl -X POST "https://api.yeetpost.com/api/v2/post/linkedin" \
  -H "x-api-key: $YEETPOST_API_KEY" \
  -H "content-type: text/plain" \
  -d 'shipped the new api docs today'

A post to LinkedIn or X comes back with a permalink: { "platform": "linkedin", "link": "https://..." }.

#Not sure what you can post to?

Ask. Every slug you can use is one call away.

curl "https://api.yeetpost.com/api/v2/connections" \
  -H "x-api-key: $YEETPOST_API_KEY"
response
{
  "connections": [
    {
      "id": "3f2a1b4c-5d6e-4f70-8a9b-0c1d2e3f4a5b",
      "slug": "linkedin",
      "platformId": "linkedin",
      "description": "Alex Doe (LinkedIn)",
      "timezone": "Europe/Helsinki",
      "queueSlots": [
        {
          "weekday": 1,
          "time": "09:00"
        },
        {
          "weekday": 4,
          "time": "17:30"
        }
      ]
    },
    {
      "id": "9c8b7a65-4d3e-4f21-8b0a-7c6d5e4f3a2b",
      "slug": "x",
      "platformId": "x",
      "description": "@alexdoe (X)",
      "timezone": "UTC",
      "queueSlots": []
    }
  ]
}

#Beyond a shell one-liner

For anything real, use the JSON endpoint. It posts to several connections at once, gives you a post id per connection, takes an Idempotency-Key so retries are safe, and can schedule.

curl -X POST "https://api.yeetpost.com/api/v2/posts" \
  -H "x-api-key: $YEETPOST_API_KEY" \
  -H "content-type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "text": "shipped the new api docs today",
  "connectionSlugs": [
    "linkedin",
    "x"
  ]
}'
Read the per-item status, not just the HTTP status. One connection failing does not fail the request: you get a 200 with a failed item in results. The request as a whole only errors out (400 invalid_connection) when none of the slugs match a connection of yours.

#Where to next

  • Posting: fan-out, scheduling and cancelling.
  • Webhooks: find out how a scheduled post went.
  • MCP: let an agent post without writing glue.
  • API reference: every endpoint, generated from the spec.