> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signalmd.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a call's signals

> What was noticed on one call: the signals raised and the observations made. A signal is a symptom noticed on a call, not a diagnosed issue: the issues say where a problem is, why, and what to change.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/agents/{agentId}/calls/{callId}/signals
openapi: 3.1.0
info:
  title: SignalMD API
  version: 1.0.0
  description: >-
    SignalMD reads a voice agent's production calls and says what to fix, then
    tests whether the fix worked.

    This API exposes the same data the web app shows: agents, calls and their
    traces, signals, issues,

    versions and their comparisons, tests, and test runs.


    Authenticate with `Authorization: Bearer sig_...` (an API key from the API
    keys page). Read keys may

    call every `read` operation; write keys may also call `write` operations,
    within their monthly budget.

    Each operation's scope is in `x-signal-scope`. Errors share one envelope
    (`Error`), lists share one

    cursor scheme (`limit`, `cursor`, `hasMore`, `nextCursor`), and every
    response carries `Request-Id`

    and `RateLimit-*` headers.
servers:
  - url: https://api.signalmd.dev
    description: Production
  - url: http://localhost:43124
    description: Local development
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Who the token belongs to and what it may do.
  - name: Agents
    description: Voice agents connected to the workspace.
  - name: Calls
    description: Production calls, their traces and per-call signals.
  - name: Signals
    description: What SignalMD noticed across calls.
  - name: Issues
    description: 'Problems worth fixing: where, why, and what to change.'
  - name: Versions
    description: Agent versions and how each one did.
  - name: Comparisons
    description: Stored comparisons between two versions.
  - name: Tests
    description: Tests, test sets, personas and coverage.
  - name: Runs
    description: Test runs and the attempts inside them.
paths:
  /v1/agents/{agentId}/calls/{callId}/signals:
    get:
      tags:
        - Calls
      summary: Get a call's signals
      description: >-
        What was noticed on one call: the signals raised and the observations
        made. A signal is a symptom noticed on a call, not a diagnosed issue:
        the issues say where a problem is, why, and what to change.
      operationId: getCallSignals
      parameters:
        - schema:
            type: string
            format: uuid
            pattern: >-
              ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
            example: 3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f
            description: The agent's id.
          required: true
          description: The agent's id.
          name: agentId
          in: path
        - schema:
            type: string
            format: uuid
            description: The call's id in SignalMD (not the platform's call id).
          required: true
          description: The call's id in SignalMD (not the platform's call id).
          name: callId
          in: path
      responses:
        '200':
          description: The call's signals.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallSignals'
        '400':
          description: 'Invalid request: a parameter or the body failed validation.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, invalid or revoked credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not permitted for this principal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            The agent, or a resource under it, does not exist or is not visible
            to this key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. See Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error. The message is generic; quote the request id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-codeSamples:
        - lang: bash
          label: curl
          source: >-
            curl
            "https://api.signalmd.dev/v1/agents/6f1d2c3b-4a5e-4f60-8b7a-9c0d1e2f3a4b/calls/0b9e8d7c-6f5a-4b3c-9d2e-1f0a9b8c7d6e/signals"
            \
              -H "Authorization: Bearer $SIGNAL_API_KEY"
