> ## 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.

# Who am I

> The principal this token resolves to: workspace, key scope and agent, and the rate limits that apply.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/me
openapi: 3.1.0
info:
  title: Signal API
  version: 1.0.0
  description: >-
    Signal 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://first-signal-api.fly.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 Signal 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/me:
    get:
      tags:
        - Account
      summary: Who am I
      description: >-
        The principal this token resolves to: workspace, key scope and agent,
        and the rate limits that apply.
      operationId: getMe
      responses:
        '200':
          description: The principal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Principal'
        '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'
        '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://first-signal-api.fly.dev/v1/me" \
              -H "Authorization: Bearer $SIGNAL_API_KEY"
components:
  schemas:
    Principal:
      type: object
      properties:
        object:
          type: string
          enum:
            - principal
        kind:
          type: string
          enum:
            - key
            - person
        organizationId:
          type: string
          description: >-
            The workspace: an organization id, or `user:<id>` for a personal
            workspace.
        userId:
          type:
            - string
            - 'null'
          description: The person's user id; null for a key.
        key:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            scope:
              type: string
              enum:
                - read
                - write
            agentId:
              type:
                - string
                - 'null'
              description: >-
                The one agent this key may reach; null for every agent of the
                workspace.
            monthlyBudgetUsd:
              type:
                - number
                - 'null'
              description: A write key's monthly cap on test spend. Null on a read key.
          required:
            - id
            - scope
            - agentId
            - monthlyBudgetUsd
        rateLimits:
          type: object
          properties:
            all:
              type: object
              properties:
                perMinute:
                  type: integer
                  description: Tokens added per minute.
                burst:
                  type: integer
                  description: 'Bucket size: requests allowed at once after a quiet spell.'
              required:
                - perMinute
                - burst
            write:
              type: object
              properties:
                perMinute:
                  type: integer
                  description: Tokens added per minute.
                burst:
                  type: integer
                  description: 'Bucket size: requests allowed at once after a quiet spell.'
              required:
                - perMinute
                - burst
          required:
            - all
            - write
      required:
        - object
        - kind
        - organizationId
        - userId
        - key
        - rateLimits
      example:
        object: principal
        kind: key
        organizationId: org_2mR8kQ1vXz
        userId: null
        key:
          id: 00000000-0000-4000-8000-00000000000a
          scope: read
          agentId: null
          monthlyBudgetUsd: null
        rateLimits:
          all:
            perMinute: 600
            burst: 120
          write:
            perMinute: 60
            burst: 10
    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: test_calls
                  description: analysed_calls, agents, copilot_messages or test_calls.
                limit:
                  type: integer
                used:
                  type: integer
                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.
          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
    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.