API reference

POST/v1/posts/{id}/publish

Publish a post

Moves a draft into the publishing queue. When the profile or key requires approval, the post waits for an approver instead.

Required permission: `posts:write`

Accepts `profileId` to target a specific profile. Omit it to use the key’s home profile.

Base URL
https://api.cutedyno.com
Permission
posts:write
Idempotency
Send an Idempotency-Key header so a retry cannot apply twice. How it works
MCP tool
publish_post

Request

curl -X POST "https://api.cutedyno.com/v1/posts/POST_ID/publish" \
  -H "Authorization: Bearer $CUTEDYNO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "profileId": "profile_a1b2c3d4",
  "scheduledAt": "string",
  "approvers": [
    "string"
  ]
}'

Path parameters

idstringrequired

Post id.

Headers

Idempotency-Keystringoptional

A unique key so a retried request is not applied twice. Stored for 24 hours.

Body

profileIdstringoptional

Profile to act on. Defaults to the profile the API key was created in.

scheduledAtstringoptional

ISO 8601 datetime, for example 2026-08-01T12:00:00Z.

approversstring[]optional

Emails to request approval from. Defaults to the key owner when approval is required.

Response

Returns 200 with the following body.

objectrequired

Example

{
  "post": {
    "id": "a1b2c3d4-0000-4000-8000-000000000000",
    "status": "draft",
    "profileId": "profile_a1b2c3d4"
  }
}

Errors

Failures use the standard error envelope. Branch on code, never on the message.

StatusCodeWhen it happens
400invalid_state_transitionThe post is in a state that does not allow this operation, for example editing a post that already published.
400key_not_linked_to_userPublishing records a human actor. Recreate the key from the dashboard so it carries an owner.
401invalid_api_keyThe key does not exist, was revoked, or is malformed. Keys start with cdyn_live_.
403approval_requiredThis profile or key forces posts through review, and no approver could be determined. Supply approvers, or recreate the key so it carries an owner.
404not_foundThe resource does not exist inside the resolved profile.
429rate_limit_exceededToo many requests for this key. Honour the Retry-After header before retrying.
500internal_errorSomething failed on our side. Retry with the same Idempotency-Key; report the requestId if it persists.