Drafts

Update a draft

Partial update: an omitted field is left as is, null clears it. attachments replaces the whole list ({id} keeps an existing file, a base64 object adds one, anything left out is deleted). account_id moves the Draft to another of your accounts. Editing a failed Draft clears its failure.

patch/v1/drafts/{id}

Request

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

Path parameters

idstring required

Draft id (drf_...).

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

The updated Draft. scheduled_at schedules, reschedules or (null) unschedules; changing it or the account cancels a pending publish and its retries. Unscheduling alone needs no active seat. 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.