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

# Get API key identity

> Discover your workspace, scopes, profile, and rate limits from an API key

Returns credential introspection for the calling API key: its workspace, granted scopes, capability profile, rate limits, and expiry. The response reflects current state. Any valid active API key can call this endpoint; no scope is required.


## OpenAPI

````yaml GET /v1/me
openapi: 3.1.0
info:
  title: Auriko API
  version: 1.0.0
  description: >
    Intelligent LLM routing API with OpenAI-compatible interface.


    ## Overview


    Auriko provides a unified API for accessing multiple LLM providers with
    intelligent

    routing based on cost, latency, throughput, and availability.


    ## OpenAI Compatibility


    The API is compatible with OpenAI's Chat Completions API. You can use any

    OpenAI SDK by changing the base URL and API key.


    ## Auriko Extensions


    Beyond OpenAI compatibility, Auriko adds:


    - **Multi-model routing**: Request multiple models with `gateway.models[]`
    array

    - **Routing options**: Control provider selection with `routing` object

    - **Provider extensions**: Pass provider-specific parameters with
    `extensions` object

    - **Routing metadata**: Get transparency into routing decisions via
    `routing_metadata`
  contact:
    name: Auriko Support
    url: https://auriko.ai
  license:
    name: Proprietary
    url: https://auriko.ai/terms
servers:
  - url: https://api.auriko.ai
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Chat
    description: Chat completion endpoints
  - name: Responses
    description: OpenAI Response API endpoints
  - name: Callable Models
    description: Model IDs available for authenticated inference requests
  - name: Model Catalog
    description: Public model and provider catalog endpoints
  - name: Workspaces
    description: Workspace management
  - name: Budgets
    description: Spend control and budget management
  - name: API Keys
    description: API key management
  - name: BYOK
    description: Bring-your-own-key provider key management
  - name: Billing
    description: Credit balance and billing
  - name: Account
    description: API key introspection
  - name: Messages
    description: Anthropic Messages API endpoints
  - name: Routing
    description: Workspace routing configuration
  - name: Usage
    description: Usage statistics and request lookup
  - name: Members
    description: Workspace member and invite management
  - name: Audit
    description: Workspace audit event log
