AwrAiter · Schema

CreatePostFromTextInput

TelegramContent PlanningAnalyticsAI IntegrationSoftware-as-a-Service

Properties

Name Type Description
channelId number
body string Post text in Markdown as Telegram renders it: **bold**, *italic*, __underline__, ~~strikethrough~~, ||spoiler||, [text](https://link), `code`. A quote is one or more lines starting with "> "; it ends
title string
deslop boolean Strip AI-tell typography (em dashes -> hyphen, smart quotes). Default true. No AI is used either way.
imageUrls array Public http(s) direct links to images to attach (jpg/png/webp; svg/gif rejected).
videoUrls array Public http(s) direct links to videos to attach (mp4 preferred).
audioUrls array Public http(s) direct links to audio files (mp3/m4a/ogg/wav/flac, up to 49 MB each), sent as music tracks with the post text as the caption. Not a YouTube/SoundCloud page: the link must return the fil
rightsConfirmed boolean Required with audioUrls. Set true only after the operator has confirmed they hold the rights to use these tracks and publish them in the channel. Ask them; never assume.
planItemId number Optional content-plan slot id this draft fills. The slot must belong to this channel's plan and have no post yet; on success the draft is linked to it and the slot is marked completed. The channel's a
publishOptions object Optional Telegram publish options, applied when the post goes out. Set only what the operator asked for.
View JSON Schema on GitHub

JSON Schema

awraiter-ai-create-post-from-text-input-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/awraiter-ai/json-schema/awraiter-ai-create-post-from-text-input-schema.json",
  "title": "CreatePostFromTextInput",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/awraiter-ai-openapi.json#/components/schemas/CreatePostFromTextInput",
  "type": "object",
  "properties": {
    "channelId": {
      "type": "number"
    },
    "body": {
      "type": "string",
      "description": "Post text in Markdown as Telegram renders it: **bold**, *italic*, __underline__, ~~strikethrough~~, ||spoiler||, [text](https://link), `code`. A quote is one or more lines starting with \"> \"; it ends at the first line without \">\", and goes out as a plain quote. Separate paragraphs with a blank line. Premium emoji: <tg-emoji id=\"ID\">🔥</tg-emoji>, with an ID from the channel's emoji sets (get_channel → customEmoji); the emoji inside the tag must be the base emoji of that ID and is shown where premium emoji cannot render."
    },
    "title": {
      "type": "string"
    },
    "deslop": {
      "type": "boolean",
      "description": "Strip AI-tell typography (em dashes -> hyphen, smart quotes). Default true. No AI is used either way."
    },
    "imageUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Public http(s) direct links to images to attach (jpg/png/webp; svg/gif rejected)."
    },
    "videoUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 3,
      "description": "Public http(s) direct links to videos to attach (mp4 preferred)."
    },
    "audioUrls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "description": "Public http(s) direct links to audio files (mp3/m4a/ogg/wav/flac, up to 49 MB each), sent as music tracks with the post text as the caption. Not a YouTube/SoundCloud page: the link must return the file itself. Cannot be combined with imageUrls/videoUrls. Requires rightsConfirmed:true."
    },
    "rightsConfirmed": {
      "type": "boolean",
      "description": "Required with audioUrls. Set true only after the operator has confirmed they hold the rights to use these tracks and publish them in the channel. Ask them; never assume."
    },
    "planItemId": {
      "type": "number",
      "description": "Optional content-plan slot id this draft fills. The slot must belong to this channel's plan and have no post yet; on success the draft is linked to it and the slot is marked completed. The channel's autopilot policy then decides: the response's `autopilot.action` is 'auto' (a plan was created at the slot time, `planId`/`publishAt`) or 'approve' (the draft waits in the review queue; `reason` says why — policy_manual, streak_below_target, recommendation_revise, banlist_hit, quiet hours, daily limit…). Do not call schedule_post for a draft the policy already scheduled."
    },
    "publishOptions": {
      "type": "object",
      "description": "Optional Telegram publish options, applied when the post goes out. Set only what the operator asked for.",
      "properties": {
        "silent": {
          "type": "boolean",
          "description": "Deliver without a notification sound."
        },
        "pin": {
          "type": "boolean",
          "description": "Pin the post in the channel once it is published (an album pins its first item)."
        },
        "protect": {
          "type": "boolean",
          "description": "Protected content: subscribers cannot forward or save the post."
        },
        "spoiler": {
          "type": "boolean",
          "description": "Blur the photos and videos until tapped. No effect on text or audio."
        },
        "buttons": {
          "type": "array",
          "description": "URL buttons under the post: an array of rows, each row an array of {text, url}. Up to 5 rows of 3; links must be https://, http:// or tg://. Not possible on an album (more than one photo/video). Added by the channel's bot right after the post goes out, so the channel must be connected through the bot.",
          "maxItems": 5,
          "items": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1024
                }
              },
              "required": [
                "text",
                "url"
              ],
              "additionalProperties": false
            }
          }
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "channelId",
    "body"
  ],
  "additionalProperties": false
}

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/awraiter-ai-create-post-from-text-input"
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.