# Create update

URL: /en/docs/api/v1/updates/post
Last Updated: 2026-07-30T21:15:44.974Z

## Description
No description available.

## Available Actions
- Execute POST request
- View request parameters
- View response schema
- Get code examples
- Navigate to related topics
- View step-by-step instructions
- Get best practices

## Content
### POST /api/v1/updates

**Create update**

Create a draft update. Drafts are the only create behavior: save the update first, then call the publish or schedule endpoint when it is ready for customers. Follow-ups can only be created for published root updates. When `parent` is supplied, omit `order`; follow-up order is changed on the root update.

**Authentication:** Bearer token (`Authorization: Bearer <token>`)

**Request body** (`application/json`) - required:

- `title` (string)
- `slug` (string)
- `summary` (string)
- `description_md` (string)
- `classification` (string): Classification ID.
- `access_level` (AccessLevel (enum: public | restricted | requires_nda | internal))
- `channels` (array of UpdateChannel (enum: trust_center | email.subscribers | email.custom))
- `parent` (string): Published root update ID for follow-up updates. Child updates cannot be used as create parents.
- `order` (enum: asc | desc): Follow-up ordering on the root update. Do not send this when creating a follow-up.
- `effective_at` (string (date-time))
- `effective_timezone` (string)
- `template` (string)
- `document_ids` (array of string)
- `subprocessor_ids` (array of string)
- `account_ids` (array of string)
- `contact_ids` (array of string)

Example (Save a draft):

```json
{
  "title": "Privacy policy refresh",
  "summary": "We are preparing a refreshed privacy policy.",
  "description_md": "We are updating our privacy policy language.",
  "classification": "cls_legal",
  "access_level": "public",
  "channels": [
    "trust_center"
  ]
}
```

**Responses:**

- `201` - Update created
  - `success` (boolean)
  - `data` (object)
    - `update` (Update (object))
      - `id` (string)
      - `title` (string)
      - `slug` (any): URL-safe identifier used by Trust Center update modal links.
      - `summary` (any)
      - `description_md` (any): Markdown body shown in the Trust Center update modal or timeline.
      - `status` (enum: draft | scheduled | published | archived)
      - `classification` (object)
        - `id` (string)
        - `title` (string)
        - `color` (any)
        - `translations` (array of ClassificationTranslation (object))
          - `languages_code` (string)
          - `title` (string)
        - `custom_fields` (array of ClassificationCustomField (object))
          - `title` (string)
          - `translations` (array of ClassificationTranslation (object))
            - `languages_code` (string)
            - `title` (string)
          - `options` (array of object)
            - `value` (string)
            - `label` (array of object)
              - `languages_code` (string)
              - `translation` (string)
      - `access_level` (AccessLevel (enum: public | restricted | requires_nda | internal))
      - `send_mode` (enum: none | immediate | scheduled)
      - `channels` (array of UpdateChannel (enum: trust_center | email.subscribers | email.custom))
      - `scheduled_at` (any)
      - `scheduled_timezone` (any)
      - `published_at` (any)
      - `effective_at` (any)
      - `effective_timezone` (any)
      - `order` (enum: asc | desc)
      - `parent` (object)
        - `id` (string)
        - `title` (string)
      - `template` (object)
        - `id` (string)
        - `title` (string)
        - `summary` (any)
        - `description_md` (any)
        - `badge` (any)
        - `tenant` (any)
        - `category` (object)
          - `id` (string)
          - `title` (string)
      - `documents` (array of UpdateDocumentRelation (object))
        - `id` (string)
        - `documents_id` (object)
          - `id` (string)
          - `title` (string)
      - `subprocessors` (array of UpdateSubprocessorRelation (object))
        - `id` (string)
        - `subprocessors_id` (object)
          - `id` (string)
          - `title` (string)
- `400` - Validation failed, selected records are outside the tenant scope, subscriptions are disabled for subscriber delivery, or follow-up parent/order constraints were violated
- `401` - Unauthorized
- `500` - Failed to create update

**Code samples:**

cURL:

```bash
curl -X POST "https://app.orbiqhq.com/api/v1/updates" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "SOC 2 Type II report published",
    "summary": "Our latest SOC 2 Type II report is now available.",
    "description_md": "Customers with approved access can now review the report.",
    "classification": "cls_compliance",
    "access_level": "restricted",
    "channels": ["trust_center", "email.subscribers"],
    "document_ids": ["doc_soc2"]
  }'
```