paths:
  /v1/me:
    get:
      tags:
        - Account
      summary: Get API key identity
      description: |
        Returns database-fresh credential introspection for the calling API key:
        credential type, status, derived profile, key metadata, workspace,
        granted scopes, structured rate limits, and expiry. Any valid active
        API key may call this endpoint — no scope is required.
      operationId: getApiKeyIdentity
      responses:
        '200':
          description: API key identity
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            X-Budget-Daily-Spend:
              description: Daily budget spend in USD (present when daily budget exists)
              schema:
                type: string
              example: '1.23'
            X-Budget-Daily-Limit:
              description: Daily budget limit in USD (present when daily budget exists)
              schema:
                type: string
              example: '10.00'
            X-Budget-Weekly-Spend:
              description: Weekly budget spend in USD (present when weekly budget exists)
              schema:
                type: string
              example: '8.50'
            X-Budget-Weekly-Limit:
              description: Weekly budget limit in USD (present when weekly budget exists)
              schema:
                type: string
              example: '50.00'
            X-Budget-Monthly-Spend:
              description: Monthly budget spend in USD (present when monthly budget exists)
              schema:
                type: string
              example: '35.00'
            X-Budget-Monthly-Limit:
              description: Monthly budget limit in USD (present when monthly budget exists)
              schema:
                type: string
              example: '200.00'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyIdentity'
              example:
                credential_type: api_key
                status: active
                profile: inference
                key_id: 550e8400-e29b-41d4-a716-446655440000
                key_prefix: ak_live_abc1
                key_name: Production inference
                workspace:
                  id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                  name: Acme Corp
                scopes:
                  - inference:invoke
                rate_limits:
                  inference_rpm: 1000
                  management_reads_rpm: 120
                  management_writes_rpm: 30
                expires_at: null
                created_at: '2026-01-15T00:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: bash
          label: curl
          source: |
            curl https://api.auriko.ai/v1/me \
              -H "Authorization: Bearer $AURIKO_API_KEY"
        - lang: python
          label: Python
          source: >
            from auriko import Client


            client = Client()

            identity = client.me.get()

            print(f"Workspace: {identity.workspace.id}, Profile:
            {identity.profile}")
        - lang: typescript
          label: TypeScript
          source: >
            import { Client } from "@auriko/sdk";


            const client = new Client();

            const identity = await client.me.get();

            console.log(`Workspace: ${identity.workspace.id}, Profile:
            ${identity.profile}`);
components:
  headers:
    X-Request-ID:
      description: |
        Unique request identifier for debugging and support.
        Include this in support requests for fast resolution.
      schema:
        type: string
      example: req_abc123def456
    X-Error-Type:
      description: |
        Same value as the `error.type` field in the response body, exposed as a
        header for programmatic routing without body parsing.
      schema:
        type: string
        enum:
          - invalid_request_error
          - rate_limit_error
          - api_error
          - authentication_error
          - not_found_error
          - permission_error
      example: invalid_request_error
    X-Error-Retryable:
      description: |
        Whether the client should retry this request.
        'true' for api_error and rate_limit_error types; 'false' for all others.
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      example: 'false'
  schemas:
    ApiKeyIdentity:
      type: object
      required:
        - credential_type
        - status
        - profile
        - key_id
        - key_prefix
        - key_name
        - workspace
        - scopes
        - rate_limits
        - expires_at
        - created_at
      properties:
        credential_type:
          type: string
          enum:
            - api_key
          description: The authentication scheme used by the caller.
        status:
          type: string
          enum:
            - active
          description: >
            Always "active" on success — disabled or expired keys fail
            authentication with 401 before this response is produced.
        profile:
          type: string
          enum:
            - inference
            - management
            - mixed
          description: Capability class derived server-side from the key's scopes.
        key_id:
          type: string
          format: uuid
          description: The API key's resource ID (not a secret).
        key_prefix:
          type: string
          description: The key's display prefix (e.g. "ak_live_abc1").
        key_name:
          type: string
          description: Human-readable key name.
        workspace:
          type: object
          required:
            - id
            - name
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
          description: The workspace this key is scoped to.
        scopes:
          type: array
          items:
            type: string
          description: Granted scopes for fine-grained capability decisions.
        rate_limits:
          type: object
          required:
            - inference_rpm
            - management_reads_rpm
            - management_writes_rpm
          properties:
            inference_rpm:
              type: integer
              description: >-
                Requests per minute on inference endpoints (key override or tier
                default).
            management_reads_rpm:
              type: integer
              description: Requests per minute on management read endpoints.
            management_writes_rpm:
              type: integer
              description: Requests per minute on management write endpoints.
        expires_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Key expiry, or null if the key does not expire.
        created_at:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/ErrorObject'
    ErrorObject:
      type: object
      description: OpenAI-compatible error format
      required:
        - message
        - type
        - param
        - code
      properties:
        message:
          type: string
          description: Human-readable error message
        type:
          type: string
          description: Error category per guide §4.
          enum:
            - invalid_request_error
            - authentication_error
            - permission_error
            - not_found_error
            - rate_limit_error
            - api_error
        param:
          type:
            - string
            - 'null'
          description: Parameter that caused the error (null if not applicable)
        code:
          type: string
          description: Canonical code per guide §5 and docs/reference/error_codes.json.
          enum:
            - invalid_api_key
            - expired_api_key
            - insufficient_permissions
            - feature_disabled
            - mfa_required
            - invalid_recovery_code
            - mfa_verification_failed
            - invalid_request
            - missing_required_parameter
            - invalid_parameter_value
            - payload_too_large
            - context_length_exceeded
            - content_filtered
            - idempotency_conflict
            - idempotency_replay_unavailable
            - field_immutable
            - operation_not_allowed
            - unknown_field
            - state_precondition_failed
            - duplicate_resource
            - method_not_allowed
            - tools_not_supported
            - json_mode_not_supported
            - structured_output_not_supported
            - tools_with_structured_output_not_supported
            - vision_not_supported
            - reasoning_not_supported
            - thinking_disable_not_supported
            - streaming_not_supported
            - non_streaming_not_supported
            - batch_only
            - tier_opt_in_required
            - tool_choice_required_not_supported
            - cost_constraint_exceeded
            - latency_constraint_exceeded
            - throughput_constraint_not_met
            - provider_not_in_allowlist
            - provider_blocked
            - required_params_not_supported
            - byok_keys_required
            - platform_keys_unavailable
            - unsupported_modalities
            - no_compatible_endpoint
            - no_responses_endpoint
            - input_requires_responses_endpoint
            - response_api_only
            - hosted_tool_not_supported
            - model_not_found
            - resource_not_found
            - rate_limit_exceeded
            - budget_exhausted
            - insufficient_quota
            - no_provider_available
            - upstream_error
            - upstream_timeout
            - client_disconnected
            - model_unavailable
            - internal_error
            - service_unavailable
        doc_url:
          type: string
          description: Link to the canonical documentation page for this error code.
        provider:
          type:
            - string
            - 'null'
          description: >-
            Upstream provider that generated the error (e.g.,
            "google_ai_studio", "openai"). Null for errors not attributable to
            an upstream provider (local validation, auth, internal config).
        suggestion:
          type: string
          description: >-
            Actionable fix hint for routing, capability, or model-not-found
            errors. Absent for other error types.
  responses:
    Unauthorized:
      description: Authentication failed
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
        X-Error-Type:
          $ref: '#/components/headers/X-Error-Type'
        X-Error-Retryable:
          $ref: '#/components/headers/X-Error-Retryable'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              message: API key is invalid.
              type: authentication_error
              param: null
              code: invalid_api_key
    RateLimited:
      description: |
        Rate limit exceeded. Two sub-causes share this status:
        - `rate_limit_exceeded`: throughput-based rate limit.
        - `budget_exhausted`: account or project budget reached (self-service;
          not auto-retried by SDKs — requires adding credits or raising the limit).
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
        X-Error-Type:
          $ref: '#/components/headers/X-Error-Type'
        X-Error-Retryable:
          $ref: '#/components/headers/X-Error-Retryable'
        Retry-After:
          description: >-
            Seconds until rate limit resets. Standard HTTP header for retry
            backoff.
          schema:
            type: integer
          example: 60
        X-Rate-Limit-Source:
          description: >-
            Identifies whether the rate limit originated from an upstream
            provider or from Auriko's routing layer.
          schema:
            type: string
            enum:
              - provider
              - routing
          required: false
          example: provider
        X-RateLimit-Limit-Requests:
          description: Request limit per window (present on throughput-based rate limits)
          schema:
            type: integer
          required: false
          example: 60
        X-RateLimit-Remaining-Requests:
          description: >-
            Remaining requests in window (present on throughput-based rate
            limits)
          schema:
            type: integer
          required: false
          example: 0
        X-RateLimit-Reset-Requests:
          description: >-
            When limit resets (ISO 8601 format; present on throughput-based rate
            limits)
          schema:
            type: string
            format: date-time
          required: false
          example: '2026-06-15T12:01:00.000Z'
        X-Budget-Exceeded:
          description: Present on budget-exhaustion 429s.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
          required: false
          example: 'true'
        X-Budget-Exceeded-Period:
          description: Period of the exceeded budget (present on budget-exhaustion 429s).
          schema:
            type: string
            enum:
              - daily
              - weekly
              - monthly
          required: false
          example: monthly
        X-Budget-Exceeded-Scope:
          description: Scope of the exceeded budget (present on budget-exhaustion 429s).
          schema:
            type: string
            enum:
              - workspace
              - api_key
              - byok_provider
          required: false
          example: workspace
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            rate_limit_exceeded:
              summary: Throughput-based rate limit
              value:
                error:
                  message: Rate limit exceeded. Retry after 60 seconds.
                  type: rate_limit_error
                  param: null
                  code: rate_limit_exceeded
            budget_exhausted:
              summary: Account budget exhausted
              value:
                error:
                  message: Account budget exhausted. Add credits to continue.
                  type: rate_limit_error
                  param: null
                  code: budget_exhausted
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: |
        API key authentication.
        Keys start with `ak_` prefix.
        Example: `Authorization: Bearer ak_live_xxxxxxxxxxxx`

````