API Reference
Complete API documentation with endpoints and examples.
#Table of Contents
#Base URL
https://api.yeetpost.com/api/v2
#Authentication
All API requests require an API key. Include it in the x-api-key header:
x-api-key: <your-api-key>
Get your API key from https://app.yeetpost.com/app/settings.
#Supported Platforms
| Platform | Default Slug | Usage Type | Length Limits | Docs |
|---|---|---|---|---|
email | Message | See docs | Docs | |
linkedin | Post | See docs | Docs | |
| Slack | slack | Message | See docs | Docs |
| SMS | sms | Message | See docs | Docs |
| X (Twitter) | x | Post | See docs | Docs |
#Slugs
Each connection has a unique slug used to identify it in API calls. When you connect a platform for the first time, it uses the default slug (e.g., linkedin, x).
If you connect the same platform multiple times, subsequent connections include your username: alexdoe_linkedin, alexdoe_x. Further duplicates get numbered: alexdoe_linkedin_2, etc. You can also customize slugs in the dashboard.
#Usage Types
Usage is tracked monthly based on your plan. There are two types:
- Posts: Content published to social platforms (LinkedIn, X)
- Messages: Notifications to verified recipient or channel (SMS, Email, Slack)
#Endpoints
#GET /connections
List all connected accounts for the authenticated user.
Request
curl https://api.yeetpost.com/api/v2/connections \
-H "x-api-key: <your-api-key>"Response
200 OK
{
"connections": [
{ "slug": "linkedin", "description": "Alex Doe (LinkedIn)" },
{ "slug": "x", "description": "@alexdoe (X)" },
{ "slug": "sms", "description": "+1 555 123 4567 (SMS)" },
{ "slug": "email", "description": "alex@example.com (Email)" },
{ "slug": "slack", "description": "#general (Slack)" }
]
}#POST /post/{connection}
Post content to a connected platform.
Request
curl -X POST https://api.yeetpost.com/api/v2/post/linkedin \
-H "x-api-key: <your-api-key>" \
-d 'Hello, world!'Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
connection | string | Yes | The connection slug (e.g., linkedin, x, sms) |
Headers
| Header | Value | Required | Description |
|---|---|---|---|
| x-api-key | <your-api-key> | Yes | Your API key |
Request Body
The request body is plain text containing the content to post. Must not be empty.
Responses
200 OK - LinkedIn/X
{
"platform": "linkedin",
"link": "https://www.linkedin.com/feed/update/urn:li:share:1234567890"
}200 OK - SMS/Email/Slack
{
"platform": "sms",
"sent": true
}#Error Responses
All errors follow this structure:
{
"error": "<error_code>",
"message": "<human-readable message>",
"reqId": "<request_id>" // Only for 422 and 500 errors
}#400 Bad Request
Invalid request parameters or connection not found.
Example response:
{
"error": "invalid_connection",
"message": "Connection 'linkedin' not found. Available connections: x, sms"
}#401 Unauthorized
Missing or invalid API key.
Example response:
{
"error": "unauthorized",
"message": "Unauthorized (missing API key; set x-api-key header)"
}#403 Forbidden
Monthly usage limit exceeded.
Example response:
{
"error": "limit_exceeded",
"message": "You have reached your monthly post limit (5). Upgrade your plan for more posts."
}#422 Unprocessable Entity
The platform rejected the post (e.g., duplicate content, policy violation).
Example response:
{
"error": "platform_rejected",
"message": "LinkedIn: duplicate post was detected",
"reqId": "req_12345678"
}#500 Internal Server Error
Unexpected server error.
Example response:
{
"error": "internal_server_error",
"message": "An unexpected error occurred",
"reqId": "req_12345678"
}