Posts

Create a post

Publishes a post now; JSON, files as base64. Text is never stored. A publish record (account, post id, time) is kept, listed by GET /v1/drafts?status=published and removed when the post is deleted. To publish later, create a Draft at POST /v1/drafts.

post/v1/{account_id}/posts

Request

  • Base URL: https://api.curviate.com
  • URL: https://api.curviate.com/v1/{account_id}/posts
  • Auth: HTTP bearer

Path parameters

account_idstring required

The account ID (acc_...) to post as.

Request body

textstring required

Post body text (1-3000 chars). Inline @mentions live in the text (e.g. "@ACoAA..."). Not stored or logged.

quoted_post_idstring

The post to quote or repost. Empty text + quoted_post_id = a simple repost; non-empty text + quoted_post_id = a quote-post. The post's id from get_post or any list response. A bare activity id, a URN (activity/ugcPost/share), or a full share URL all work.

can_read'anyone' | 'relations_only'

Who can read the post (substrate default: anyone if omitted).

can_comment'anyone' | 'relations_only' | 'no_one'

Who may comment (substrate default: anyone if omitted).

post_asstring

Company page id to post as, the account must administer it.

Response

Post published successfully. Returns the new post's id.

object'post_created' required

Response type discriminator.

idstring required

The newly published post's own identifier.

Example response

{
  "safety_warning": {
    "row": "profile_views",
    "reset_at": "2026-09-05T00:00:00.000Z",
    "hint": {
      "parameter": "profile_views.ceiling",
      "message": "This account is at its ceiling for profile_views. This action went through because profile_views.posture is warn, and it counted: 101 of 100 this window. Raise profile_views.ceiling, or wait for the window to reset at 2026-09-05T00:00:00.000Z."
    },
    "reason": "ceiling",
    "blocked": false
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.