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

# Get a signal

> Get one of a project's signals by id.



## OpenAPI

````yaml /openapi.json get /signals/{signalId}
openapi: 3.1.1
info:
  title: Sazabi Public API
  version: 1.0.0
  description: >
    Public REST API for Sazabi. Authenticate using a secret API key in the
    Authorization header.


    ## Pagination


    This API uses two pagination strategies depending on the endpoint type:


    ### Cursor-Based Pagination (List Endpoints)


    List endpoints (threads, messages, keys) use cursor-based pagination for
    efficient, consistent results:


    - **Parameters**: `limit` (items per page, default 50, max 100), `cursor`
    (opaque pagination token)

    - **Response**: Includes `nextCursor` field - pass this as `cursor` in the
    next request

    - **End of results**: When `nextCursor` is `null`, there are no more results

    - **Example**: `GET
    /v1/threads?limit=20&cursor=01234567-89ab-cdef-0123-456789abcdef`


    ### Page-Based Pagination (Search Endpoints)


    Search endpoints use page-based pagination due to the underlying search
    engine:


    - **Parameters**: `limit` (items per page, default 20, max 100), `page`
    (1-indexed page number)

    - **Response**: Includes `pagination` object with `page`, `limit`,
    `totalResults`, `totalPages`

    - **Example**: `GET /v1/search/threads?q=error&limit=10&page=2`
servers:
  - url: https://api.sazabi.com/v1
    description: Production
