---
title: "Check a Hive post against every network it targets and list what each one would refuse, before anything is written. It reads only: it changes nothing and sends nothing."
method: POST
path: "/api/v1/tools/validate_post"
---

# Check a Hive post against every network it targets and list what each one would refuse, before anything is written. It reads only: it changes nothing and sends nothing.

`POST /api/v1/tools/validate_post`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/validate_post`
- Auth: HTTP bearer

## Request body

- object
  - `postId` string: An existing Hive post to check. Leave it out and pass the fields instead.
  - `caption` string
  - `title` string
  - `hashtags` string[]
  - `channelIds` string[]: The connected Hive accounts to check against.
  - `media` object[]: The photos and videos on the post, in order.
    - `assetId` string: An Asset Library id from read_media_library.
    - `url` string: A Hive-hosted media URL, such as the one upload_media_from_url returns. Links on other hosts are refused: import them with upload_media_from_url first.
    - `altText` string: Accessibility text. Saved onto the Asset Library item when assetId is given. Instagram post alt text is perPlatform.instagram.igAltText.
    - `order` number: Where this item sits in the post, lowest first.
  - `perPlatform` object: Per-network options keyed by network (instagram, facebook, tiktok, youtube, linkedin, x, threads, pinterest, snapchat, bluesky, mastodon, whatsapp, telegram). Each value takes what Hive's composer takes, for example postType (post, reel, story), caption, title, privacy, firstComment, igLocationId, igAltText, igCollaborators, coverUrl, threadsReplyControl, youtubeFormat, tiktokPrivacyLevel. Anything omitted falls back to the shared values.

## Response `200`

Tool result

- ToolResult
  - `data` unknown, required
  - `meta` object, required
    - `tool` string
    - `workspaceId` string, uuid

## Other responses

- `400`: Invalid input
- `401`: Missing or invalid credential
- `403`: Missing workspace scope, role permission, or plan entitlement
- `409`: Idempotency conflict, replay, or request still in progress
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/hivepublish/apis/hive-developer-api.md) · [All operations](https://skmtc.dev/hivepublish/apis/hive-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hivepublish/apis/hive-developer-api/revisions/b440c763583e?raw)
