Amigo Sessions API
The Sessions API from Amigo — 4 operation(s) for sessions.
The Sessions API from Amigo — 4 operation(s) for sessions.
openapi: 3.1.0
info:
title: Amigo Account Sessions API
version: 0.1.0
servers:
- url: https://api.amigo.ai
- url: https://internal-api.amigo.ai
- url: https://api-eu-central-1.amigo.ai
- url: https://api-ap-southeast-2.amigo.ai
- url: https://api-ca-central-1.amigo.ai
security:
- Bearer-Authorization: []
Bearer-Authorization-Organization: []
Basic: []
tags:
- name: Sessions
paths:
/v1/{workspace_id}/sessions/active:
get:
tags:
- Sessions
summary: List active voice sessions
description: Real-time list of active voice sessions from Valkey (cross-pod).
operationId: list_active_sessions_v1__workspace_id__sessions_active_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ActiveSession'
type: array
title: Response List Active Sessions V1 Workspace Id Sessions Active Get
parameters:
- name: workspace_id
in: path
required: true
schema:
type: string
format: uuid
title: Workspace Id
/v1/{workspace_id}/sessions/fleet-status:
get:
tags:
- Sessions
summary: Agones fleet capacity status
description: 'Live Agones fleet capacity: Ready/Allocated/total GameServers plus headroom against the maxReplicas ceiling. `fleet=voice` (default) reads the per-call voice fleet; `fleet=tool-runner` reads the isolated background-tool fleet. Workspace-GLOBAL — one fleet serves every workspace, so the path workspace_id is only the auth anchor, never a data filter. Operator-only.'
operationId: get_fleet_status_v1__workspace_id__sessions_fleet_status_get
parameters:
- name: workspace_id
in: path
required: true
schema:
type: string
format: uuid
title: Workspace Id
- name: fleet
in: query
required: false
schema:
enum:
- voice
- tool-runner
type: string
default: voice
title: Fleet
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/FleetStatusResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/{workspace_id}/sessions/{call_sid}/inject:
post:
tags:
- Sessions
summary: Inject event into active session
description: Inject an external event or guidance message into an active voice session. The agent incorporates it into its next response. Use event_type='guidance' for operator coaching, 'external_event' for system notifications.
operationId: inject_session_event_v1__workspace_id__sessions__call_sid__inject_post
parameters:
- name: workspace_id
in: path
required: true
schema:
type: string
format: uuid
title: Workspace Id
- name: call_sid
in: path
required: true
schema:
type: string
title: Call Sid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InjectRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InjectResponse'
'404':
description: Session not found.
'503':
description: Voice agent service unavailable.
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/{workspace_id}/sessions/start:
post:
tags:
- Sessions
summary: Start a web text conversation session with an entity
description: Start a web text session with a world model entity. Materializes the conversation and returns conversation_id for subsequent turns via POST /v1/{ws}/conversations/{id}/turns.
operationId: start_text_session_v1__workspace_id__sessions_start_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StartSessionRequest'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StartSessionResponse'
'404':
description: Service or entity not found.
'503':
description: Agent service unavailable.
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
parameters:
- name: workspace_id
in: path
required: true
schema:
type: string
format: uuid
title: Workspace Id
components:
schemas:
CanonicalIdString:
type: string
maxLength: 256
minLength: 3
pattern: ^[A-Za-z0-9._-]+:[A-Za-z0-9._-]+:[A-Za-z0-9._-]+$
FleetStatusResponse:
properties:
fleet:
type: string
title: Fleet
namespace:
type: string
title: Namespace
ready:
type: integer
title: Ready
allocated:
type: integer
title: Allocated
total:
type: integer
title: Total
max_replicas:
anyOf:
- type: integer
- type: 'null'
title: Max Replicas
headroom:
anyOf:
- type: integer
- type: 'null'
title: Headroom
by_state:
additionalProperties:
type: integer
type: object
title: By State
type: object
required:
- fleet
- namespace
- ready
- allocated
- total
- max_replicas
- headroom
- by_state
title: FleetStatusResponse
description: 'Live Agones fleet capacity (workspace-global).
``headroom`` = remaining isolated-unit slots (``max_replicas - allocated``);
``max_replicas``/``headroom`` are null when the ceiling isn''t configured upstream.
The counts span the whole fleet (one fleet serves every workspace) — this is NOT
per-workspace. ``fleet``/``namespace`` echo which fleet was read (voice per-call
fleet, or the tool-runner background-tool fleet via ``?fleet=tool-runner``).'
InjectRequest:
properties:
message:
type: string
maxLength: 5000
minLength: 1
title: Message
sender:
type: string
maxLength: 200
title: Sender
default: System
event_type:
type: string
enum:
- external_event
- guidance
title: Event Type
description: external_event (factual info) or guidance (instructional)
default: external_event
type: object
required:
- message
title: InjectRequest
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
ActiveSession:
properties:
call_sid:
type: string
title: Call Sid
service_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Service Id
workspace_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Workspace Id
caller_id:
type: string
title: Caller Id
direction:
type: string
title: Direction
duration_seconds:
type: number
title: Duration Seconds
current_state:
type: string
title: Current State
default: ''
scenario:
type: string
title: Scenario
default: ''
type: object
required:
- call_sid
- caller_id
- direction
- duration_seconds
title: ActiveSession
InjectResponse:
properties:
status:
type: string
enum:
- delivered
- queued_no_subscriber
title: Status
call_sid:
type: string
title: Call Sid
type: object
required:
- status
- call_sid
title: InjectResponse
StartSessionResponse:
properties:
conversation_id:
type: string
format: uuid
title: Conversation Id
session_status:
type: string
enum:
- created
- already_active
title: Session Status
channel_kind:
type: string
const: web
title: Channel Kind
entity_id:
type: string
format: uuid
title: Entity Id
service_id:
type: string
format: uuid
title: Service Id
created_at:
type: string
title: Created At
type: object
required:
- conversation_id
- session_status
- channel_kind
- entity_id
- service_id
- created_at
title: StartSessionResponse
StartSessionRequest:
properties:
service_id:
type: string
format: uuid
title: Service Id
entity_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Entity Id
description: World model entity UUID. Provide either entity_id or canonical_id.
canonical_id:
anyOf:
- $ref: '#/components/schemas/CanonicalIdString'
- type: 'null'
description: World model canonical_id of the form 'source:resource_type:id' (e.g. 'charmhealth:Patient:67890'). The structural regex on CanonicalIdString blocks spaces, names, DOBs, and similar regulated content. Resolved against the SDP-projected world.entities_synced table; a freshly-created entity may not be visible yet if the projection is lagging. Provide either entity_id or canonical_id, not both.
channel_kind:
type: string
const: web
title: Channel Kind
greeting:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Greeting
description: Custom greeting. Agent auto-greets if omitted.
type: object
required:
- service_id
- channel_kind
title: StartSessionRequest
securitySchemes:
Bearer-Authorization:
type: http
scheme: bearer
bearerFormat: JWT
description: Amigo issued JWT token that identifies an user. It's issued either after logging in through the frontend, or manually through the [`SignInWithAPIKey`](sign-in-with-api-key) endpoint.
Bearer-Authorization-Organization:
type: apiKey
in: header
name: X-ORG-ID
description: An optional organization identifier that indicates from which organization the token is issued. This is used in rare cases where the user to authenticate is making a request for resources in another organization.
Basic:
type: http
scheme: basic
description: The username should be set to {org_id}_{user_id}, and the password should be the Amigo issued JWT token that identifies the user.