security: []
paths:
  /signals/{signalId}:
    get:
      tags:
        - Signals
      summary: Get a signal
      description: Get one of a project's signals by id.
      operationId: signals.get
      parameters:
        - name: signalId
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The signal's id.
        - name: projectId
          in: query
          schema:
            type: string
            format: uuid
            description: >-
              Project to read signals for. Auto-filled from CLI and SDK context
              when omitted.
          allowEmptyValue: true
          allowReserved: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  signal:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: The signal's id.
                          projectId:
                            type: string
                            format: uuid
                          createdAt:
                            type: string
                            format: date-time
                            description: When the detector reported it.
                          type:
                            const: new_error
                          payload:
                            type: object
                            properties:
                              timestamp:
                                type: string
                                format: date-time
                                description: >-
                                  When the customer's system emitted the error
                                  log.
                              serviceName:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                                description: >-
                                  The service that emitted the error log, when
                                  known.
                              severity:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                                description: The error log's severity, when known.
                              body:
                                type: string
                                description: >-
                                  The error log line as received, truncated to 8
                                  KiB.
                            required:
                              - timestamp
                              - serviceName
                              - severity
                              - body
                            additionalProperties: false
                            description: >-
                              A `new_error` signal's payload: the error log
                              itself.
                        required:
                          - id
                          - projectId
                          - createdAt
                          - type
                          - payload
                      - type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: The signal's id.
                          projectId:
                            type: string
                            format: uuid
                          createdAt:
                            type: string
                            format: date-time
                            description: When the detector reported it.
                          type:
                            const: sensor
                          payload:
                            anyOf:
                              - type: object
                                properties:
                                  transition:
                                    const: firing
                                  sensor:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        description: The sensor's id.
                                      name:
                                        type: string
                                        description: The sensor's name.
                                      description:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                        description: >-
                                          What the sensor watches and why, when it
                                          says.
                                    required:
                                      - id
                                      - name
                                      - description
                                    description: >-
                                      The sensor, as it was defined when it sent
                                      the signal.
                                  group:
                                    anyOf:
                                      - const: '*'
                                      - type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties: {}
                                        description: >-
                                          A group's values by column: the sensor
                                          query's GROUP BY columns, or a judged
                                          item's columns. Empty for a query
                                          without GROUP BY.
                                    description: >-
                                      The group whose state changed, or `*`: the
                                      summary that stands for the groups past
                                      the sensor's 10 signals in a minute.
                                  groups:
                                    type: object
                                    properties:
                                      count:
                                        type: integer
                                        minimum: -9007199254740991
                                        maximum: 9007199254740991
                                        description: How many groups `*` stands for.
                                      top:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            group:
                                              type: object
                                              propertyNames:
                                                type: string
                                              additionalProperties: {}
                                              description: >-
                                                A group's values by column: the sensor
                                                query's GROUP BY columns, or a judged
                                                item's columns. Empty for a query
                                                without GROUP BY.
                                            score:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                          required:
                                            - group
                                            - score
                                        description: >-
                                          The groups with the highest scores, at
                                          most 10.
                                    required:
                                      - count
                                      - top
                                    description: The groups a `*` firing stands for.
                                  since:
                                    type: string
                                    format: date-time
                                    description: >-
                                      The end of the minute the change happened
                                      in.
                                  detection:
                                    type: object
                                    properties:
                                      condition:
                                        type: string
                                        description: The sensor's condition, as written.
                                      observed:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          The value the condition compared, over
                                          the window.
                                      past:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          What it usually is: the past windows'
                                          median, or the one.
                                      band:
                                        anyOf:
                                          - type: array
                                            minItems: 2
                                            maxItems: 2
                                            items:
                                              type: number
                                          - type: 'null'
                                        description: >-
                                          The past windows' spread, scaled to the
                                          window.
                                      test:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                        description: >-
                                          The statistical test that judged the
                                          gap, by name.
                                      score:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          How unlikely the gap is when nothing is
                                          wrong, as -log10 of its chance.
                                      volume:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          How many lines or requests the window
                                          held.
                                      answers:
                                        type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties: {}
                                        description: A judged item's answers, by question.
                                      samples:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            at:
                                              type: string
                                              description: When the line was logged.
                                            message:
                                              type: string
                                              description: The line's message.
                                          required:
                                            - at
                                            - message
                                        description: >-
                                          Up to 3 lines that matched, for a log
                                          match.
                                    description: >-
                                      What moved and by how much, against the
                                      past windows.
                                  evidence:
                                    type: object
                                    properties:
                                      window:
                                        type: array
                                        minItems: 2
                                        maxItems: 2
                                        items:
                                          type: string
                                          format: date-time
                                        description: >-
                                          The window evaluated: its start and its
                                          end.
                                      query:
                                        type: string
                                        description: >-
                                          A query for the log lines behind the
                                          change, on `logs`.
                                    required:
                                      - window
                                      - query
                                    description: Where to find the lines behind the change.
                                required:
                                  - transition
                                  - sensor
                                  - group
                                  - since
                              - type: object
                                properties:
                                  transition:
                                    const: resolved
                                  sensor:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        description: The sensor's id.
                                      name:
                                        type: string
                                        description: The sensor's name.
                                      description:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                        description: >-
                                          What the sensor watches and why, when it
                                          says.
                                    required:
                                      - id
                                      - name
                                      - description
                                    description: >-
                                      The sensor, as it was defined when it sent
                                      the signal.
                                  group:
                                    anyOf:
                                      - const: '*'
                                      - type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties: {}
                                        description: >-
                                          A group's values by column: the sensor
                                          query's GROUP BY columns, or a judged
                                          item's columns. Empty for a query
                                          without GROUP BY.
                                    description: >-
                                      The group whose state changed, or `*`: the
                                      summary that stands for the groups past
                                      the sensor's 10 signals in a minute.
                                  since:
                                    type: string
                                    format: date-time
                                    description: >-
                                      The end of the minute the change happened
                                      in.
                                  reason:
                                    enum:
                                      - passing
                                      - updated
                                      - deleted
                                    type: string
                                    description: >-
                                      `passing`: the condition passed for the
                                      sensor's `resolve_after`. `updated`: the
                                      sensor's query changed. `deleted`: the
                                      sensor was deleted.
                                  detection:
                                    type: object
                                    properties:
                                      condition:
                                        type: string
                                        description: The sensor's condition, as written.
                                      observed:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          The value the condition compared, over
                                          the window.
                                      past:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          What it usually is: the past windows'
                                          median, or the one.
                                      band:
                                        anyOf:
                                          - type: array
                                            minItems: 2
                                            maxItems: 2
                                            items:
                                              type: number
                                          - type: 'null'
                                        description: >-
                                          The past windows' spread, scaled to the
                                          window.
                                      test:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                        description: >-
                                          The statistical test that judged the
                                          gap, by name.
                                      score:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          How unlikely the gap is when nothing is
                                          wrong, as -log10 of its chance.
                                      volume:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                        description: >-
                                          How many lines or requests the window
                                          held.
                                      answers:
                                        type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties: {}
                                        description: A judged item's answers, by question.
                                      samples:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            at:
                                              type: string
                                              description: When the line was logged.
                                            message:
                                              type: string
                                              description: The line's message.
                                          required:
                                            - at
                                            - message
                                        description: >-
                                          Up to 3 lines that matched, for a log
                                          match.
                                    description: >-
                                      What moved and by how much, against the
                                      past windows.
                                  evidence:
                                    type: object
                                    properties:
                                      window:
                                        type: array
                                        minItems: 2
                                        maxItems: 2
                                        items:
                                          type: string
                                          format: date-time
                                        description: >-
                                          The window evaluated: its start and its
                                          end.
                                      query:
                                        type: string
                                        description: >-
                                          A query for the log lines behind the
                                          change, on `logs`.
                                    required:
                                      - window
                                      - query
                                    description: Where to find the lines behind the change.
                                required:
                                  - transition
                                  - sensor
                                  - group
                                  - since
                                  - reason
                              - type: object
                                properties:
                                  transition:
                                    const: stopped
                                  sensor:
                                    type: object
                                    properties:
                                      id:
                                        type: string
                                        description: The sensor's id.
                                      name:
                                        type: string
                                        description: The sensor's name.
                                      description:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                        description: >-
                                          What the sensor watches and why, when it
                                          says.
                                    required:
                                      - id
                                      - name
                                      - description
                                    description: >-
                                      The sensor, as it was defined when it sent
                                      the signal.
                                  since:
                                    type: string
                                    format: date-time
                                    description: >-
                                      The end of the minute the change happened
                                      in.
                                  reason:
                                    enum:
                                      - scan_budget
                                      - query_error
                                    type: string
                                    description: >-
                                      `scan_budget`: it was the costliest sensor
                                      on `logs` of a project past its hourly
                                      scan budget. `query_error`: ClickHouse
                                      refused its query.
                                  message:
                                    type: string
                                    description: ClickHouse's error, for `query_error`.
                                required:
                                  - transition
                                  - sensor
                                  - since
                                  - reason
                              - type: object
                                properties:
                                  transition:
                                    const: reset
                                  since:
                                    type: string
                                    format: date-time
                                    description: >-
                                      The end of the minute the change happened
                                      in.
                                required:
                                  - transition
                                  - since
                            description: >-
                              A `sensor` signal's payload: one change of state
                              of one group of a sensor. `firing` and `resolved`
                              name the group; `stopped` means the region stopped
                              evaluating the sensor until its query changes;
                              `reset` means the region lost the project's sensor
                              state, so firings from before it get no
                              `resolved`.
                        required:
                          - id
                          - projectId
                          - createdAt
                          - type
                          - payload
                    description: >-
                      A signal: a generic envelope plus a payload typed by
                      `type`. More types will come; handle unknown ones with a
                      default case.
                required:
                  - signal

````

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