drafts.update

Partial update: an omitted field is left as is, null clears it.

Prerequisites

  • A Curviate API key, passed as apiKey when you construct the client. Quickstart shows how to create one.

Signature

update(id: string, body: DraftUpdateBody): Promise<DraftUpdateResult>

Example

import { Curviate } from "@curviate/sdk";
 
const curviate = new Curviate({
  apiKey: "cvt_live_...",
  baseUrl: "https://api.curviate.com",
});
 
await curviate.drafts.update(id, { scheduled_at: null }); // unschedule

Parameters

NameTypeRequiredDescription
idstringYesDraft id (drf_...).
account_idstringNoThe account (acc_...) this Draft will publish as, or null for none yet. A Draft belongs to at most one account.
scheduled_atstringNoWhen 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.
textstringNoPost body text, up to 3000 characters. May be empty while drafting; publishing needs at least one character.
quoted_post_idstringNoA post to quote or repost when published, the same as on create post. Checked at publish time.
can_readstringNoWho can read the post once published.
can_commentstringNoWho may comment once published.
post_asstringNoCompany page id to post as; the account must administer it. Checked at publish time.
attachmentsarrayNoReplaces the whole list. Each item is {id} to keep an existing attachment, or a new base64 object. Attachments left out are deleted.

Returns

Resolves to DraftUpdateResult. Top-level fields: object, id, account_id, status, text, attachments, quoted_post_id, can_read, can_comment, post_as, scheduled_at, failure, created_at, updated_at, safety_warning.

Error codes

CodeWhat it means, and what to do
UNAUTHORIZEDThe API key is missing, malformed, or revoked. Check the key you passed to the client.
INVALID_REQUESTA parameter failed validation. The message names the offending field; fix the request rather than retrying it.
RATE_LIMIT_ACCOUNTThis account's own quota is exhausted. Wait for the window in the Retry-After header, then retry.
RATE_LIMIT_TENANTThe tenant-wide quota is exhausted across all accounts. Slow the whole workload, not just this call.
PLATFORM_RATE_LIMITLinkedIn is throttling this account. Back off well beyond the hinted delay; sustained pressure risks the account.
PLATFORM_ERRORAn upstream failure, usually transient: retry once with backoff before treating it as a real error. Check the response first, though. When it carries retry_likely_to_succeed: false and retry_hint: {kind: "never"}, retrying cannot help and backing off only delays the real answer.
ACCOUNT_NOT_FOUNDNo connected account with that id belongs to this tenant. List your accounts to get a current id.
ACCOUNT_REQUIREDPublishing or scheduling needs an account on the Draft (and account_id: null on a scheduled Draft is refused). Set account_id first, or unschedule before clearing it.
DRAFT_LIMIT_REACHEDThe bucket (one account, or Drafts with no account) already holds 50 Drafts. Delete one, or use another account; retrying unchanged will not help.
DRAFT_NOT_PUBLISHABLEThe Draft has a content gap, such as empty text; the message names the field. Fix it, then publish or schedule again.
DRAFT_PUBLISHINGA publish of this Draft is in flight, or its outcome is still being settled. Read the Draft again in a few seconds; if the message says to check the account's posts first, do that before retrying.
MEDIA_QUOTA_EXCEEDEDThe file would take the bucket past its media quota and nothing was stored. Delete media from other Drafts first.
NO_ACTIVE_SEATThe targeted account is not on an active seat. Buy or attach a seat in Billing, then retry.
PAYLOAD_TOO_LARGEA file is over its limit: 5 MiB per image or per file sent inline, 50 MiB for a video or PDF sent with uploadAttachment. Send a smaller file, or move a large one to uploadAttachment.
RESOURCE_NOT_FOUNDThe id in the path does not exist, or is not visible to this account. Re-read it from the list endpoint that produced it.
SCHEDULE_CONFLICTAnother scheduled Draft on the same account is within 5 minutes of this scheduled_at; the message names it. Pick a time at least 5 minutes away.

Every code above is a stable CurviateError.code you can branch on. The full list, the response envelope, and retry semantics are in the Error codes reference.

Next steps