Properties
| Name | Type | Description |
|---|---|---|
| model | string | Name of the generator model from models_dir/generators/ |
| messages | array | Conversation messages (OpenAI-compatible format). When `context_management.checkpoint` is supplied, this array is the active suffix; the archived prefix represented by the checkpoint is not resent. |
| logprobs | boolean | Return actual token log-probabilities for non-streaming native grammar decoding. Incompatible routes reject the request. |
| top_logprobs | integer | Bounded alternatives per decoded token; retained evidence also has a hard byte ceiling. |
| max_tokens | integer | Maximum tokens to generate |
| temperature | number | Sampling temperature (0.0 = deterministic, higher = more random) |
| top_p | number | Nucleus sampling probability |
| top_k | integer | Top-k sampling (inference extension, not in OpenAI API) |
| stream | boolean | If true, partial message deltas will be sent as SSE events |
| stream_options | object | |
| chat_template_kwargs | object | |
| ignore_eos | boolean | inference-native benchmarking and controlled-generation extension. When true, generation does not stop on the model's end-of-sequence token and continues until another stop condition, such as `max_tok |
| tools | array | List of tools (functions) the model can call. Only supported by models with tool_call_format configured. |
| min_p | number | Min-p sampling threshold. Filters tokens where p < min_p * max_p. Simpler alternative to top_p. |
| repetition_penalty | number | Repetition penalty factor applied to previously generated tokens (1.0 = disabled, >1.0 penalizes, <1.0 encourages) |
| frequency_penalty | number | Additive penalty based on token frequency in context (logit -= frequency_penalty * count) |
| presence_penalty | number | Additive penalty for tokens that appeared at all in context (logit -= presence_penalty if count > 0) |
| response_format | object | Structured output control. OpenAI-compatible entry point for requesting JSON output. `{"type":"json_object"}` is supported directly. `{"type":"json_schema"}` is compiled into a native constrained-deco |
| grammar | string | inference-native grammar override. When set, this takes precedence over `response_format`. Grammar-constrained decoding is currently native-backend only. |
| draft_model | string | inference-native speculative decoding extension. Path or model identifier for a smaller draft model. |
| speculative_k | integer | inference-native speculative decoding extension. Number of draft tokens proposed per verification round. |
| speculation_policy | string | inference-native speculative decoding policy: `auto`, `force`, or `off`. Defaults to `auto` when a draft model is requested. |
| speculation_calibration | string | inference-native speculative decoding calibration state: `none`, `probe`, or `positive`. Defaults to `probe` for `auto` draft requests so they are measured instead of silently disabled, and to `none` |
| cache_dtype | string | inference-native KV cache quantization format. Lower precision reduces memory usage but may affect generation quality. Default auto-selects based on backend (f16 for GPU, f32 for CPU). |
| cache_compaction_ratio | number | inference-native KV cache compaction ratio applied after prefill via Attention Matching. Selects a subset of keys and fits new values via OLS to preserve attention behavior. 0.02 = 50x compression, 0. |
| context_management | object | |
| kv_cache | object | |
| prompt_cache_key | string | inference-native prompt prefix cache namespace key. Requests with the same key can reuse matching prompt-prefix KV on the same node. Required to enable prompt caching; requests without a key are never |
| prompt_cache | boolean | inference-native prompt prefix cache control. False bypasses prompt cache for this request. On Metal, an eligible cache request stays on the eager paged-attention path instead of automatically selecti |
| backend | object | |
| mode | string | inference-native graph execution mode. `eager` keeps the direct runtime path when possible. `compiled` runs inference graph planning, partitioning, and backend executor attachment. |
| compiled_target | string | inference-native compiled graph target. `partitioned` attaches compiled executors to eligible graph partitions. `whole-model` requests a compiled backend only when it can own the full traced graph sha |
| tool_choice | object | Controls how the model uses tools |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/antfly/json-schema/antfly-inference-generate-request-schema.json",
"title": "InferenceGenerateRequest",
"x-generated": "2026-10-29",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/antfly-openapi.yaml#/components/schemas/InferenceGenerateRequest",
"type": "object",
"required": [
"model",
"messages"
],
"properties": {
"model": {
"type": "string",
"description": "Name of the generator model from models_dir/generators/"
},
"messages": {
"type": "array",
"items": {
"$ref": "#/$defs/InferenceChatMessage"
},
"description": "Conversation messages (OpenAI-compatible format). When\n`context_management.checkpoint` is supplied, this array is the active suffix;\nthe archived prefix represented by the checkpoint is not resent.\n"
},
"logprobs": {
"type": "boolean",
"default": false,
"description": "Return actual token log-probabilities for non-streaming native grammar decoding. Incompatible routes reject the request."
},
"top_logprobs": {
"type": "integer",
"minimum": 1,
"maximum": 64,
"default": 64,
"description": "Bounded alternatives per decoded token; retained evidence also has a hard byte ceiling."
},
"max_tokens": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Maximum tokens to generate",
"default": 256
},
"temperature": {
"type": "number",
"format": "float",
"x-go-type-skip-optional-pointer": false,
"description": "Sampling temperature (0.0 = deterministic, higher = more random)",
"minimum": 0,
"maximum": 2,
"default": 0
},
"top_p": {
"type": "number",
"format": "float",
"x-go-type-skip-optional-pointer": false,
"description": "Nucleus sampling probability",
"minimum": 0,
"maximum": 1,
"default": 0
},
"top_k": {
"type": "integer",
"x-go-type-skip-optional-pointer": false,
"minimum": 0,
"maximum": 2147483647,
"description": "Top-k sampling (inference extension, not in OpenAI API)",
"default": 0
},
"stream": {
"type": "boolean",
"description": "If true, partial message deltas will be sent as SSE events",
"default": false
},
"stream_options": {
"$ref": "#/$defs/InferenceGenerateStreamOptions"
},
"chat_template_kwargs": {
"$ref": "#/$defs/InferenceGenerateChatTemplateKwargs"
},
"ignore_eos": {
"type": "boolean",
"description": "inference-native benchmarking and controlled-generation extension. When true, generation\ndoes not stop on the model's end-of-sequence token and continues until another stop\ncondition, such as `max_tokens`, is reached. Omitted or false preserves normal EOS handling.\n",
"default": false
},
"tools": {
"type": "array",
"items": {
"$ref": "#/$defs/InferenceTool"
},
"description": "List of tools (functions) the model can call.\nOnly supported by models with tool_call_format configured.\n"
},
"min_p": {
"type": "number",
"format": "float",
"description": "Min-p sampling threshold. Filters tokens where p < min_p * max_p. Simpler alternative to top_p.",
"minimum": 0,
"maximum": 1,
"default": 0
},
"repetition_penalty": {
"type": "number",
"format": "float",
"description": "Repetition penalty factor applied to previously generated tokens (1.0 = disabled, >1.0 penalizes, <1.0 encourages)",
"minimum": 0,
"exclusiveMinimum": true,
"default": 1
},
"frequency_penalty": {
"type": "number",
"format": "float",
"description": "Additive penalty based on token frequency in context (logit -= frequency_penalty * count)",
"minimum": -2,
"maximum": 2,
"default": 0
},
"presence_penalty": {
"type": "number",
"format": "float",
"description": "Additive penalty for tokens that appeared at all in context (logit -= presence_penalty if count > 0)",
"minimum": -2,
"maximum": 2,
"default": 0
},
"response_format": {
"$ref": "#/$defs/InferenceGenerateResponseFormat",
"description": "Structured output control. OpenAI-compatible entry point for requesting JSON output.\n`{\"type\":\"json_object\"}` is supported directly. `{\"type\":\"json_schema\"}` is compiled into a native constrained-decoding grammar on the native backend.\n"
},
"grammar": {
"type": "string",
"description": "inference-native grammar override. When set, this takes precedence over `response_format`.\nGrammar-constrained decoding is currently native-backend only.\n"
},
"draft_model": {
"type": "string",
"description": "inference-native speculative decoding extension. Path or model identifier for a smaller draft model.\n"
},
"speculative_k": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"description": "inference-native speculative decoding extension. Number of draft tokens proposed per verification round.\n"
},
"speculation_policy": {
"type": "string",
"enum": [
"auto",
"force",
"off"
],
"description": "inference-native speculative decoding policy: `auto`, `force`, or `off`.\nDefaults to `auto` when a draft model is requested.\n"
},
"speculation_calibration": {
"type": "string",
"enum": [
"none",
"probe",
"positive"
],
"description": "inference-native speculative decoding calibration state: `none`, `probe`, or `positive`.\nDefaults to `probe` for `auto` draft requests so they are measured instead of silently disabled,\nand to `none` for `force` or `off`.\n"
},
"cache_dtype": {
"type": "string",
"enum": [
"f16",
"f32",
"int8",
"fp8",
"int4"
],
"description": "inference-native KV cache quantization format. Lower precision reduces memory usage but may\naffect generation quality. Default auto-selects based on backend (f16 for GPU, f32 for CPU).\n"
},
"cache_compaction_ratio": {
"type": "number",
"format": "float",
"minimum": 0.0,
"exclusiveMinimum": true,
"maximum": 1.0,
"description": "inference-native KV cache compaction ratio applied after prefill via Attention Matching.\nSelects a subset of keys and fits new values via OLS to preserve attention behavior.\n0.02 = 50x compression, 0.1 = 10x, 0.5 = 2x. Null/omitted = no compaction.\nThe resident HTTP server currently rejects non-null values with `UNSUPPORTED_FEATURE`;\ndevice-backed compaction is not yet supported.\n"
},
"context_management": {
"$ref": "#/$defs/InferenceContextManagement"
},
"kv_cache": {
"$ref": "#/$defs/InferenceKvCachePolicy"
},
"prompt_cache_key": {
"type": "string",
"maxLength": 256,
"description": "inference-native prompt prefix cache namespace key. Requests with the same key can\nreuse matching prompt-prefix KV on the same node. Required to enable prompt caching;\nrequests without a key are never cached.\n"
},
"prompt_cache": {
"type": "boolean",
"description": "inference-native prompt prefix cache control. False bypasses prompt cache for this request.\nOn Metal, an eligible cache request stays on the eager paged-attention path instead of\nautomatically selecting whole-model compiled execution. Explicit `mode: compiled` is\nrejected while prompt caching is active.\n"
},
"backend": {
"$ref": "#/$defs/InferenceModelBackend"
},
"mode": {
"type": "string",
"enum": [
"eager",
"compiled"
],
"description": "inference-native graph execution mode. `eager` keeps the direct runtime path when possible.\n`compiled` runs inference graph planning, partitioning, and backend executor attachment.\n"
},
"compiled_target": {
"type": "string",
"enum": [
"partitioned",
"whole-model"
],
"description": "inference-native compiled graph target. `partitioned` attaches compiled executors to eligible\ngraph partitions. `whole-model` requests a compiled backend only when it can own the full\ntraced graph shape.\n"
},
"tool_choice": {
"$ref": "#/$defs/InferenceToolChoice",
"description": "Controls how the model uses tools"
}
},
"$defs": {
"ChatMessageContent": {
"x-go-type": "stdjson.RawMessage",
"x-go-type-import": {
"path": "encoding/json",
"name": "stdjson"
},
"description": "Message content. Supports two formats:\n- Simple string: \"Hello, how are you?\"\n- Array of content parts: [{\"type\": \"text\", \"text\": \"Hello\"}]\n",
"oneOf": [
{
"type": "string",
"description": "Simple text content."
},
{
"type": "array",
"description": "Array of multimodal content parts.",
"items": {
"$ref": "#/$defs/ContentPart"
}
}
]
},
"ContentPart": {
"description": "A content part for multimodal input (text, image URL, or inline media).",
"oneOf": [
{
"$ref": "#/$defs/TextContentPart"
},
{
"$ref": "#/$defs/ImageURLContentPart"
},
{
"$ref": "#/$defs/MediaContentPart"
}
]
},
"ImageURL": {
"type": "object",
"description": "Image URL or data URI.",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL or data URI (data:image/png;base64,...)."
}
}
},
"ImageURLContentPart": {
"type": "object",
"description": "Image content in OpenAI-compatible format.",
"required": [
"type",
"image_url"
],
"properties": {
"type": {
"type": "string",
"enum": [
"image_url"
]
},
"image_url": {
"$ref": "#/$defs/ImageURL"
}
}
},
"InferenceChatMessage": {
"type": "object",
"required": [
"role"
],
"properties": {
"extra_content": {
"type": "object",
"additionalProperties": true,
"description": "Opaque provider message metadata. Preserve unchanged when replaying assistant messages; native Anthropic content retains signed thinking blocks."
},
"role": {
"$ref": "#/$defs/InferenceRole"
},
"content": {
"$ref": "#/$defs/ChatMessageContent"
},
"tool_calls": {
"type": "array",
"items": {
"$ref": "#/$defs/ToolCall"
},
"description": "Tool calls made by the assistant (only for role=assistant)"
},
"tool_call_id": {
"type": "string",
"description": "ID of the tool call this message is responding to (only for role=tool)"
}
}
},
"InferenceContextCheckpoint": {
"type": "object",
"additionalProperties": false,
"required": [
"version",
"covered_messages",
"covered_prefix_sha256",
"memory_sha256",
"model_revision",
"tokenizer_revision",
"template_revision",
"memory"
],
"properties": {
"version": {
"type": "string",
"enum": [
"v1"
],
"description": "Structured-memory checkpoint wire version."
},
"covered_messages": {
"type": "integer",
"minimum": 0,
"description": "Number of authoritative leading messages represented by this checkpoint."
},
"covered_prefix_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "SHA-256 of the canonical covered message prefix."
},
"parent_checkpoint_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"memory_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "SHA-256 of the canonical structured memory payload."
},
"model_revision": {
"type": "string"
},
"tokenizer_revision": {
"type": "string"
},
"template_revision": {
"type": "string"
},
"memory": {
"$ref": "#/$defs/InferenceContextStructuredMemory"
}
},
"description": "Structured memory bound to the exact model, tokenizer and chat-template\nrevisions. HTTP 409 CONTEXT_CHECKPOINT_STALE_REVISION means one of these\nrevisions changed. Rebuild from the original transcript using the selected\nmodel; retrying the same checkpoint against another generator is not a\nfallback. Digest/history/format failures use CONTEXT_CHECKPOINT_MISMATCH.\n"
},
"InferenceContextManagement": {
"type": "object",
"additionalProperties": false,
"required": [
"mode"
],
"properties": {
"mode": {
"type": "string",
"enum": [
"reject",
"window"
],
"description": "`reject` fails when the rendered input exceeds the model budget. `window`\npermits deterministic removal of older turns. Omission preserves the\nserver's existing reject-on-overflow behavior. Generation accepts only\nthese admission policies; `inspect` and `compact` are explicit preparation\noperations. The latest user turn, including its tool-call/result sequence,\nis always retained. A mandatory turn that cannot fit is rejected rather\nthan split; keep_recent_turns=0 does not remove the active turn.\n"
},
"checkpoint": {
"$ref": "#/$defs/InferenceContextCheckpoint"
},
"max_input_tokens": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647,
"description": "Optional client ceiling below the model's effective input limit."
},
"keep_recent_turns": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647,
"default": 2,
"description": "Minimum number of most recent complete turns retained by windowing."
}
}
},
"InferenceContextStructuredMemory": {
"type": "object",
"additionalProperties": false,
"required": [
"conversation",
"tool_evidence",
"unresolved_tool_calls"
],
"properties": {
"conversation": {
"type": "string",
"description": "Compacted conversation memory excluding attributed tool evidence."
},
"tool_evidence": {
"type": "array",
"items": {
"$ref": "#/$defs/InferenceContextToolEvidence"
}
},
"unresolved_tool_calls": {
"type": "array",
"items": {
"$ref": "#/$defs/InferenceContextUnresolvedToolCall"
}
}
}
},
"InferenceContextToolEvidence": {
"type": "object",
"additionalProperties": false,
"required": [
"tool_call_id",
"tool_name",
"facts"
],
"properties": {
"tool_call_id": {
"type": "string"
},
"tool_name": {
"type": "string"
},
"facts": {
"type": "string",
"description": "Compacted evidence attributed to this completed tool call."
}
}
},
"InferenceContextUnresolvedToolCall": {
"type": "object",
"additionalProperties": false,
"required": [
"tool_call_id",
"tool_name"
],
"properties": {
"tool_call_id": {
"type": "string"
},
"tool_name": {
"type": "string"
}
}
},
"InferenceFunctionDefinition": {
"type": "object",
"description": "Definition of a function that can be called by the model",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the function to call"
},
"description": {
"type": "string",
"description": "A description of what the function does"
},
"parameters": {
"type": "object",
"additionalProperties": true,
"description": "JSON Schema object describing the function parameters"
},
"strict": {
"type": "boolean",
"description": "Whether to enforce strict parameter validation",
"default": false
}
}
},
"InferenceGenerateChatTemplateKwargs": {
"type": "object",
"additionalProperties": false,
"description": "Typed options passed to the model's chat template.",
"properties": {
"enable_thinking": {
"type": "boolean",
"x-go-type-skip-optional-pointer": false,
"description": "Controls templates that support an `enable_thinking` variable. False asks the\ntemplate to open a public/final response channel directly. Omitted preserves the\nmodel template's default behavior.\n"
}
}
},
"InferenceGenerateJsonSchemaConfig": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Schema name"
},
"strict": {
"type": "boolean",
"description": "Whether output should strictly follow the schema"
},
"schema": {
"type": "object",
"additionalProperties": true,
"description": "JSON Schema object"
}
}
},
"InferenceGenerateResponseFormat": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"description": "Structured output mode",
"enum": [
"text",
"json_object",
"json_schema"
]
},
"json_schema": {
"$ref": "#/$defs/InferenceGenerateJsonSchemaConfig",
"description": "Optional schema payload for `type=json_schema`. Enforced during native constrained decoding and validated after generation."
}
}
},
"InferenceGenerateStreamOptions": {
"type": "object",
"description": "Options that apply only to streamed generation responses.",
"properties": {
"include_usage": {
"type": "boolean",
"description": "When true, emit a final usage-only chunk before the `[DONE]` sentinel.\nAll preceding chunks carry null or omitted usage.\n",
"default": false
}
}
},
"InferenceKvCachePolicy": {
"type": "object",
"additionalProperties": false,
"required": [
"mode"
],
"properties": {
"mode": {
"type": "string",
"enum": [
"exact_hybrid",
"select_v1"
],
"description": "Requested KV retention policy. `exact_hybrid` uses only model-native exact\nlocal/global attention retention. `select_v1` requests the versioned lossy\nselector and is rejected when the loaded model/backend has not qualified it.\n"
},
"version": {
"type": "string",
"enum": [
"v1"
],
"default": "v1",
"description": "Wire-contract version. The initial policies use `v1` only."
}
}
},
"InferenceModelBackend": {
"type": "string",
"description": "Optional backend preference for model loading or request execution.\n`auto` keeps the node default behavior.\n`xla` selects the PJRT/XLA backend and may require a PJRT plugin path via\n`ANTFLY_INFERENCE_XLA_PLUGIN`, `ANTFLY_INFERENCE_PJRT_PLUGIN`,\n`PJRT_PLUGIN_PATH`, or `PJRT_PLUGIN`.\n`webgpu` selects the Wasm/WebGPU backend in Wasm builds; pair it with\n`mode: \"compiled\"` on generation requests to request WebGPU graph partition execution.\n",
"enum": [
"auto",
"native",
"metal",
"cuda",
"xla",
"webgpu",
"wasm"
]
},
"InferenceRole": {
"type": "string",
"enum": [
"user",
"assistant",
"system",
"developer",
"tool"
],
"description": "Chat message role, including developer instructions preserved by context management."
},
"InferenceTool": {
"type": "object",
"description": "A tool (function) that the model can call",
"required": [
"type",
"function"
],
"properties": {
"type": {
"type": "string",
"enum": [
"function"
],
"description": "The type of tool (currently only \"function\" is supported)"
},
"function": {
"$ref": "#/$defs/InferenceFunctionDefinition"
}
}
},
"InferenceToolChoice": {
"description": "Controls how the model uses tools. Options:\n- \"auto\": Model decides whether to call a tool (default)\n- \"none\": Model will not call any tools\n- \"required\": Model must call at least one tool\n- object: Force a specific function to be called\n",
"oneOf": [
{
"type": "string",
"enum": [
"auto",
"none",
"required"
]
},
{
"type": "object",
"description": "Force a specific function to be called",
"required": [
"type",
"function"
],
"properties": {
"type": {
"type": "string",
"enum": [
"function"
]
},
"function": {
"$ref": "#/$defs/InferenceToolChoiceFunction"
}
}
}
]
},
"InferenceToolChoiceFunction": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the function to call"
}
}
},
"MediaContentPart": {
"type": "object",
"description": "Inline binary media content (audio, image, etc.).",
"required": [
"type",
"data",
"mime_type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"media"
]
},
"data": {
"type": "string",
"format": "byte",
"description": "Base64-encoded binary data."
},
"mime_type": {
"type": "string",
"description": "MIME type (audio/wav, image/gif, image/png, etc.)."
},
"sampling": {
"$ref": "#/$defs/VideoSamplingPolicy"
}
}
},
"TextContentPart": {
"type": "object",
"description": "Text content for multimodal input.",
"required": [
"type",
"text"
],
"properties": {
"type": {
"type": "string",
"enum": [
"text"
]
},
"text": {
"type": "string",
"description": "Text content."
}
}
},
"ToolCall": {
"type": "object",
"description": "OpenAI-compatible assistant tool call.",
"required": [
"id",
"type",
"function"
],
"properties": {
"id": {
"type": "string",
"description": "Tool call identifier."
},
"type": {
"type": "string",
"enum": [
"function"
]
},
"function": {
"$ref": "#/$defs/ToolCallFunction"
},
"extra_content": {
"type": "object",
"additionalProperties": true,
"description": "Opaque provider tool metadata, including Google thought signatures. Preserve it unchanged when replaying assistant tool calls."
}
}
},
"ToolCallFunction": {
"type": "object",
"description": "The function called by a model tool call.",
"required": [
"name",
"arguments"
],
"properties": {
"name": {
"type": "string",
"description": "Function name."
},
"arguments": {
"type": "string",
"description": "JSON string of function arguments."
}
}
},
"VideoSamplingPolicy": {
"type": "object",
"description": "Explicit EmbeddingGemma 2 video-group sampling. Timestamp windows are half-open and relative to the first presentation picture.",
"required": [
"policy"
],
"properties": {
"policy": {
"type": "string",
"enum": [
"reference",
"timestamps"
]
},
"start_ns": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"end_ns": {
"type": "integer",
"format": "int64",
"minimum": 1
},
"step_ns": {
"type": "integer",
"format": "int64",
"minimum": 1
},
"max_frames": {
"type": "integer",
"minimum": 1,
"maximum": 32
},
"overflow": {
"type": "string",
"enum": [
"uniform",
"truncate"
]
},
"hold": {
"type": "boolean",
"description": "Sample the displayed picture, including VFR holds, rather than the next picture at or after the target."
}
}
}
}
}
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/antfly-inference-generate-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.