Hermoso AI · Schema

PostCreate

CompanyArtificial IntelligenceMarketingAdvertisingAutomation

Properties

Name Type Description
channels array One or more channel ids from GET /v1/channels. DELIBERATELY NOT AN ENUM — the set is derived from what the product can publish to, and it GROWS as platform approvals land. Read it from GET /v1/channel
caption string The post text. Per-channel length limits are enforced at create time, not discovered at publish time.
title string The headline Pinterest and YouTube each require. Derived from the caption when omitted.
link string
media array Ordered. One item is a single post; two or more are a carousel, in the order given. Each item is a Hermoso-hosted URL from POST /v1/media, as a bare string or as {url, type}.
scheduled_at string Omit to publish immediately. Otherwise ISO-8601, at least 60 seconds out and within the documented horizon.
use_queue boolean Take the next free slot in this profile’s posting schedule instead of naming a time. Mutually exclusive with scheduled_at — sending both is an error, never a silent precedence.
timezone string IANA zone for use_queue. Defaults to the profile’s saved zone.
visibility string public (default) | unlisted | private | draft. Refused at create time where a channel cannot honour it, never silently downgraded at publish time.
visibility_by_channel object
captions_by_channel object Override the caption for one channel.
targets object Which account to post to, where the connection holds more than one. Omit for the default. GET /v1/channels names the field each channel uses.
options object Per-channel publish metadata (YouTube description, tags, categoryId, madeForKids, notifySubscribers, paidProductPlacement, brandPartner and a captionTrack {url|text, language, name} uploaded right aft
first_comment string A comment the account posts on its own post right after it publishes: Facebook Pages, Instagram, and LinkedIn company Pages (LinkedIn needs its comments authorization, provider linkedin_community). Up
View JSON Schema on GitHub

JSON Schema

hermoso-ai-post-create-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hermoso-ai/json-schema/hermoso-ai-post-create-schema.json",
  "title": "PostCreate",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/app_hermoso_ai_rest.json#/components/schemas/PostCreate",
  "type": "object",
  "required": [
    "channels"
  ],
  "properties": {
    "channels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "One or more channel ids from GET /v1/channels. DELIBERATELY NOT AN ENUM — the set is derived from what the product can publish to, and it GROWS as platform approvals land. Read it from GET /v1/channels rather than hard-coding it, and treat an id you have not seen as valid."
    },
    "caption": {
      "type": "string",
      "description": "The post text. Per-channel length limits are enforced at create time, not discovered at publish time."
    },
    "title": {
      "type": "string",
      "description": "The headline Pinterest and YouTube each require. Derived from the caption when omitted."
    },
    "link": {
      "type": "string"
    },
    "media": {
      "type": "array",
      "description": "Ordered. One item is a single post; two or more are a carousel, in the order given. Each item is a Hermoso-hosted URL from POST /v1/media, as a bare string or as {url, type}.",
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "image",
                  "video"
                ]
              }
            }
          }
        ]
      }
    },
    "scheduled_at": {
      "type": "string",
      "format": "date-time",
      "description": "Omit to publish immediately. Otherwise ISO-8601, at least 60 seconds out and within the documented horizon."
    },
    "use_queue": {
      "type": "boolean",
      "description": "Take the next free slot in this profile’s posting schedule instead of naming a time. Mutually exclusive with scheduled_at — sending both is an error, never a silent precedence."
    },
    "timezone": {
      "type": "string",
      "description": "IANA zone for use_queue. Defaults to the profile’s saved zone."
    },
    "visibility": {
      "type": "string",
      "description": "public (default) | unlisted | private | draft. Refused at create time where a channel cannot honour it, never silently downgraded at publish time."
    },
    "visibility_by_channel": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "captions_by_channel": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Override the caption for one channel."
    },
    "targets": {
      "type": "object",
      "additionalProperties": true,
      "description": "Which account to post to, where the connection holds more than one. Omit for the default. GET /v1/channels names the field each channel uses."
    },
    "options": {
      "type": "object",
      "additionalProperties": true,
      "description": "Per-channel publish metadata (YouTube description, tags, categoryId, madeForKids, notifySubscribers, paidProductPlacement, brandPartner and a captionTrack {url|text, language, name} uploaded right after the video; X thread parts, Instagram alt text, and so on)."
    },
    "first_comment": {
      "type": "string",
      "description": "A comment the account posts on its own post right after it publishes: Facebook Pages, Instagram, and LinkedIn company Pages (LinkedIn needs its comments authorization, provider linkedin_community). Up to 2,000 characters, refused (never cut) when longer. Other channels publish the post without it and say so on their result. A comment that fails never undoes the post; its outcome is reported on the channel’s result."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/hermoso-ai-post-create"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.