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

# Get v1providers capabilities



## OpenAPI

````yaml https://api.surnex.io/.well-known/openapi.json get /v1/providers/{provider}/capabilities
openapi: 3.1.0
info:
  title: Surnex API
  version: 0.2.0
servers:
  - url: https://api.surnex.io
security: []
paths:
  /v1/providers/{provider}/capabilities:
    get:
      tags:
        - v1
      parameters:
        - schema:
            type: string
            minLength: 1
          required: true
          name: provider
          in: path
        - schema:
            type: string
            minLength: 1
          required: false
          name: service
          in: query
        - schema:
            anyOf:
              - type: boolean
              - type: string
                enum:
                  - 'true'
              - type: string
                enum:
                  - 'false'
          required: false
          name: discover
          in: query
        - schema:
            type: string
            enum:
              - static
              - discovered
              - mixed
          required: false
          name: discovery_source
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 128
          required: false
          name: search
          in: query
        - schema:
            type: string
            minLength: 1
            description: Service category used for grouping and filtering
          required: false
          description: Service category used for grouping and filtering
          name: category
          in: query
        - schema:
            anyOf:
              - type: boolean
              - type: string
                enum:
                  - 'true'
              - type: string
                enum:
                  - 'false'
          required: false
          name: refresh_discovery
          in: query
        - schema:
            type: string
            enum:
              - GET
              - POST
            description: HTTPMethod
          required: false
          description: HTTPMethod
          name: method
          in: query
        - schema:
            type: string
            enum:
              - live
              - task_post
              - task_get
              - tasks_ready
              - tasks_fixed
            description: DataForSeoOperationMode
          required: false
          description: DataForSeoOperationMode
          name: mode
          in: query
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 250
            default: 100
          required: false
          name: limit
          in: query
        - schema:
            type:
              - integer
              - 'null'
            minimum: 0
            default: 0
          required: false
          name: offset
          in: query
        - schema:
            type: string
            enum:
              - service
              - discovery_source
            description: >-
              Optional grouping key for response sections. When set, services
              are bucketed into `groups` without removing `services`. Service
              keys are alphabetical; discovery source keys are `static`,
              `discovered`, then `mixed` when present.
          required: false
          description: >-
            Optional grouping key for response sections. When set, services are
            bucketed into `groups` without removing `services`. Service keys are
            alphabetical; discovery source keys are `static`, `discovered`, then
            `mixed` when present.
          name: group_by
          in: query
      responses:
        '200':
          description: Provider capabilities summary for Surnex onboarding and UI planning.
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider:
                    type: string
                    minLength: 1
                  provider_metadata:
                    type: object
                    properties:
                      provider_id:
                        type: string
                        minLength: 1
                      brand_name:
                        type: string
                      status:
                        type: string
                        enum:
                          - active
                          - beta
                          - deprecated
                      plan_tiers:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                              minLength: 1
                            requests_per_day:
                              type: integer
                              exclusiveMinimum: 0
                            requests_per_hour:
                              type: integer
                              exclusiveMinimum: 0
                            requests_per_minute:
                              type: integer
                              exclusiveMinimum: 0
                            monthly_request_limit:
                              type: integer
                              minimum: 0
                            notes:
                              type: string
                          required:
                            - name
                      limits:
                        type: object
                        additionalProperties:
                          type: number
                          minimum: 0
                      rate_limits:
                        type: object
                        properties:
                          requests_per_second:
                            type: number
                            exclusiveMinimum: 0
                          requests_per_minute:
                            type: integer
                            exclusiveMinimum: 0
                          requests_per_hour:
                            type: integer
                            exclusiveMinimum: 0
                          burst:
                            type: integer
                            minimum: 0
                      throttling:
                        type: object
                        properties:
                          max_concurrency:
                            type: integer
                            minimum: 0
                          queue_depth:
                            type: integer
                            minimum: 0
                          cooldown_seconds:
                            type: number
                            minimum: 0
                      cost_hints:
                        type: object
                        properties:
                          estimated_usd_per_execution:
                            type: number
                            minimum: 0
                          estimated_usd_per_1000_requests:
                            type: number
                            minimum: 0
                          currency:
                            type: string
                            minLength: 1
                          notes:
                            type: string
                      supported_features:
                        type: array
                        items:
                          type: string
                      notes:
                        type: string
                    required:
                      - provider_id
                  capabilities:
                    anyOf:
                      - type: object
                        properties:
                          generated_at:
                            type: string
                          discovery_context:
                            type: object
                            properties:
                              requested_discovery:
                                type: boolean
                              force_refresh_requested:
                                type: boolean
                              source:
                                type: string
                                enum:
                                  - none
                                  - cache
                                  - provider
                                  - mixed
                              discovered_at:
                                type:
                                  - string
                                  - 'null'
                              cache_key:
                                type: string
                              cache_ttl_seconds:
                                type: integer
                                exclusiveMinimum: 0
                              cache_available:
                                type: boolean
                              cache_hit:
                                type: boolean
                              provider_calls:
                                type: integer
                                minimum: 0
                            required:
                              - requested_discovery
                              - force_refresh_requested
                              - source
                              - discovered_at
                              - cache_key
                              - cache_ttl_seconds
                              - cache_available
                              - cache_hit
                              - provider_calls
                          services:
                            type: array
                            items:
                              type: object
                              properties:
                                service:
                                  type: string
                                  minLength: 1
                                title:
                                  type: string
                                  minLength: 1
                                category:
                                  type: string
                                  minLength: 1
                                  description: >-
                                    Service category used for grouping and
                                    filtering
                                description:
                                  type: string
                                discovery_source:
                                  type: string
                                  enum:
                                    - static
                                    - discovered
                                    - mixed
                                  description: CatalogDiscoverySource
                                operation_count:
                                  type: integer
                                  minimum: 0
                                discovered_operations:
                                  type: integer
                                  minimum: 0
                                static_operations:
                                  type: integer
                                  minimum: 0
                                by_discovery_source:
                                  type: object
                                  properties:
                                    static:
                                      type: integer
                                      minimum: 0
                                    discovered:
                                      type: integer
                                      minimum: 0
                                  required:
                                    - static
                                    - discovered
                                by_method:
                                  type: object
                                  properties:
                                    GET:
                                      type: integer
                                      minimum: 0
                                    POST:
                                      type: integer
                                      minimum: 0
                                  required:
                                    - GET
                                    - POST
                                by_mode:
                                  type: object
                                  properties:
                                    live:
                                      type: integer
                                      minimum: 0
                                    task_post:
                                      type: integer
                                      minimum: 0
                                    task_get:
                                      type: integer
                                      minimum: 0
                                    tasks_ready:
                                      type: integer
                                      minimum: 0
                                    tasks_fixed:
                                      type: integer
                                      minimum: 0
                                  required:
                                    - live
                                    - task_post
                                    - task_get
                                    - tasks_ready
                                    - tasks_fixed
                                sample_operations:
                                  type: array
                                  items:
                                    type: string
                              required:
                                - service
                                - title
                                - category
                                - description
                                - operation_count
                                - discovered_operations
                                - static_operations
                                - by_discovery_source
                                - by_method
                                - by_mode
                                - sample_operations
                          total_services:
                            type: integer
                            minimum: 0
                          limit:
                            type: integer
                            exclusiveMinimum: 0
                          offset:
                            type: integer
                            minimum: 0
                          returned:
                            type: integer
                            minimum: 0
                          has_more:
                            type: boolean
                          next_offset:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          groups:
                            type: object
                            additionalProperties:
                              type: array
                              items:
                                type: object
                                properties:
                                  service:
                                    type: string
                                    minLength: 1
                                  title:
                                    type: string
                                    minLength: 1
                                  category:
                                    type: string
                                    minLength: 1
                                    description: >-
                                      Service category used for grouping and
                                      filtering
                                  description:
                                    type: string
                                  discovery_source:
                                    type: string
                                    enum:
                                      - static
                                      - discovered
                                      - mixed
                                    description: CatalogDiscoverySource
                                  operation_count:
                                    type: integer
                                    minimum: 0
                                  discovered_operations:
                                    type: integer
                                    minimum: 0
                                  static_operations:
                                    type: integer
                                    minimum: 0
                                  by_discovery_source:
                                    type: object
                                    properties:
                                      static:
                                        type: integer
                                        minimum: 0
                                      discovered:
                                        type: integer
                                        minimum: 0
                                    required:
                                      - static
                                      - discovered
                                  by_method:
                                    type: object
                                    properties:
                                      GET:
                                        type: integer
                                        minimum: 0
                                      POST:
                                        type: integer
                                        minimum: 0
                                    required:
                                      - GET
                                      - POST
                                  by_mode:
                                    type: object
                                    properties:
                                      live:
                                        type: integer
                                        minimum: 0
                                      task_post:
                                        type: integer
                                        minimum: 0
                                      task_get:
                                        type: integer
                                        minimum: 0
                                      tasks_ready:
                                        type: integer
                                        minimum: 0
                                      tasks_fixed:
                                        type: integer
                                        minimum: 0
                                    required:
                                      - live
                                      - task_post
                                      - task_get
                                      - tasks_ready
                                      - tasks_fixed
                                  sample_operations:
                                    type: array
                                    items:
                                      type: string
                                required:
                                  - service
                                  - title
                                  - category
                                  - description
                                  - operation_count
                                  - discovered_operations
                                  - static_operations
                                  - by_discovery_source
                                  - by_method
                                  - by_mode
                                  - sample_operations
                            description: >-
                              Grouped capability buckets keyed by the selected
                              `group_by` value. Omitted when `group_by` is not
                              requested.
                          totals:
                            type: object
                            properties:
                              total_services:
                                type: integer
                                minimum: 0
                              total_operations:
                                type: integer
                                minimum: 0
                              by_discovery_source:
                                type: object
                                properties:
                                  static:
                                    type: integer
                                    minimum: 0
                                  discovered:
                                    type: integer
                                    minimum: 0
                                  mixed:
                                    type: integer
                                    minimum: 0
                                required:
                                  - static
                                  - discovered
                                  - mixed
                              by_operation_discovery_source:
                                type: object
                                properties:
                                  static:
                                    type: integer
                                    minimum: 0
                                  discovered:
                                    type: integer
                                    minimum: 0
                                required:
                                  - static
                                  - discovered
                              by_method:
                                type: object
                                properties:
                                  GET:
                                    type: integer
                                    minimum: 0
                                  POST:
                                    type: integer
                                    minimum: 0
                                required:
                                  - GET
                                  - POST
                              by_mode:
                                type: object
                                properties:
                                  live:
                                    type: integer
                                    minimum: 0
                                  task_post:
                                    type: integer
                                    minimum: 0
                                  task_get:
                                    type: integer
                                    minimum: 0
                                  tasks_ready:
                                    type: integer
                                    minimum: 0
                                  tasks_fixed:
                                    type: integer
                                    minimum: 0
                                required:
                                  - live
                                  - task_post
                                  - task_get
                                  - tasks_ready
                                  - tasks_fixed
                            required:
                              - total_services
                              - total_operations
                              - by_discovery_source
                              - by_operation_discovery_source
                              - by_method
                              - by_mode
                          supports_custom_paths:
                            type: boolean
                          supports_any_dataforseo_path:
                            type: boolean
                        required:
                          - generated_at
                          - discovery_context
                          - services
                          - total_services
                          - limit
                          - offset
                          - returned
                          - has_more
                          - next_offset
                          - totals
                          - supports_custom_paths
                          - supports_any_dataforseo_path
                      - type: object
                        additionalProperties: {}
                required:
                  - provider
                  - capabilities
                description: SurnexProviderCapabilitiesResponse
              examples:
                capabilities:
                  value:
                    provider: dataforseo
                    provider_metadata:
                      provider_id: dataforseo
                      brand_name: DataForSEO
                      status: active
                      limits:
                        max_targets_per_request: 10
                        max_search_limit: 1000
                        max_search_offset: 9000
                        max_evidence_rows_per_request: 10
                        max_provider_requests_per_snapshot: 8
                      rate_limits:
                        requests_per_second: 2
                        requests_per_minute: 120
                        burst: 8
                      throttling:
                        max_concurrency: 4
                        queue_depth: 16
                        cooldown_seconds: 1
                      cost_hints:
                        estimated_usd_per_execution: 0.01
                        estimated_usd_per_1000_requests: 2
                        currency: USD
                        notes: >-
                          Execution cost varies by endpoint; use provider_calls
                          for attribution.
                      supported_features:
                        - catalog
                        - search
                        - executions
                        - llm_mentions
                        - top_domains
                        - top_pages
                        - batch_search
                      plan_tiers:
                        - name: starter
                          requests_per_minute: 120
                          requests_per_hour: 1800
                          monthly_request_limit: 500000
                          notes: >-
                            Default starter-capability throttles for
                            conservative onboarding.
                    capabilities:
                      generated_at: '2026-02-24T00:00:00Z'
                      discovery_context:
                        requested_discovery: false
                        force_refresh_requested: false
                        source: none
                        discovered_at: null
                        cache_key: dataforseo:catalog:discovered:v1
                        cache_ttl_seconds: 900
                        cache_available: false
                        cache_hit: false
                        provider_calls: 0
                      services:
                        - service: serp
                          category: serp
                          title: SERP API
                          description: >-
                            Search engine results across web and vertical
                            engines
                          discovery_source: static
                          operation_count: 4
                          discovered_operations: 0
                          static_operations: 4
                          by_discovery_source:
                            static: 4
                            discovered: 0
                          by_method:
                            GET: 0
                            POST: 4
                          by_mode:
                            live: 1
                            task_post: 2
                            task_get: 1
                            tasks_ready: 0
                            tasks_fixed: 0
                          sample_operations:
                            - /serp/google/organic/live
                            - /serp/google/organic/task_post
                            - /serp/google/organic/task_get
                      total_services: 1
                      limit: 100
                      offset: 0
                      returned: 1
                      has_more: false
                      next_offset: null
                      supports_custom_paths: true
                      supports_any_dataforseo_path: true
                      totals:
                        total_services: 1
                        total_operations: 4
                        by_discovery_source:
                          static: 1
                          discovered: 0
                          mixed: 1
                        by_operation_discovery_source:
                          static: 4
                          discovered: 0
                        by_method:
                          GET: 0
                          POST: 4
                        by_mode:
                          live: 1
                          task_post: 2
                          task_get: 1
                          tasks_ready: 0
                          tasks_fixed: 0
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                      details:
                        type: object
                        properties: {}
                        default: {}
                        additionalProperties: {}
                    required:
                      - code
                      - message
                      - request_id
                required:
                  - error
                description: ErrorResponse
              examples:
                unauthorized:
                  value:
                    error:
                      code: UNAUTHORIZED
                      message: Unauthorized
                      request_id: req_123
                      details:
                        reason: missing_or_invalid_api_key
        '404':
          description: Provider not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                      details:
                        type: object
                        properties: {}
                        default: {}
                        additionalProperties: {}
                    required:
                      - code
                      - message
                      - request_id
                required:
                  - error
                description: ErrorResponse
              examples:
                notFound:
                  value:
                    error:
                      code: NOT_FOUND
                      message: Provider not found
                      request_id: req_123
                      details:
                        provider: unknown
        '502':
          description: Provider does not expose capabilities
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                      details:
                        type: object
                        properties: {}
                        default: {}
                        additionalProperties: {}
                    required:
                      - code
                      - message
                      - request_id
                required:
                  - error
                description: ErrorResponse
              examples:
                unavailable:
                  value:
                    error:
                      code: PROVIDER_ERROR
                      message: Provider capabilities is not implemented
                      request_id: req_123
                      details:
                        provider: mockprovider
                        feature: capabilities
      security:
        - bearerAuth: []
        - apiKeyAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'Authorization: Bearer sk_...'
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````