---
title: "Save content draft"
method: POST
path: "/v1/content/save"
tags: ["content"]
---

# Save content draft

`POST /v1/content/save`

## Request

- Base URL: `https://api.zevari.ai`
- URL: `https://api.zevari.ai/v1/content/save`
- Auth: HTTP bearer

Transport: call this endpoint with HTTP POST and a JSON request body. Save a content draft (post, comment, message, sequence). For LinkedIn posts the user wants scheduled, save the draft here, then **stop and give the user the `dashboard_url` from the result** (https://zevari.ai/dashboard/content/{contentId}) — that page is where they review the post, upload an image or PDF, and pick a publish time. Media can also be attached through MCP: if the user uploaded a file in Settings > Media and gives you its ma_ id, call media_assets_attach; if they give a public HTTPS URL, call media_assets_attach_from_url. Do NOT call content_schedule yourself unless the user explicitly says they don't want to add media.

## Request body

- object
  - `content_type` 'post' | 'comment' | 'connection_note' | 'message_sequence' | 'lead_magnet' | 'article' | 'report', required: Type of content
  - `title` string: Content title (for lead magnets, articles)
  - `body` string, required: The content text
  - `skill_id` string: Skill that generated this content
  - `campaign_id` string: Associated campaign ID
  - `voice_dna_used` boolean: Whether Voice DNA was applied
  - `variants` object[]: Alternative versions
    - `label` string, required
    - `body` string, required
  - `metadata` object: Additional metadata

## Response `200`

Successful Zevari API response.

- ZevariResponseEnvelope
  - `ok` boolean, required: False when the underlying tool reports an error or a partial failure.
  - `method` string, required: Public API method name.
  - `data` unknown, required
  - `request_id` string, required: Request correlation ID. Also returned in X-Zevari-Request-Id.

## Other responses

- `400`: Invalid arguments or method execution error.
- `401`: Missing, invalid, expired, revoked, or unauthorized API key.
- `404`: Unknown or non-public Zevari API method.
- `429`: API key rate limit exceeded.
- `500`: Unhandled server error.

---

[API](https://skmtc.dev/zevari/apis/zevari-public-api.md) · [All operations](https://skmtc.dev/zevari/apis/zevari-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zevari/apis/zevari-public-api/revisions/a0bc3afac227?raw)
