Amigo · Schema

ConversationDetail

CompanyArtificial IntelligenceHealthcareAI AgentsVoiceClinicalConversational AIFHIRElectronic Health RecordsHIPAA

Properties

Name Type Description
id string
channel_kind object
status string
lifecycle string
entity_id object
service_id object
direction object
turn_count integer
duration_seconds object
created_at string
updated_at string
call_sid object
caller_id object
phone_number object
quality_score object
has_recording object
completion_reason object
escalation_status object
final_state object
source object
turns array
plan object
voice object
View JSON Schema on GitHub

JSON Schema

amigo-conversation-detail-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amigo/main/json-schema/amigo-conversation-detail-schema.json",
  "title": "ConversationDetail",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/amigo-conversations-api-openapi.yml#/components/schemas/ConversationDetail",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "title": "Id"
    },
    "channel_kind": {
      "$ref": "#/$defs/ChannelKind"
    },
    "status": {
      "type": "string",
      "enum": [
        "active",
        "closed",
        "completed",
        "in-progress",
        "failed",
        "paused"
      ],
      "title": "Status"
    },
    "lifecycle": {
      "type": "string",
      "enum": [
        "active",
        "dormant",
        "closed"
      ],
      "title": "Lifecycle"
    },
    "entity_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Id"
    },
    "service_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ],
      "title": "Service Id"
    },
    "direction": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Direction"
    },
    "turn_count": {
      "type": "integer",
      "title": "Turn Count",
      "default": 0
    },
    "duration_seconds": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Duration Seconds"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "call_sid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Call Sid"
    },
    "caller_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Caller Id"
    },
    "phone_number": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Phone Number"
    },
    "quality_score": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quality Score"
    },
    "has_recording": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Has Recording"
    },
    "completion_reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completion Reason"
    },
    "escalation_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Escalation Status"
    },
    "final_state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Final State"
    },
    "source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source"
    },
    "turns": {
      "items": {
        "$ref": "#/$defs/ConversationTurn"
      },
      "type": "array",
      "title": "Turns",
      "default": []
    },
    "plan": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Plan"
    },
    "voice": {
      "anyOf": [
        {
          "$ref": "#/$defs/VoiceDetail"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "id",
    "channel_kind",
    "status",
    "lifecycle",
    "created_at",
    "updated_at"
  ],
  "$defs": {
    "ChannelKind": {
      "type": "string",
      "enum": [
        "voice",
        "sms",
        "whatsapp",
        "email",
        "web",
        "imessage"
      ],
      "title": "ChannelKind",
      "description": "HSM execution channel type.\n\nDetermines how the HSM engine communicates with end users.\nEach kind maps to one or more providers."
    },
    "ContentPartPayload": {
      "properties": {
        "type": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "pattern": "^[a-z][a-z0-9._-]*$",
          "title": "Type",
          "default": "text"
        },
        "text": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 10000
            },
            {
              "type": "null"
            }
          ],
          "title": "Text"
        },
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "title": "Url"
        },
        "media_type": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 128
            },
            {
              "type": "null"
            }
          ],
          "title": "Media Type"
        },
        "provider_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 256
            },
            {
              "type": "null"
            }
          ],
          "title": "Provider Id"
        },
        "metadata": {
          "additionalProperties": true,
          "type": "object",
          "maxProperties": 50,
          "title": "Metadata"
        }
      },
      "type": "object",
      "title": "ContentPartPayload",
      "description": "HTTP/WebSocket shape for a modality-neutral conversation content part."
    },
    "ConversationToolCallDetail": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name"
        },
        "call_id": {
          "type": "string",
          "title": "Call Id"
        },
        "input": {
          "additionalProperties": true,
          "type": "object",
          "title": "Input"
        },
        "result": {
          "type": "string",
          "title": "Result",
          "default": ""
        },
        "succeeded": {
          "type": "boolean",
          "title": "Succeeded",
          "default": true
        },
        "duration_ms": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 3600000.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Duration Ms",
          "description": "Wall-clock tool execution time in milliseconds, measured at the engage_step call site. Omitted (null) on legacy turns that did not capture timing."
        },
        "error_message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Message",
          "description": "Failure detail recorded for the tool call when ``succeeded`` is false. Null on successful calls or when no message was captured."
        }
      },
      "type": "object",
      "required": [
        "tool_name",
        "call_id"
      ],
      "title": "ConversationToolCallDetail"
    },
    "ConversationTurn": {
      "properties": {
        "turn_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Turn Id",
          "description": "Stable identifier of the user exchange this message belongs to, derived deterministically from (conversation_id, turn_index) — identical across ``POST /turns`` responses and re-reads of the conversation history. User and agent messages from the same exchange share this value. Null on messages that precede the first user turn (proactive greetings, channel-event preludes)."
        },
        "turn_index": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Turn Index",
          "description": "Zero-based ordinal of the user exchange this message belongs to (0 = first user turn). Derived server-side from the conversation's user-turn count — never stored. Null exactly when ``turn_id`` is null."
        },
        "role": {
          "type": "string",
          "enum": [
            "agent",
            "user",
            "system"
          ],
          "title": "Role"
        },
        "text": {
          "type": "string",
          "title": "Text"
        },
        "timestamp": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Timestamp"
        },
        "channel": {
          "anyOf": [
            {
              "$ref": "#/$defs/ChannelKind"
            },
            {
              "type": "null"
            }
          ],
          "description": "Channel this turn occurred on. A conversation that switched channels has a self-describing per-turn history; null on turns written before per-turn attribution or on channel-less internal turns."
        },
        "content": {
          "items": {
            "$ref": "#/$defs/ContentPartPayload"
          },
          "type": "array",
          "title": "Content",
          "default": []
        },
        "tool_calls": {
          "items": {
            "$ref": "#/$defs/ConversationToolCallDetail"
          },
          "type": "array",
          "title": "Tool Calls",
          "description": "Tool calls executed during this (agent) turn. Populated only when the request opts in via ``include_tool_calls=true``; empty otherwise and on turns that did not invoke tools.",
          "default": []
        },
        "selected_action_description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Selected Action Description",
          "description": "Description of the context-graph action selected for this turn. Null means no action was selected or no selected action was recorded."
        },
        "state_transition": {
          "anyOf": [
            {
              "$ref": "#/$defs/ConversationTurnStateTransition"
            },
            {
              "type": "null"
            }
          ],
          "description": "Context-graph state transition that occurred during this turn. Null means no transition took place or no transition was recorded. Deprecated: use state_transitions instead. If multiple transitions were recorded, this field reports the first source state and final destination state.",
          "deprecated": true
        },
        "state_transitions": {
          "items": {
            "$ref": "#/$defs/ConversationTurnStateTransition"
          },
          "type": "array",
          "title": "State Transitions",
          "description": "Ordered context-graph state transitions that occurred during this turn.",
          "default": []
        },
        "available_actions": {
          "items": {
            "$ref": "#/$defs/ConversationTurnAvailableAction"
          },
          "type": "array",
          "title": "Available Actions",
          "description": "Action choices available in the turn's resolved context-graph state. Empty when actions cannot be resolved or the resolved state is not an action state.",
          "default": []
        }
      },
      "type": "object",
      "required": [
        "role",
        "text"
      ],
      "title": "ConversationTurn"
    },
    "ConversationTurnAvailableAction": {
      "properties": {
        "description": {
          "type": "string",
          "title": "Description",
          "description": "Human-readable description of an action available in the turn's state."
        }
      },
      "type": "object",
      "required": [
        "description"
      ],
      "title": "ConversationTurnAvailableAction"
    },
    "ConversationTurnStateTransition": {
      "properties": {
        "from": {
          "type": "string",
          "title": "From",
          "description": "Source context-graph state before the turn's state transition."
        },
        "to": {
          "type": "string",
          "title": "To",
          "description": "Destination context-graph state after the turn's state transition."
        }
      },
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "title": "ConversationTurnStateTransition"
    },
    "VoiceDetail": {
      "properties": {
        "recording_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Recording Path"
        },
        "twilio_recording_sid": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Twilio Recording Sid"
        },
        "twilio_recording_duration": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Twilio Recording Duration"
        },
        "has_recording": {
          "type": "boolean",
          "title": "Has Recording",
          "default": false
        },
        "verified_transcript": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Verified Transcript"
        },
        "transcript_accuracy": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Transcript Accuracy"
        },
        "emotional_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Emotional Summary"
        },
        "barge_in_events": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array",
          "title": "Barge In Events",
          "default": []
        },
        "states_visited": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "States Visited",
          "default": []
        },
        "participants": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array",
          "title": "Participants",
          "default": []
        },
        "config": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Config"
        },
        "call_analysis": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Call Analysis"
        },
        "forwarding": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Forwarding"
        },
        "escalation": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Escalation"
        },
        "safety": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Safety"
        },
        "quality_breakdown": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Quality Breakdown"
        },
        "risk_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Risk Summary"
        },
        "latency_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Latency Summary"
        },
        "conversation_metrics": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Conversation Metrics"
        },
        "tool_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Tool Summary"
        },
        "safety_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Safety Summary"
        },
        "operator_summary": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Operator Summary"
        }
      },
      "type": "object",
      "title": "VoiceDetail"
    }
  }
}

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/amigo-conversation-detail"
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.