> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# ai_message

> Send a message to an active AI session on a call via REST.

Send a message to an active AI session on a call. This injects instructions
or context into the AI agent's conversation without the caller hearing the
message directly.

## **Request**

### Schema (`calling.ai_message`)

```yaml
components:
  schemas:
    uuid:
      type: string
      format: uuid
      description: Universal Unique Identifier.
      title: uuid
    CallingCallRequestDiscriminatorMappingCallingAiMessageParamsRole:
      type: string
      enum:
        - system
        - user
        - assistant
      description: >-
        The role that the message is from. By convention pair with
        `message_text` (the validator itself does not enforce this).

        - `system`: Inject instructions or context that modify the AI's behavior
        mid-conversation without the caller hearing it.

        - `user`: Inject a message as if the caller said it. The AI will respond
        as if the caller spoke it.

        - `assistant`: Inject a message as if the AI said it. Appears as an AI
        response in the conversation history.
      title: CallingCallRequestDiscriminatorMappingCallingAiMessageParamsRole
    Calling.CallAIMessageResetParams:
      type: object
      properties:
        full_reset:
          type: boolean
          description: >-
            Whether to perform a full reset of the AI conversation, clearing all
            history.
        user_prompt:
          type: string
          description: A new user prompt to set after resetting the conversation.
        system_prompt:
          type: string
          description: A new system prompt to set after resetting the conversation.
      description: Parameters for resetting the AI conversation state.
      title: Calling.CallAIMessageResetParams
    CallingCallRequestDiscriminatorMappingCallingAiMessageParamsGlobalData:
      type: object
      properties: {}
      description: Arbitrary JSON data to merge into the AI session's global data store.
      title: CallingCallRequestDiscriminatorMappingCallingAiMessageParamsGlobalData
    CallingCallRequestDiscriminatorMappingCallingAiMessageParams:
      type: object
      properties:
        role:
          $ref: >-
            #/components/schemas/CallingCallRequestDiscriminatorMappingCallingAiMessageParamsRole
          description: >-
            The role that the message is from. By convention pair with
            `message_text` (the validator itself does not enforce this).

            - `system`: Inject instructions or context that modify the AI's
            behavior mid-conversation without the caller hearing it.

            - `user`: Inject a message as if the caller said it. The AI will
            respond as if the caller spoke it.

            - `assistant`: Inject a message as if the AI said it. Appears as an
            AI response in the conversation history.
        message_text:
          type: string
          description: >-
            The text content sent to the AI. Typically required unless `reset`
            is provided.
        reset:
          $ref: '#/components/schemas/Calling.CallAIMessageResetParams'
          description: Parameters for resetting the AI conversation state.
        global_data:
          $ref: >-
            #/components/schemas/CallingCallRequestDiscriminatorMappingCallingAiMessageParamsGlobalData
          description: >-
            Arbitrary JSON data to merge into the AI session's global data
            store.
      description: An object of parameters that will be utilized by the active command.
      title: CallingCallRequestDiscriminatorMappingCallingAiMessageParams
    Calling.CallAIMessageRequest:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
          description: The unique identifying ID of a existing call.
        params:
          $ref: >-
            #/components/schemas/CallingCallRequestDiscriminatorMappingCallingAiMessageParams
          description: An object of parameters that will be utilized by the active command.
      required:
        - id
        - params
      title: Calling.CallAIMessageRequest
```

## **Response**

### Schema (`Calling.CallResponse`)

