Bisibility Discovery API

Discover the API contract, capabilities, health, and public provider pricing.

Operations 8

GET /capabilities Get API capabilities #
GET /cost-estimate Estimate monthly SERP provider cost #
GET /health Check API health #
GET /liveness Check web process liveness #
GET /llms.txt Get API documentation for LLMs #
GET /openapi.json Get the OpenAPI document #
GET /provider-rates List public SERP provider rate cards #
GET /readiness Check web traffic readiness #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bisibility-com:bisibility-com-discovery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bisibility-com-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bisibility Com Discovery API
  version: 1.0.0
  description: 'Operations tagged discovery across 2 of this provider''s published API definitions: eu.bisibility.com_v1_openapi.json, bisibility-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /api/v1
tags:
- name: Discovery
  description: Discover the API contract, capabilities, health, and public provider pricing.
  x-group: Discovery
paths:
  /capabilities:
    get:
      operationId: getCapabilities
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  apiVersions:
                    items:
                      enum:
                      - v1
                      type: string
                      x-bisibility-enum: open
                      x-bisibility-name: ApiVersion
                    minItems: 1
                    type: array
                  authentication:
                    properties:
                      scheme:
                        const: bearer
                        type: string
                      scope:
                        type: string
                    required:
                    - scheme
                    - scope
                    type: object
                    x-bisibility-name: CapabilitiesAuthentication
                  data:
                    items:
                      $ref: '#/components/schemas/Capability'
                    type: array
                  description:
                    type: string
                  features:
                    description: Supported request protocols, independent of the caller's permissions.
                    properties:
                      reviewed_project_defaults:
                        const: v1
                        type: string
                    required:
                    - reviewed_project_defaults
                    type: object
                    x-bisibility-name: CapabilitiesFeatures
                  rank_check_scheduler_mode:
                    enum:
                    - cutover
                    - dispatcher
                    - invalid
                    - legacy
                    type: string
                    x-bisibility-enum: open
                    x-bisibility-name: RankCheckSchedulerMode
                  scheduler_driver:
                    enum:
                    - invalid
                    - legacy-auto
                    - none
                    - temporal
                    type: string
                    x-bisibility-enum: open
                    x-bisibility-name: SchedulerDriver
                required:
                - apiVersions
                - authentication
                - data
                - description
                - features
                - rank_check_scheduler_mode
                - scheduler_driver
                type: object
                x-bisibility-name: Capabilities
          description: JSON response
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
      summary: Get API capabilities
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      x-bisibility-idempotency: none
      x-bisibility-pagination:
        style: none
      x-bisibility-sdk:
        group: system
        legacy:
          go:
          - GetCapabilities
          python:
          - get_capabilities
          ts:
          - getCapabilities
        method: getCapabilities
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /cost-estimate:
    get:
      operationId: getCostEstimate
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      - description: Custom cron expression; an invalid or missing expression leaves monthly estimates unknown.
        in: query
        name: cron_expression
        schema:
          type: string
          maxLength: 120
      - description: Keyword count. Must be an integer greater than or equal to 0.
        in: query
        name: keywords
        required: true
        schema:
          maximum: 100000
          minimum: 0
          type: integer
      - description: Organic result depth per logical rank check.
        in: query
        name: depth
        schema:
          default: 100
          enum:
          - 10
          - 20
          - 50
          - 100
          type: integer
          x-bisibility-enum: closed
          x-bisibility-name: SerpDepth
      - description: Market count per keyword; each market combines a location and language.
        in: query
        name: locations
        schema:
          default: 1
          maximum: 100
          minimum: 1
          type: integer
      - description: Device count per keyword.
        in: query
        name: devices
        schema:
          default: 1
          maximum: 2
          minimum: 1
          type: integer
      - description: Rank-check frequency used to estimate monthly checks.
        in: query
        name: frequency
        schema:
          default: daily
          enum:
          - daily
          - weekly
          - monthly
          - manual
          - paused
          - custom_cron
          type: string
          x-bisibility-enum: closed
          x-bisibility-name: CostEstimateFrequency
      - description: Provider rate card ID from GET /provider-rates. An unknown provider returns 404.
        in: query
        name: provider
        schema:
          default: dataforseo
          maxLength: 80
          minLength: 1
          type: string
      - description: Flat-rate provider option key from the provider's rate card, such as standard, priority or live.
        in: query
        name: option
        schema:
          maxLength: 80
          minLength: 1
          type: string
      - description: Plan-model provider plan key from the provider's rate card; unknown values use auto selection.
        in: query
        name: plan
        schema:
          maxLength: 80
          minLength: 1
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/CostEstimate'
                required:
                - data
                type: object
                x-bisibility-name: CostEstimateResponse
          description: JSON response
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Bad request
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Not found
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Rate limited
      summary: Estimate monthly SERP provider cost
      x-bisibility-idempotency: none
      x-bisibility-pagination:
        style: none
      x-bisibility-sdk:
        group: pricing
        legacy:
          go:
          - GetCostEstimate
          python:
          - get_cost_estimate
          ts:
          - getCostEstimate
        method: estimate
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /health:
    get:
      description: Anonymous responses expose only status. Valid API credentials or INTERNAL_PROBE_TOKEN receive additional operator diagnostics outside the public SDK schema.
      operationId: getHealth
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
          description: Composite health report is healthy
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
          description: Composite health report is degraded
      summary: Check API health
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      x-bisibility-idempotency: none
      x-bisibility-pagination:
        style: none
      x-bisibility-sdk:
        group: system
        legacy:
          go:
          - GetHealth
          python:
          - get_health
          ts:
          - getHealth
        method: getHealth
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /liveness:
    get:
      operationId: getLiveness
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  status:
                    enum:
                    - ok
                    type: string
                required:
                - status
                type: object
          description: Web process is alive
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
      summary: Check web process liveness
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /llms.txt:
    get:
      operationId: getLlmsTxt
      responses:
        '200':
          content:
            text/plain:
              schema:
                type: string
          description: Agent-readable API capability summary
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
      summary: Get API documentation for LLMs
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /openapi.json:
    get:
      operationId: getOpenApi
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenApiDocument'
          description: JSON response
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
      summary: Get the OpenAPI document
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /provider-rates:
    get:
      operationId: getProviderRates
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/ProviderRateCard'
                    type: array
                required:
                - data
                type: object
                x-bisibility-name: ProviderRateCardList
          description: JSON response
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Rate limited
      summary: List public SERP provider rate cards
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
  /readiness:
    get:
      operationId: getReadiness
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
          description: Web process is ready to serve traffic
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: Unsupported API version
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthStatus'
          description: Web process is not ready to serve traffic
      summary: Check web traffic readiness
      parameters:
      - description: API contract version requested by the client. Omit this header to use the current backward-compatible behavior.
        in: header
        name: Bisibility-API-Version
        required: false
        schema:
          enum:
          - v1
          type: string
          x-bisibility-enum: open
          x-bisibility-name: ApiVersion
      tags:
      - Discovery
      x-bisibility-cost:
        kind: free
    servers:
    - url: /api/v1
