ThreadPage · Schema

ExecutorRequest

NotesCollaborationProductivityArtificial IntelligenceWeb App

Properties

Name Type Description
id string
state object
test boolean A Test request from the owner: no note, nothing is written.
handle string The name the note was sent to, as sent.
addressed_to array Every name the note was sent to, as sent, yours included, in the order named: others may work on the same note, each answering on its own. Empty for a Test request.
created_at string
expires_at string
thread object Null for a Test request.
note object The note as it was sent, whoever edited it since; null for a Test request, once the note left (Trash, Delete permanently) and when its sent version is no longer kept.
claim_id stringnull The claim_id it was claimed with; null until it is claimed, and null for a claim the server minted (over MCP), which only the call that made it sees.
claimed_at stringnull When a run claimed it; null until it is claimed.
reply object
answers object Set when the owner chose Answer on a question you asked (needs_input): this note answers that request, which ends (state cancelled, code answered) once you claim this one.
View JSON Schema on GitHub

JSON Schema

thread-page-executor-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/thread-page/json-schema/thread-page-executor-request-schema.json",
  "title": "ExecutorRequest",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/thread-page-openapi.json#/components/schemas/ExecutorRequest",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "state": {
      "$ref": "#/$defs/RequestStateEnum"
    },
    "test": {
      "type": "boolean",
      "description": "A Test request from the owner: no note, nothing is written."
    },
    "handle": {
      "type": "string",
      "description": "The name the note was sent to, as sent."
    },
    "addressed_to": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Every name the note was sent to, as sent, yours included, in the order named: others may work on the same note, each answering on its own. Empty for a Test request."
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "expires_at": {
      "type": "string",
      "format": "date-time"
    },
    "thread": {
      "oneOf": [
        {
          "$ref": "#/$defs/ThreadRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "Null for a Test request."
    },
    "note": {
      "oneOf": [
        {
          "$ref": "#/$defs/RequestNote"
        },
        {
          "type": "null"
        }
      ],
      "description": "The note as it was sent, whoever edited it since; null for a Test request, once the note left (Trash, Delete permanently) and when its sent version is no longer kept."
    },
    "claim_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "The claim_id it was claimed with; null until it is claimed, and null for a claim the server minted (over MCP), which only the call that made it sees."
    },
    "claimed_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When a run claimed it; null until it is claimed."
    },
    "reply": {
      "$ref": "#/$defs/RequestReply"
    },
    "answers": {
      "oneOf": [
        {
          "$ref": "#/$defs/RequestAnswers"
        },
        {
          "type": "null"
        }
      ],
      "description": "Set when the owner chose Answer on a question you asked (needs_input): this note answers that request, which ends (state cancelled, code answered) once you claim this one."
    }
  },
  "required": [
    "addressed_to",
    "answers",
    "claim_id",
    "claimed_at",
    "created_at",
    "expires_at",
    "handle",
    "id",
    "note",
    "reply",
    "state",
    "test",
    "thread"
  ],
  "$defs": {
    "RequestAnswers": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "The earlier request that asked a question."
        },
        "question_note_id": {
          "type": [
            "string",
            "null"
          ],
          "format": "uuid"
        }
      },
      "required": [
        "id",
        "question_note_id"
      ]
    },
    "RequestNote": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "content_revision": {
          "type": "integer",
          "description": "The note now; higher than sent_content_revision when it was edited since."
        },
        "sent_content_revision": {
          "type": "integer",
          "description": "The note as it was sent."
        },
        "text": {
          "type": "string",
          "description": "The note as it was sent."
        },
        "markdown": {
          "type": "string",
          "description": "The note as it was sent."
        }
      },
      "required": [
        "content_revision",
        "id",
        "markdown",
        "sent_content_revision",
        "text",
        "url"
      ]
    },
    "RequestReply": {
      "type": "object",
      "properties": {
        "status_url": {
          "type": "string",
          "format": "uri"
        },
        "result_url": {
          "type": "string",
          "format": "uri"
        }
      },
      "required": [
        "result_url",
        "status_url"
      ]
    },
    "RequestStateEnum": {
      "enum": [
        "queued",
        "delivered",
        "running",
        "needs_input",
        "completed",
        "failed",
        "cancellation_requested",
        "cancelled",
        "expired",
        "outcome_unknown"
      ],
      "type": "string",
      "description": "* `queued` - queued\n* `delivered` - delivered\n* `running` - running\n* `needs_input` - needs_input\n* `completed` - completed\n* `failed` - failed\n* `cancellation_requested` - cancellation_requested\n* `cancelled` - cancelled\n* `expired` - expired\n* `outcome_unknown` - outcome_unknown"
    },
    "ThreadRef": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "title": {
          "type": "string",
          "description": "The thread's name as the app shows it: its own, or for a thread still called New thread, the first line of words of its first note, without the @name it was sent to."
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      },
      "required": [
        "id",
        "title",
        "url"
      ]
    }
  }
}

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/thread-page-executor-request"
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.