putty
API ReferenceArtifacts

Create a post draft

Creates a `PublishRequest` in the `draft` state. **This route never calls Zernio.** The dashboard renders a preview per platform from `platforms` and shows the `approveUrl`; only a click on that link — `POST /social/posts/{id}/approve` — reaches Zernio's create-post. Pass `scheduledFor` to schedule, or omit it to publish as soon as the user approves. Media go to Zernio as short-lived signed Garage URLs minted at approval time, so the asset ids here are putty-internal and never leave putty as a path.

POST
/social/posts

Creates a PublishRequest in the draft state. This route never calls Zernio. The dashboard renders a preview per platform from platforms and shows the approveUrl; only a click on that link — POST /social/posts/{id}/approve — reaches Zernio's create-post. Pass scheduledFor to schedule, or omit it to publish as soon as the user approves. Media go to Zernio as short-lived signed Garage URLs minted at approval time, so the asset ids here are putty-internal and never leave putty as a path.

Authorization

bearerAuth
AuthorizationBearer <token>

A bearer token. The Account routes accept a Privy access token; the MCP transport accepts an sk- API key issued by POST /account/api-keys.

In: header

Request Body

application/json

The draft to create.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/social/posts" \  -H "Content-Type: application/json" \  -d '{    "platforms": [      {        "accountId": "string",        "platform": "string",        "text": "string"      }    ]  }'
{  "id": "string",  "projectId": "string",  "platforms": [    {      "accountId": "string",      "platform": "string",      "text": "string"    }  ],  "assetIds": [    "string"  ],  "scheduledFor": "string",  "status": "draft",  "zernioPostId": "string",  "lastError": "string",  "approveUrl": "string",  "createdAt": "string",  "updatedAt": "string"}