components:
  schemas:
    Capability:
      description: One operation in the public capability catalog.
      properties:
        description:
          type: string
        input_schema:
          additionalProperties: true
          description: JSON Schema for the operation input.
          type: object
        mcp_tool:
          description: MCP tool name, or null when no MCP tool exposes the operation.
          type:
          - string
          - 'null'
        name:
          type: string
        operationId:
          type: string
      required:
      - description
      - input_schema
      - mcp_tool
      - name
      - operationId
      type: object
    CostEstimate:
      anyOf:
      - properties:
          billing_units_per_check:
            minimum: 0
            type: number
          checks_per_run:
            minimum: 0
            type: number
          depth:
            minimum: 1
            type: integer
          effective_cost_per_check_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          exceeds_largest_plan:
            type: boolean
          exceeds_selected_plan:
            type: boolean
          monthly_billing_units:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_checks:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_cost_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          monthly_cost_usd:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_number
          pricing_model:
            const: flat
            type: string
          provider_id:
            type: string
          rate_checked_at:
            type: string
          rate_source_url:
            type: string
          result_pages_per_run:
            minimum: 0
            type: number
          runs_per_month:
            minimum: 0
            type:
            - number
            - 'null'
          selected_option:
            properties:
              additional_page_cost_cents:
                minimum: 0
                type: number
                x-bisibility-money: usd_cents
              additional_page_cost_usd:
                minimum: 0
                type: number
                x-bisibility-money: usd_number
              key:
                type: string
              label:
                type: string
              short_label:
                type: string
              top_100_check_cost_cents:
                minimum: 0
                type: number
                x-bisibility-money: usd_cents
              top_100_check_cost_usd:
                minimum: 0
                type: number
                x-bisibility-money: usd_number
              turnaround:
                type: string
              unit_cost_cents:
                minimum: 0
                type: number
                x-bisibility-money: usd_cents
              unit_cost_usd:
                minimum: 0
                type: number
                x-bisibility-money: usd_number
            required:
            - additional_page_cost_cents
            - additional_page_cost_usd
            - key
            - label
            - short_label
            - top_100_check_cost_cents
            - top_100_check_cost_usd
            - turnaround
            - unit_cost_cents
            - unit_cost_usd
            type: object
            x-bisibility-name: CostEstimateOption
        required:
        - billing_units_per_check
        - checks_per_run
        - depth
        - effective_cost_per_check_cents
        - exceeds_largest_plan
        - exceeds_selected_plan
        - monthly_billing_units
        - monthly_checks
        - monthly_cost_cents
        - monthly_cost_usd
        - pricing_model
        - provider_id
        - rate_checked_at
        - rate_source_url
        - result_pages_per_run
        - runs_per_month
        type: object
        x-bisibility-name: FlatCostEstimate
      - properties:
          billing_units_per_check:
            minimum: 0
            type: number
          checks_per_run:
            minimum: 0
            type: number
          depth:
            minimum: 1
            type: integer
          effective_cost_per_check_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          exceeds_largest_plan:
            type: boolean
          exceeds_selected_plan:
            type: boolean
          monthly_billing_units:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_checks:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_cost_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          monthly_cost_usd:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_number
          pricing_model:
            const: plan
            type: string
          provider_id:
            type: string
          rate_checked_at:
            type: string
          rate_source_url:
            type: string
          result_pages_per_run:
            minimum: 0
            type: number
          runs_per_month:
            minimum: 0
            type:
            - number
            - 'null'
          selected_plan:
            properties:
              included_checks:
                minimum: 0
                type: number
              label:
                type: string
              monthly_price_cents:
                minimum: 0
                type: number
                x-bisibility-money: usd_cents
              monthly_price_usd:
                minimum: 0
                type: number
                x-bisibility-money: usd_number
              plan_key:
                type: string
            required:
            - included_checks
            - label
            - monthly_price_cents
            - monthly_price_usd
            - plan_key
            type: object
            x-bisibility-name: CostEstimatePlan
        required:
        - billing_units_per_check
        - checks_per_run
        - depth
        - effective_cost_per_check_cents
        - exceeds_largest_plan
        - exceeds_selected_plan
        - monthly_billing_units
        - monthly_checks
        - monthly_cost_cents
        - monthly_cost_usd
        - pricing_model
        - provider_id
        - rate_checked_at
        - rate_source_url
        - result_pages_per_run
        - runs_per_month
        type: object
        x-bisibility-name: PlanCostEstimate
      - properties:
          billing_units_per_check:
            minimum: 0
            type: number
          checks_per_run:
            minimum: 0
            type: number
          depth:
            minimum: 1
            type: integer
          effective_cost_per_check_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          exceeds_largest_plan:
            type: boolean
          exceeds_selected_plan:
            type: boolean
          monthly_billing_units:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_checks:
            minimum: 0
            type:
            - number
            - 'null'
          monthly_cost_cents:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_cents
          monthly_cost_usd:
            minimum: 0
            type:
            - number
            - 'null'
            x-bisibility-money: usd_number
          pricing_model:
            type: string
          provider_id:
            type: string
          rate_checked_at:
            type: string
          rate_source_url:
            type: string
          result_pages_per_run:
            minimum: 0
            type: number
          runs_per_month:
            minimum: 0
            type:
            - number
            - 'null'
        required:
        - billing_units_per_check
        - checks_per_run
        - depth
        - effective_cost_per_check_cents
        - exceeds_largest_plan
        - exceeds_selected_plan
        - monthly_billing_units
        - monthly_checks
        - monthly_cost_cents
        - monthly_cost_usd
        - pricing_model
        - provider_id
        - rate_checked_at
        - rate_source_url
        - result_pages_per_run
        - runs_per_month
        type: object
        x-bisibility-name: OtherCostEstimate
      description: Estimated rank-check volume and provider spend for a keyword portfolio.
      x-bisibility-union:
        cases:
        - flat
        - plan
        - other
        style: tagged
        tag: pricing_model
    OpenApiDocument:
      additionalProperties: true
      description: OpenAPI 3 document for REST API v1.
      type: object
    HealthStatus:
      properties:
        status:
          enum:
          - degraded
          - ok
          type: string
          x-bisibility-enum: open
          x-bisibility-name: HealthState
      required:
      - status
      type: object
    Problem:
      properties:
        detail:
          type: string
        details:
          additionalProperties: true
          type: object
        docs_url:
          type: string
        errors: {}
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      required:
      - type
      - title
      - status
      - detail
      - instance
      - docs_url
      type: object
    ProviderRateCard:
      additionalProperties: true
      properties:
        id:
          type: string
        name:
          type: string
      required:
      - id
      type: object
  securitySchemes:
    PersonalAccessToken:
      bearerFormat: bsb_pat_live_...
      description: Personal access token for account routes and projects visible to the authenticated user.
      scheme: bearer
      type: http
    ProjectApiKey:
      bearerFormat: bsb_key_live_...
      description: Project-scoped API key. It cannot access account routes or create additional projects.
      scheme: bearer
      type: http
    MigrationToken:
      bearerFormat: mig_...
      description: 'Migration token sent as `Authorization: Bearer mig_...`.'
      scheme: bearer
      type: http
    AppOAuth:
      description: 'OAuth 2.0 for the first-party Bisibility apps only; other clients cannot obtain these scopes. Use the authorization code flow with PKCE (S256) and no client secret, and do not send a `resource` parameter: `/api/v1` accepts only the opaque access tokens issued without one. Access tokens expire after 15 minutes. Refresh tokens rotate on every use, and replaying a used refresh token revokes the whole grant. To sign out, POST the refresh token with `token_type_hint=refresh_token` and the `client_id` to `/api/auth/oauth2/revoke`. Account deletion additionally requires a sign-in from the last 10 minutes (authorize again with `prompt=login`); otherwise it fails with 403 and `details.code` `reauthentication_required`. Admin operations are not available to app tokens.'
      flows:
        authorizationCode:
          authorizationUrl: /api/auth/oauth2/authorize
          refreshUrl: /api/auth/oauth2/token
          scopes:
            api:read: Read the account and projects visible to the user.
            api:write: Read, and change projects within the user's role. Implies api:read.
          tokenUrl: /api/auth/oauth2/token
      type: oauth2
x-refined-from:
- eu.bisibility.com_v1_openapi.json
- bisibility-com-openapi.json