```yaml
components:
  schemas:
    uuid:
      type: string
      format: uuid
      description: Universal Unique Identifier.
      title: uuid
    Calling.CallDirection:
      type: string
      enum:
        - inbound
        - outbound
        - outbound-api
      description: The direction of the call.
      title: Calling.CallDirection
    CallingCallLegSource:
      type: string
      enum:
        - realtime_api
      description: Source of this call.
      title: CallingCallLegSource
    Calling.ChargeDetails:
      type: object
      properties:
        description:
          type: string
          description: Description for this charge.
        charge:
          type: number
          format: double
          description: Charged amount.
      required:
        - description
        - charge
      title: Calling.ChargeDetails
    Calling.CallResponseStatus:
      type: string
      enum:
        - queued
        - initiated
        - created
        - ringing
        - answered
        - ending
        - ended
        - failed
        - canceled
        - completed
      description: The status of the call throughout its lifecycle.
      title: Calling.CallResponseStatus
    CallingCallLegType0:
      type: string
      enum:
        - relay_pstn_call
      title: CallingCallLegType0
    CallingCallLegType1:
      type: string
      enum:
        - relay_sip_call
      title: CallingCallLegType1
    CallingCallLegType2:
      type: string
      enum:
        - relay_webrtc_call
      title: CallingCallLegType2
    CallingCallLegType:
      oneOf:
        - $ref: '#/components/schemas/CallingCallLegType0'
        - $ref: '#/components/schemas/CallingCallLegType1'
        - $ref: '#/components/schemas/CallingCallLegType2'
      description: Type of this call.
      title: CallingCallLegType
    Calling.CallLeg:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
          description: >-
            The unique identifier of the call on SignalWire. This can be used to
            update the call programmatically.
        from:
          type: string
          description: The origin number or address.
        to:
          type: string
          description: The destination number or address.
        direction:
          $ref: '#/components/schemas/Calling.CallDirection'
          description: The direction of the call.
        source:
          $ref: '#/components/schemas/CallingCallLegSource'
          description: Source of this call.
        url:
          type:
            - string
            - 'null'
          description: The URL associated with this call.
        charge:
          type: number
          format: double
          description: Total charge for this call.
        created_at:
          type: string
          format: date-time
          description: The date and time when the call was created.
        charge_details:
          type: array
          items:
            $ref: '#/components/schemas/Calling.ChargeDetails'
          description: Details on charges associated with this call.
        status:
          oneOf:
            - $ref: '#/components/schemas/Calling.CallResponseStatus'
            - type: 'null'
          description: The status of the call.
        duration:
          type:
            - integer
            - 'null'
          description: The duration of the call in seconds.
        duration_ms:
          type:
            - integer
            - 'null'
          description: The duration of the call in milliseconds.
        billing_ms:
          type:
            - integer
            - 'null'
          description: The billable duration of the call in milliseconds.
        type:
          $ref: '#/components/schemas/CallingCallLegType'
          description: Type of this call.
        parent_id:
          oneOf:
            - $ref: '#/components/schemas/uuid'
            - type: 'null'
          description: The parent call ID if this is a child call.
      required:
        - id
        - from
        - to
        - direction
        - source
        - url
        - charge
        - created_at
        - charge_details
        - status
        - duration
        - duration_ms
        - billing_ms
        - type
        - parent_id
      description: Returned when the call is a standard PSTN, SIP, or WebRTC call.
      title: Calling.CallLeg
    CallingFabricDeviceLegSource:
      type: string
      enum:
        - realtime_api
      description: Source of this call.
      title: CallingFabricDeviceLegSource
    CallingFabricDeviceLegType:
      type: string
      enum:
        - fabric_subscriber_device_leg
      description: Type of this call.
      title: CallingFabricDeviceLegType
    Calling.FabricDeviceLeg:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
          description: >-
            The unique identifier of the call on SignalWire. This can be used to
            update the call programmatically.
        from:
          type: string
          description: The origin number or address.
        to:
          type: string
          description: The destination number or address.
        direction:
          $ref: '#/components/schemas/Calling.CallDirection'
          description: The direction of the call.
        source:
          $ref: '#/components/schemas/CallingFabricDeviceLegSource'
          description: Source of this call.
        url:
          type:
            - string
            - 'null'
          description: The URL associated with this call.
        charge:
          type: number
          format: double
          description: Total charge for this call.
        created_at:
          type: string
          format: date-time
          description: The date and time when the call was created.
        charge_details:
          type: array
          items:
            $ref: '#/components/schemas/Calling.ChargeDetails'
          description: Details on charges associated with this call.
        status:
          description: >-
            The status of the call. Always null for Fabric subscriber device
            legs.
        type:
          $ref: '#/components/schemas/CallingFabricDeviceLegType'
          description: Type of this call.
      required:
        - id
        - from
        - to
        - direction
        - source
        - url
        - charge
        - created_at
        - charge_details
        - status
        - type
      description: >-
        Returned when the call is a Fabric subscriber device leg. The `status`
        field is always null for this type.
      title: Calling.FabricDeviceLeg
    Calling.CallResponse:
      oneOf:
        - $ref: '#/components/schemas/Calling.CallLeg'
        - $ref: '#/components/schemas/Calling.FabricDeviceLeg'
      title: Calling.CallResponse
```

## **Example**

```python {10}
from signalwire.rest import RestClient

client = RestClient(
    project="your-project-id",
    token="your-api-token",
    host="your-space.signalwire.com",
)

# Inject a system instruction into the AI session
client.calling.ai_message(
    call_id="call-id-xxx",
    message_text="The caller's account has been verified. You can proceed with the transfer.",
    role="system",
)
```