components:
  schemas:
    CallSignals:
      type: object
      properties:
        object:
          type: string
          enum:
            - call_signals
        callId:
          type: string
          format: uuid
          pattern: >-
            ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
          example: 3f1c2d4e-5a6b-4c7d-8e9f-0a1b2c3d4e5f
        detected:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/DetectedSignal'
          description: The signals raised on the call. Null until the call is analysed.
        observations:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/SignalObservation'
          description: >-
            Moments in the call checked against how the agent is configured.
            Evidence for an issue, never an issue on their own. Null when the
            call has not been read this way.
      required:
        - object
        - callId
        - detected
        - observations
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/ErrorType'
            code:
              type: string
              example: agent_not_found
              description: The specific reason; stable within v1.
            message:
              type: string
              example: Agent not found.
            param:
              type:
                - string
                - 'null'
              description: The request field at fault, for a validation error.
            requestId:
              type:
                - string
                - 'null'
              example: req_8c1f0e2b4a6d9e3f7a5c1b0d
            quota:
              type: object
              properties:
                metric:
                  type: string
                  example: credits
                  description: >-
                    credits when the workspace's monthly credits are used up, or
                    agents when the plan's agent limit is reached.
                activity:
                  type: string
                  enum:
                    - observation
                    - testing
                    - chat
                  example: testing
                  description: >-
                    With metric credits: what the request would have spent them
                    on. observation is analysing calls, testing is test runs,
                    chat is the copilot.
                requested:
                  type: integer
                  example: 18
                  description: >-
                    With metric credits: the credits the request needed to
                    start.
                limit:
                  type: integer
                  description: 'The plan''s limit: the month''s credits, or its agents.'
                used:
                  type: integer
                  description: How much of the limit is used this month.
                plan:
                  type: string
                  example: free_org
                  description: The workspace's plan slug.
                upgradePath:
                  type: string
                  example: /billing
                  description: Where in the web app the plan is changed.
              required:
                - metric
                - limit
                - used
                - plan
                - upgradePath
              description: >-
                Present when code is quota_exceeded: the plan limit the request
                would pass.
            proposalId:
              type: string
              format: uuid
              description: >-
                Present when code is criteria_locked: the pending criteria
                proposal the change was filed as. A person approves or rejects
                it.
          required:
            - type
            - code
            - message
            - param
            - requestId
      required:
        - error
      example:
        error:
          type: not_found_error
          code: agent_not_found
          message: Agent not found.
          param: null
          requestId: req_8c1f0e2b4a6d9e3f7a5c1b0d
    DetectedSignal:
      type: object
      properties:
        code:
          type: string
          description: >-
            Stable code of the signal, or `checklist.<lane>.<question>` for a
            stored checklist answer.
        title:
          type: string
          description: How it reads on this call; can name a place ("lookup failed").
        severity:
          type: string
          enum:
            - info
            - warn
            - critical
        klass:
          type: string
          enum:
            - technical
            - flow
            - content
            - behaviour
          description: >-
            Which kind of fix it points at: `technical` (an engineer), `flow`
            (whoever owns the conversation design), `content` (whoever owns
            prompts and knowledge), or `behaviour` (something callers do that is
            worth knowing but is not a defect).
        confidence:
          type: number
          description: 0 to 1.
        location:
          type: object
          properties:
            kind:
              type: string
              enum:
                - node
                - edge
                - tool
                - global
              description: >-
                A step of the flow, a transition between two steps, a tool, or
                the whole call.
            id:
              type: string
              description: >-
                The step id, `from->to` for a transition, the tool name, or
                `global`.
            label:
              type: string
              description: How the place reads to a person.
          required:
            - kind
            - id
            - label
        detail:
          type: string
          description: >-
            What was measured or read. On a `checklist.*` signal, that a model
            judged it from what was said.
        cause:
          type:
            - object
            - 'null'
          properties:
            code:
              type: string
              description: Stable key for the cause.
            label:
              type: string
              description: How the cause reads to a person.
            detail:
              type:
                - string
                - 'null'
              description: What in the trace says so.
          required:
            - code
            - label
            - detail
          description: >-
            Why it happened, read from what the trace shows around it. Null when
            no cause was read.
        turnIndex:
          type:
            - integer
            - 'null'
        evidenceQuote:
          type:
            - string
            - 'null'
          description: The words at the moment, clipped.
      required:
        - code
        - title
        - severity
        - klass
        - confidence
        - location
        - detail
        - cause
        - turnIndex
        - evidenceQuote
      example:
        code: tool_timeout
        title: Tool timed out
        severity: critical
        klass: technical
        confidence: 0.9
        location:
          kind: tool
          id: check_availability
          label: check_availability
        detail: check_availability returned nothing after 9.4 s.
        cause:
          code: tool_latency
          label: Slow tool
          detail: null
        turnIndex: 7
        evidenceQuote: Let me check what we have open next week.
    SignalObservation:
      type: object
      properties:
        rule:
          type: string
          description: Stable code of the check that produced it.
        kind:
          type: string
          enum:
            - conformance
            - omission
            - checklist
          description: >-
            `conformance`: something the agent said against what its
            configuration expects. `omission`: something its configuration
            expected that did not happen. `checklist`: a stored checklist
            answer.
        label:
          type: string
        turnIndex:
          type: integer
          description: The turn it is about.
        detail:
          type: string
          description: What was expected, found or broken.
        basis:
          type: string
          enum:
            - checked
            - inferred
          description: >-
            `checked`: confirmed against the call record. `inferred`: a reading
            of the conversation, not confirmed.
      required:
        - rule
        - kind
        - label
        - turnIndex
        - detail
        - basis
    ErrorType:
      type: string
      enum:
        - invalid_request_error
        - authentication_error
        - budget_error
        - permission_error
        - not_found_error
        - conflict_error
        - rate_limit_error
        - api_error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key (`sig_...`), or a session token from the web app.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.