---
title: "POST /v2/content/update"
method: POST
path: "/v2/content/update"
tags: ["v2"]
---

# POST /v2/content/update

`POST /v2/content/update`

## Request

- Base URL: `https://api.inside.ad/api`
- URL: `https://api.inside.ad/api/v2/content/update`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://api.inside.ad/api/oauth/authorize`, token URL `https://api.inside.ad/api/oauth/token`, scopes: `content:write`)
  - API key in header `authorization`

Updates an existing, not-yet-published post: caption, schedule, status, buttons, notification/preview flags, and/or its media. For media, use "fileUrl" (AI-generated result from generate_image/generate_video) or "fileBase64"+"mimeType" (the user's own photo/video you already have the bytes of) — or "fileDeleted": true to remove it. Does NOT publish — call "publish_post" afterwards when ready. Fails if the post is currently being published.

## Query parameters

- `userId` number, required

## Request body

- object
  - `platform` 'instagram' | 'threads' | 'telegram', required
  - `id` number, required: The content id to update
  - `channelId` string, nullable: Only needed if moving the post to a different channel
  - `caption` string, nullable
  - `idea` string, nullable
  - `scheduleType` 'draft' | 'next_slot' | 'manual' | 'immediate', nullable
  - `eventAt` string, date-time, nullable: Required when scheduleType is "manual"
  - `status` string, nullable
  - `buttons` string, nullable: JSON string: [[{text, url}]]
  - `disable_notification` boolean, nullable
  - `disable_link_preview` boolean, nullable
  - `fileUrl` string, nullable: URL of an already-hosted image/video to attach — typically the result of generate_image/generate_video (AI-generated), or any other URL you already have.
  - `fileBase64` string, nullable: Base64-encoded raw image/video bytes to upload directly. Use this when the user sent you their OWN photo/video (e.g. in the Telegram support chat, resolved via the same file-download path used for vision attachments) and it should become the post's media — NOT an AI-generated one. Requires "mimeType".
  - `mimeType` string, nullable: MIME type of "fileBase64" (e.g. "image/jpeg", "video/mp4"). Required when fileBase64 is set.
  - `fileDeleted` boolean, nullable: Set true to remove the existing media instead of attaching a new one. Mutually exclusive with fileUrl/fileBase64.

## Response `200`

Default Response

- object
  - `success` boolean

---

[API](https://skmtc.dev/inside/apis/inside-ad-api-documentation-v2-ai-optimized.md) · [All operations](https://skmtc.dev/inside/apis/inside-ad-api-documentation-v2-ai-optimized/llms.txt) · [OpenAPI document](https://skmtc.dev/inside/apis/inside-ad-api-documentation-v2-ai-optimized/revisions/79912b433f7f?raw)
