Kamai · Schema

MarkupCreate

ConstructionArtificial IntelligenceBlueprint ExtractionTakeoffEstimationRFI extractionSubmittal reviewSpec review

Properties

Name Type Description
kind string cloud: a revision cloud (box or points); highlight: a marker stroke (points); note: a text box (box and text, optionally pointer).
box object [x0, y0, x1, y1], fractions of the page from the top-left. A cloud wraps it; a note's text sits in it.
points object [[x, y], ...], fractions of the page. A highlight's stroke; a cloud may follow an outline instead of a box.
pointer object A note's arrow tip, [x, y] fractions of the page. The room under it is recorded with the note.
text object A note's text, up to 2,000 characters; required on a note.
style object Optional color (#rrggbb), width in PDF points (0.25..20; a highlight up to 60), opacity (0.05..1), font_size in points (4..72, notes only). Left out: the kind's default.
request_id object Repeat the same value on a retry and the first markup is returned instead of a second one.
View JSON Schema on GitHub

JSON Schema

kamai-io-markup-create-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/kamai-io/json-schema/kamai-io-markup-create-schema.json",
  "title": "MarkupCreate",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kamai-io-openapi.json#/components/schemas/MarkupCreate",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "cloud",
        "highlight",
        "note"
      ],
      "title": "Kind",
      "description": "cloud: a revision cloud (box or points); highlight: a marker stroke (points); note: a text box (box and text, optionally pointer)."
    },
    "box": {
      "anyOf": [
        {
          "items": {
            "type": "number"
          },
          "type": "array",
          "maxItems": 4,
          "minItems": 4
        },
        {
          "type": "null"
        }
      ],
      "title": "Box",
      "description": "[x0, y0, x1, y1], fractions of the page from the top-left. A cloud wraps it; a note's text sits in it."
    },
    "points": {
      "anyOf": [
        {
          "items": {
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "type": "array",
          "maxItems": 2000,
          "minItems": 2
        },
        {
          "type": "null"
        }
      ],
      "title": "Points",
      "description": "[[x, y], ...], fractions of the page. A highlight's stroke; a cloud may follow an outline instead of a box."
    },
    "pointer": {
      "anyOf": [
        {
          "items": {
            "type": "number"
          },
          "type": "array",
          "maxItems": 2,
          "minItems": 2
        },
        {
          "type": "null"
        }
      ],
      "title": "Pointer",
      "description": "A note's arrow tip, [x, y] fractions of the page. The room under it is recorded with the note."
    },
    "text": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ],
      "title": "Text",
      "description": "A note's text, up to 2,000 characters; required on a note."
    },
    "style": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Style",
      "description": "Optional color (#rrggbb), width in PDF points (0.25..20; a highlight up to 60), opacity (0.05..1), font_size in points (4..72, notes only). Left out: the kind's default."
    },
    "request_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Request Id",
      "description": "Repeat the same value on a retry and the first markup is returned instead of a second one."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind"
  ]
}

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/kamai-io-markup-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.