Drafts

Create a draft

Stores an unpublished post until it is published or deleted. Every field is optional, the account too; a Draft has at most one account and can move between yours. Up to 50 Drafts and 2 GiB of media per account, and per no-account. A retry creates a second Draft.

post/v1/drafts

Request

  • Base URL: https://api.curviate.com
  • URL: https://api.curviate.com/v1/drafts
  • Auth: HTTP bearer

Request body

account_idstring nullable

The account (acc_...) this Draft will publish as, or null for none yet. A Draft belongs to at most one account.

scheduled_atstring nullable

When Curviate publishes this Draft: an ISO 8601 date-time with an offset, at least 5 minutes and at most 365 days ahead, stored in UTC truncated to the minute. Scheduling needs an account and text. Curviate publishes it up to 20 seconds after this time, and keeps scheduled posts on one account at least 5 minutes apart. null unschedules.

textstring nullable

Post body text, up to 3000 characters. May be empty while drafting; publishing needs at least one character.

quoted_post_idstring nullable

A post to quote or repost when published, the same as on create post. Checked at publish time.

can_read'anyone' | 'relations_only' nullable

Who can read the post once published.

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

Who may comment once published.

post_asstring nullable

Company page id to post as; the account must administer it. Checked at publish time.

Response

Draft created. With scheduled_at, status is scheduled and Curviate publishes it on its own. With scheduled_at, the response carries safety_warning (reason activity_window) when the time is outside the account's activity window and its posture is warn; under enforce the request is refused instead (429 BUDGET_EXHAUSTED, reason activity_window) and nothing is saved.

object'draft' required

Response type discriminator.

idstring required

Draft id (drf_...).

account_idstring nullable required

The account this Draft will publish as, or null for none yet.

status'draft' | 'scheduled' | 'failed' required

Derived: failed if failure is set, else scheduled if scheduled_at is set, else draft.

textstring nullable required

Post body text. May be empty or null while drafting.

quoted_post_idstring nullable

A post to quote or repost when published.

can_read'anyone' | 'relations_only' | 'null' nullable

Who can read the post once published.

can_comment'anyone' | 'relations_only' | 'no_one' | 'null' nullable

Who may comment once published.

post_asstring nullable

Company page id to post as.

scheduled_atstring nullable required

When Curviate publishes the Draft (UTC, whole minute), or null. It goes out up to 20 seconds after this time. A failed Draft has null here; the time that failed is failure.scheduled_at.

created_atstring required

Creation time.

updated_atstring required

Last change.

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.