Arize Phoenix · Schema

ChatRequest

Discriminated union of chat request payloads.

LLM ObservabilityAI EvaluationOpenTelemetryTracingLLMOpsAI MonitoringOpen SourcePrompt EngineeringDatasetsExperiments
View JSON Schema on GitHub

JSON Schema

phoenix-chat-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/phoenix/json-schema/phoenix-chat-request-schema.json",
  "title": "ChatRequest",
  "description": "Discriminated union of chat request payloads.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/phoenix-chat-api-openapi.yml#/components/schemas/ChatRequest",
  "oneOf": [
    {
      "$ref": "#/$defs/ChatSubmitMessage"
    },
    {
      "$ref": "#/$defs/ChatRegenerateMessage"
    }
  ],
  "$defs": {
    "AgentSpanContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "span",
          "title": "Type"
        },
        "projectNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Projectnodeid"
        },
        "spanNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Spannodeid"
        },
        "otelSpanId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Otelspanid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "AgentSpanContext",
      "description": "Span the user has selected.\n\nExactly one of ``span_node_id`` (relay) or ``otel_span_id`` (OpenTelemetry\nhex) must be set. ``project_node_id`` is optional because a span can be\nselected from views outside a project route."
    },
    "AppContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "app",
          "title": "Type"
        },
        "currentDateTime": {
          "type": "string",
          "title": "Currentdatetime"
        },
        "timeZone": {
          "type": "string",
          "title": "Timezone"
        }
      },
      "type": "object",
      "required": [
        "type",
        "currentDateTime",
        "timeZone"
      ],
      "title": "AppContext",
      "description": "Per-turn browser clock context for resolving relative time requests."
    },
    "AssistantMessageMetadata": {
      "properties": {
        "sessionId": {
          "type": "string",
          "title": "Sessionid"
        },
        "trace": {
          "$ref": "#/$defs/AssistantMessageMetadataTraceIds"
        },
        "usage": {
          "$ref": "#/$defs/AssistantMessageMetadataUsage"
        }
      },
      "type": "object",
      "required": [
        "sessionId"
      ],
      "title": "AssistantMessageMetadata",
      "description": "Wire schema for the chat stream's `message_metadata` payload."
    },
    "AssistantMessageMetadataTraceIds": {
      "properties": {
        "traceId": {
          "type": "string",
          "title": "Traceid"
        },
        "rootSpanId": {
          "type": "string",
          "title": "Rootspanid"
        }
      },
      "type": "object",
      "required": [
        "traceId",
        "rootSpanId"
      ],
      "title": "AssistantMessageMetadataTraceIds"
    },
    "AssistantMessageMetadataUsage": {
      "properties": {
        "tokens": {
          "$ref": "#/$defs/AssistantMessageMetadataUsageTokens"
        },
        "promptDetails": {
          "$ref": "#/$defs/AssistantMessageMetadataUsageTokenDetails"
        }
      },
      "type": "object",
      "required": [
        "tokens"
      ],
      "title": "AssistantMessageMetadataUsage"
    },
    "AssistantMessageMetadataUsageTokenDetails": {
      "properties": {
        "cacheRead": {
          "type": "integer",
          "title": "Cacheread"
        },
        "cacheWrite": {
          "type": "integer",
          "title": "Cachewrite"
        }
      },
      "type": "object",
      "required": [
        "cacheRead",
        "cacheWrite"
      ],
      "title": "AssistantMessageMetadataUsageTokenDetails"
    },
    "AssistantMessageMetadataUsageTokens": {
      "properties": {
        "prompt": {
          "type": "integer",
          "title": "Prompt"
        },
        "completion": {
          "type": "integer",
          "title": "Completion"
        },
        "total": {
          "type": "integer",
          "title": "Total"
        }
      },
      "type": "object",
      "required": [
        "prompt",
        "completion",
        "total"
      ],
      "title": "AssistantMessageMetadataUsageTokens"
    },
    "AssistantMetadataUIMessage": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "role": {
          "type": "string",
          "enum": [
            "system",
            "user",
            "assistant"
          ],
          "title": "Role"
        },
        "metadata": {
          "$ref": "#/$defs/AssistantMessageMetadata"
        },
        "parts": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/TextUIPart"
              },
              {
                "$ref": "#/$defs/ReasoningUIPart"
              },
              {
                "$ref": "#/$defs/ToolInputStreamingPart"
              },
              {
                "$ref": "#/$defs/ToolInputAvailablePart"
              },
              {
                "$ref": "#/$defs/ToolOutputAvailablePart"
              },
              {
                "$ref": "#/$defs/ToolOutputErrorPart"
              },
              {
                "$ref": "#/$defs/ToolApprovalRequestedPart"
              },
              {
                "$ref": "#/$defs/ToolApprovalRespondedPart"
              },
              {
                "$ref": "#/$defs/ToolOutputDeniedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolInputStreamingPart"
              },
              {
                "$ref": "#/$defs/DynamicToolInputAvailablePart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputAvailablePart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputErrorPart"
              },
              {
                "$ref": "#/$defs/DynamicToolApprovalRequestedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolApprovalRespondedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputDeniedPart"
              },
              {
                "$ref": "#/$defs/SourceUrlUIPart"
              },
              {
                "$ref": "#/$defs/SourceDocumentUIPart"
              },
              {
                "$ref": "#/$defs/FileUIPart"
              },
              {
                "$ref": "#/$defs/DataUIPart"
              },
              {
                "$ref": "#/$defs/StepStartUIPart"
              }
            ]
          },
          "type": "array",
          "title": "Parts"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id",
        "role",
        "parts"
      ],
      "title": "AssistantMetadataUIMessage",
      "description": "`UIMessage` with `metadata` narrowed to `AssistantMessageMetadata`."
    },
    "BuiltInProviderModelSelection": {
      "properties": {
        "providerType": {
          "type": "string",
          "const": "builtin",
          "title": "Providertype"
        },
        "provider": {
          "$ref": "#/$defs/ModelProvider"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        },
        "openaiApiType": {
          "type": "string",
          "enum": [
            "chat_completions",
            "responses"
          ],
          "title": "Openaiapitype",
          "default": "responses"
        }
      },
      "type": "object",
      "required": [
        "providerType",
        "provider",
        "modelName"
      ],
      "title": "BuiltInProviderModelSelection",
      "description": "Chat against a Phoenix built-in provider.\n\nCredentials and connection details (base URL, Azure endpoint, AWS\nregion) are resolved from the secret store first and the process\nenvironment second. ``openai_api_type`` is honoured by the OpenAI and\nAzure OpenAI branches; other providers ignore it."
    },
    "ChatContext": {
      "oneOf": [
        {
          "$ref": "#/$defs/AppContext"
        },
        {
          "$ref": "#/$defs/ProjectContext"
        },
        {
          "$ref": "#/$defs/TraceContext"
        },
        {
          "$ref": "#/$defs/AgentSpanContext"
        },
        {
          "$ref": "#/$defs/PlaygroundContext"
        },
        {
          "$ref": "#/$defs/CodeEvaluatorContext"
        },
        {
          "$ref": "#/$defs/LlmEvaluatorContext"
        },
        {
          "$ref": "#/$defs/DatasetContext"
        },
        {
          "$ref": "#/$defs/GraphQLContext"
        },
        {
          "$ref": "#/$defs/WebAccessContext"
        },
        {
          "$ref": "#/$defs/SubagentsContext"
        }
      ],
      "title": "ChatContext",
      "description": "Discriminated union of every UI-state context the agent understands."
    },
    "ChatRegenerateMessage": {
      "properties": {
        "trigger": {
          "type": "string",
          "const": "regenerate-message",
          "title": "Trigger"
        },
        "id": {
          "type": "string",
          "title": "Id"
        },
        "messages": {
          "items": {
            "$ref": "#/$defs/AssistantMetadataUIMessage"
          },
          "type": "array",
          "title": "Messages"
        },
        "messageId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Messageid"
        },
        "ingestTraces": {
          "type": "boolean",
          "title": "Ingesttraces",
          "default": false
        },
        "exportRemoteTraces": {
          "type": "boolean",
          "title": "Exportremotetraces",
          "default": false
        },
        "contexts": {
          "items": {
            "$ref": "#/$defs/ChatContext"
          },
          "type": "array",
          "title": "Contexts"
        },
        "editPermission": {
          "type": "string",
          "enum": [
            "manual",
            "bypass"
          ],
          "title": "Editpermission",
          "default": "manual"
        },
        "requestedSkills": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Requestedskills",
          "description": "Skills the user explicitly requested via the prompt's slash-command affordance. The server force-loads each available skill by injecting a synthetic load_skill tool call/result at the tail of the message history. Unknown or context-unavailable names are ignored."
        },
        "model": {
          "oneOf": [
            {
              "$ref": "#/$defs/CustomProviderModelSelection"
            },
            {
              "$ref": "#/$defs/BuiltInProviderModelSelection"
            }
          ],
          "title": "Model"
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "trigger",
        "id",
        "messages",
        "model"
      ],
      "title": "ChatRegenerateMessage",
      "description": "Regenerate message extended with Phoenix-specific fields."
    },
    "ChatSubmitMessage": {
      "properties": {
        "trigger": {
          "type": "string",
          "const": "submit-message",
          "title": "Trigger",
          "default": "submit-message"
        },
        "id": {
          "type": "string",
          "title": "Id"
        },
        "messages": {
          "items": {
            "$ref": "#/$defs/AssistantMetadataUIMessage"
          },
          "type": "array",
          "title": "Messages"
        },
        "ingestTraces": {
          "type": "boolean",
          "title": "Ingesttraces",
          "default": false
        },
        "exportRemoteTraces": {
          "type": "boolean",
          "title": "Exportremotetraces",
          "default": false
        },
        "contexts": {
          "items": {
            "$ref": "#/$defs/ChatContext"
          },
          "type": "array",
          "title": "Contexts"
        },
        "editPermission": {
          "type": "string",
          "enum": [
            "manual",
            "bypass"
          ],
          "title": "Editpermission",
          "default": "manual"
        },
        "requestedSkills": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Requestedskills",
          "description": "Skills the user explicitly requested via the prompt's slash-command affordance. The server force-loads each available skill by injecting a synthetic load_skill tool call/result at the tail of the message history. Unknown or context-unavailable names are ignored."
        },
        "model": {
          "oneOf": [
            {
              "$ref": "#/$defs/CustomProviderModelSelection"
            },
            {
              "$ref": "#/$defs/BuiltInProviderModelSelection"
            }
          ],
          "title": "Model"
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "id",
        "messages",
        "model"
      ],
      "title": "ChatSubmitMessage",
      "description": "Submit message extended with Phoenix-specific fields."
    },
    "CodeEvaluatorContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "code_evaluator",
          "title": "Type"
        },
        "evaluatorNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Evaluatornodeid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "CodeEvaluatorContext",
      "description": "Code-evaluator create/edit form mounted in the current browser route."
    },
    "CustomProviderModelSelection": {
      "properties": {
        "providerType": {
          "type": "string",
          "const": "custom",
          "title": "Providertype"
        },
        "providerId": {
          "type": "string",
          "title": "Providerid"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        }
      },
      "type": "object",
      "required": [
        "providerType",
        "providerId",
        "modelName"
      ],
      "title": "CustomProviderModelSelection",
      "description": "Chat against a stored custom provider record."
    },
    "DataUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^data-",
          "title": "Type"
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "title": "Id"
        },
        "data": {
          "title": "Data"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "title": "DataUIPart",
      "description": "Data part with dynamic type based on data name."
    },
    "DatasetContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dataset",
          "title": "Type"
        },
        "datasetNodeId": {
          "type": "string",
          "title": "Datasetnodeid"
        },
        "datasetVersionNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Datasetversionnodeid"
        }
      },
      "type": "object",
      "required": [
        "type",
        "datasetNodeId"
      ],
      "title": "DatasetContext",
      "description": "Dataset the user is currently viewing or has bound to a workflow.\n\nCarries the dataset's relay node id and, when known, the active version\nnode id. These IDs scope the create-form handoff link and the sampling of\nactive dataset examples used as prompt context; the dataset schema itself\nis open."
    },
    "DynamicToolApprovalRequestedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-requested",
          "title": "State",
          "default": "approval-requested"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolApprovalRequestedPart",
      "description": "Dynamic tool part in approval-requested state (awaiting user decision)."
    },
    "DynamicToolApprovalRespondedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-responded",
          "title": "State",
          "default": "approval-responded"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolApprovalRespondedPart",
      "description": "Dynamic tool part in approval-responded state (user approved/denied, execution pending)."
    },
    "DynamicToolInputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-available",
          "title": "State",
          "default": "input-available"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolInputAvailablePart",
      "description": "Dynamic tool part in input-available state."
    },
    "DynamicToolInputStreamingPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-streaming",
          "title": "State",
          "default": "input-streaming"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId"
      ],
      "title": "DynamicToolInputStreamingPart",
      "description": "Dynamic tool part in input-streaming state."
    },
    "DynamicToolOutputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-available",
          "title": "State",
          "default": "output-available"
        },
        "input": {
          "title": "Input"
        },
        "output": {
          "title": "Output"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "preliminary": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Preliminary"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input",
        "output"
      ],
      "title": "DynamicToolOutputAvailablePart",
      "description": "Dynamic tool part in output-available state."
    },
    "DynamicToolOutputDeniedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-denied",
          "title": "State",
          "default": "output-denied"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolOutputDeniedPart",
      "description": "Dynamic tool part in output-denied state (tool was denied, terminal state)."
    },
    "DynamicToolOutputErrorPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-error",
          "title": "State",
          "default": "output-error"
        },
        "input": {
          "title": "Input"
        },
        "errorText": {
          "type": "string",
          "title": "Errortext"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input",
        "errorText"
      ],
      "title": "DynamicToolOutputErrorPart",
      "description": "Dynamic tool part in output-error state."
    },
    "FileUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "file",
          "title": "Type",
          "default": "file"
        },
        "mediaType": {
          "type": "string",
          "title": "Mediatype"
        },
        "filename": {
          "type": [
            "string",
            "null"
          ],
          "title": "Filename"
        },
        "url": {
          "type": "string",
          "title": "Url"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "mediaType",
        "url"
      ],
      "title": "FileUIPart",
      "description": "A file part of a message."
    },
    "GraphQLContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "graphql",
          "title": "Type"
        },
        "mutationsEnabled": {
          "type": "boolean",
          "title": "Mutationsenabled"
        }
      },
      "type": "object",
      "required": [
        "type",
        "mutationsEnabled"
      ],
      "title": "GraphQLContext",
      "description": "GraphQL runtime state."
    },
    "LlmEvaluatorContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "llm_evaluator",
          "title": "Type"
        },
        "evaluatorNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Evaluatornodeid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "LlmEvaluatorContext",
      "description": "LLM-evaluator create/edit form mounted in the current browser route."
    },
    "ModelProvider": {
      "type": "string",
      "enum": [
        "OPENAI",
        "AZURE_OPENAI",
        "ANTHROPIC",
        "GOOGLE",
        "DEEPSEEK",
        "XAI",
        "OLLAMA",
        "AWS",
        "CEREBRAS",
        "FIREWORKS",
        "GROQ",
        "MOONSHOT",
        "PERPLEXITY",
        "TOGETHER"
      ],
      "title": "ModelProvider"
    },
    "PlaygroundBuiltinModelContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "builtin",
          "title": "Type",
          "default": "builtin"
        },
        "provider": {
          "type": "string",
          "title": "Provider"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        }
      },
      "type": "object",
      "required": [
        "provider",
        "modelName"
      ],
      "title": "PlaygroundBuiltinModelContext",
      "description": "Built-in playground model selection."
    },
    "PlaygroundContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "playground",
          "title": "Type"
        },
        "recordExperiments": {
          "type": "boolean",
          "title": "Recordexperiments",
          "default": true
        },
        "repetitions": {
          "type": "integer",
          "title": "Repetitions",
          "default": 1
        },
        "nextExperimentScaffold": {
          "$ref": "#/$defs/PlaygroundExperimentScaffoldContext"
        },
        "instances": {
          "items": {
            "$ref": "#/$defs/PlaygroundInstanceContext"
          },
          "type": "array",
          "title": "Instances"
        },
        "evaluators": {
          "items": {
         

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://artifacts.apis.io/phoenix/json-schema/phoenix-chat-request-schema.json

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/phoenix-chat-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.