Keirolabs API

Keirolabs API as documented publicly: 11 operations. Contract generated from the documentation by API Evangelist (2026-11-08); not the provider's own document.

GitHub OpenAPI

Operations 11

POST /api/v2/answer POST /api/v2/answer #
POST /api/v2/deep POST /api/v2/deep #
POST /api/v2/embeddings POST /api/v2/embeddings #
POST /api/v2/extract POST /api/v2/extract #
POST /api/v2/search/content POST /api/v2/search/content #
POST /api/v2/search/fast POST /api/v2/search/fast #
POST /api/v2/search/google POST /api/v2/search/google #
POST /api/v2/search/lite POST /api/v2/search/lite #
POST /api/v2/search/slow POST /api/v2/search/slow #
POST /api/v2/sitemap POST /api/v2/sitemap #
POST /api/web-crawler Legacy alias for backward compatibility. Same handler, same cost. #

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/keirolabs:keirolabs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

keirolabs-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Keirolabs API
  version: '2026-11-08'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-08: 11 operation(s) read from 13 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Keirolabs has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 10
    documentation: 1
    pages-with-code: 13
    pages-read: 13
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-08'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.keirolabs.cloud/quickstart
  - https://keirolabs.cloud/docs/quick-start
  - https://docs.keirolabs.cloud/zdr
  - https://docs.keirolabs.cloud/search/google-serp
  - https://docs.keirolabs.cloud/search/search
  - https://docs.keirolabs.cloud/search/lite
  - https://docs.keirolabs.cloud/search/slow
  - https://docs.keirolabs.cloud/search/deep-search
  - https://docs.keirolabs.cloud/content/search-content
  - https://docs.keirolabs.cloud/content/extract
  - https://docs.keirolabs.cloud/content/embeddings
  - https://docs.keirolabs.cloud/content/sitemap
  - https://docs.keirolabs.cloud/ai/answer
servers:
- url: https://api.keirolabs.cloud
paths:
  /api/v2/answer:
    post:
      operationId: post_api_v2_answer
      tags:
      - Api
      summary: POST /api/v2/answer
      x-source: https://docs.keirolabs.cloud/ai/answer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2AnswerRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2AnswerResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -N -X POST https://api.keirolabs.cloud/api/v2/answer  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\"query\": \"what is the context window of claude opus?\"}'\n```\n**Python**\n```python\nimport os, requests\nres = requests.post(\n\
          \ \"https://api.keirolabs.cloud/api/v2/answer\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"},\n json={\n\
          \ \"query\": \""
  /api/v2/deep:
    post:
      operationId: post_api_v2_deep
      tags:
      - Api
      summary: POST /api/v2/deep
      x-source: https://docs.keirolabs.cloud/search/deep-search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2DeepRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2DeepResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/deep  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\"query\": \"how do EU AI Act obligations differ for general purpose models?\"}'\n```\n**Python**\n```python\nimport os, requests\n\
          res = requests.post(\n \"https://api.keirolabs.cloud/api/v2/deep\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"\
          },\n json"
  /api/v2/embeddings:
    post:
      operationId: post_api_v2_embeddings
      tags:
      - Api
      summary: POST /api/v2/embeddings
      x-source: https://docs.keirolabs.cloud/content/embeddings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2EmbeddingsRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2EmbeddingsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/embeddings  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\n \"urls\": [\"https://en.wikipedia.org/wiki/Retrieval-augmented_generation\"],\n \"input\": \"how does\
          \ RAG reduce hallucinations?\"\n }'\n```\n**Python**\n```python\nimport os, requests\nres = requests.post(\n \"https://api.keirolabs.cloud/api/v2/embeddings\"\
          ,\n headers={\""
  /api/v2/extract:
    post:
      operationId: post_api_v2_extract
      tags:
      - Api
      summary: POST /api/v2/extract
      x-source: https://docs.keirolabs.cloud/content/extract
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2ExtractRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/extract  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\"url\": \"https://stripe.com/pricing\", \"mode\": \"lite\"}'\n```\n**Python**\n```python\nimport os, requests\nres = requests.post(\n\
          \ \"https://api.keirolabs.cloud/api/v2/extract\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"},\n json={\n\
          \ \"url\": \"https"
  /api/v2/search/content:
    post:
      operationId: post_api_v2_search_content
      tags:
      - Api
      summary: POST /api/v2/search/content
      x-source: https://docs.keirolabs.cloud/content/search-content
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SearchContentRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2SearchContentResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/search/content  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\"query\": \"how to reverse a linked list in python\", \"maxResults\": 4, \"mode\": \"medium\"}'\n```\n**Python**\n\
          ```python\nimport os, requests\nres = requests.post(\n \"https://api.keirolabs.cloud/api/v2/search/content\",\n headers={\"Authorization\"\
          : f\"Bearer {os.envi"
  /api/v2/search/fast:
    post:
      operationId: post_api_v2_search_fast
      tags:
      - Api
      summary: POST /api/v2/search/fast
      x-source: https://docs.keirolabs.cloud/search/search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SearchFastRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2SearchFastResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/search/fast  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\"query\": \"latest postgres release notes\", \"maxResults\": 10}'\n```\n**Python**\n```python\nimport os,\
          \ requests\nres = requests.post(\n \"https://api.keirolabs.cloud/api/v2/search/fast\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"\
          },\n json={"
  /api/v2/search/google:
    post:
      operationId: post_api_v2_search_google
      tags:
      - Api
      summary: POST /api/v2/search/google
      x-source: https://docs.keirolabs.cloud/quickstart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SearchGoogleRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2SearchGoogleResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/search/google  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\"query\": \"best vector databases 2026\"}'\n```\n**Python**\n```python\nimport os, requests\nres = requests.post(\n\
          \ \"https://api.keirolabs.cloud/api/v2/search/google\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"},\n\
          \ json={\"query\": \"best ve"
  /api/v2/search/lite:
    post:
      operationId: post_api_v2_search_lite
      tags:
      - Api
      summary: POST /api/v2/search/lite
      x-source: https://docs.keirolabs.cloud/zdr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SearchLiteRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://api.keirolabs.cloud/api/v2/search/lite  -H "Authorization: Bearer $KEIRO_API_KEY"  -H "Content-Type: application/json"  -d
          ''{"query": "acme q3 board deck", "zdr": true}''

          ```

          You can also send it as a header, `X-Keiro-ZDR: true`, or a query parameter, `?zdr=true`. Every ZDR response carries `X-Keiro-ZDR: on`,
          so you can check it was applied.'
  /api/v2/search/slow:
    post:
      operationId: post_api_v2_search_slow
      tags:
      - Api
      summary: POST /api/v2/search/slow
      x-source: https://docs.keirolabs.cloud/search/slow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SearchSlowRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2SearchSlowResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/search/slow  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{\"query\": \"companies hiring rust engineers in berlin\"}'\n```\n**Python**\n```python\nimport os, requests\n\
          res = requests.post(\n \"https://api.keirolabs.cloud/api/v2/search/slow\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"\
          },\n json={\n \"que"
  /api/v2/sitemap:
    post:
      operationId: post_api_v2_sitemap
      tags:
      - Api
      summary: POST /api/v2/sitemap
      x-source: https://docs.keirolabs.cloud/content/sitemap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV2SitemapRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2SitemapResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://api.keirolabs.cloud/api/v2/sitemap  -H \"Authorization: Bearer $KEIRO_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\"url\": \"stripe.com\", \"path_prefix\": \"/blog\", \"limit\": 500}'\n```\n**Python**\n```python\nimport os, requests\nres\
          \ = requests.post(\n \"https://api.keirolabs.cloud/api/v2/sitemap\",\n headers={\"Authorization\": f\"Bearer {os.environ['KEIRO_API_KEY']}\"\
          },\n json={\n \"url\": "
  /api/web-crawler:
    post:
      operationId: post_api_web_crawler
      tags:
      - Api
      summary: Legacy alias for backward compatibility. Same handler, same cost.
      description: Legacy alias for the extract endpoint, providing the same functionality and cost.
      x-source: https://docs.keirolabs.cloud/content/extract
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV2AnswerRequest:
      type: object
      properties:
        query:
          type: string
    PostApiV2AnswerResponse:
      type: object
      properties:
        answer:
          type: string
        sources:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              url:
                type: string
              domain:
                type: string
              snippet:
                type: string
        stats:
          type: object
          properties:
            sources_count:
              type: integer
            latency_ms:
              type: integer
            credits_used:
              type: integer
            attempt:
              type: string
        creditsRemaining:
          type: integer
    PostApiV2DeepRequest:
      type: object
      properties:
        query:
          type: string
    PostApiV2DeepResponse:
      type: object
      properties:
        query:
          type: string
        results:
          type: array
          items:
            type: object
            properties:
              position:
                type: integer
              serp_rank:
                type: integer
              title:
                type: string
              url:
                type: string
              snippet:
                type: string
              excerpt:
                type: string
              content:
                type: string
              content_status:
                type: string
              answer_likelihood:
                type: number
        meta:
          type: object
          properties:
            latency_ms:
              type: integer
            fetched:
              type: integer
            ranked:
              type: boolean
            retry:
              type: boolean
        count:
          type: integer
        creditsCharged:
          type: integer
        credits_used:
          type: integer
        creditsRemaining:
          type: integer
    PostApiV2EmbeddingsRequest:
      type: object
      properties:
        urls:
          type: array
          items:
            type: string
        input:
          type: string
    PostApiV2EmbeddingsResponse:
      type: object
      properties:
        object:
          type: string
        model:
          type: string
        dimensions:
          type: integer
        data:
          type: array
          items:
            type: object
            properties:
              object:
                type: string
              index:
                type: integer
              embedding:
                type: array
                items:
                  type: number
        usage:
          type: object
          properties:
            prompt_tokens:
              type: integer
            total_tokens:
              type: integer
        creditsCharged:
          type: number
        creditsRemaining:
          type: number
    PostApiV2ExtractRequest:
      type: object
      properties:
        url:
          type: string
        mode:
          type: string
    PostApiV2SearchContentRequest:
      type: object
      properties:
        query:
          type: string
        maxResults:
          type: integer
        mode:
          type: string
    PostApiV2SearchContentResponse:
      type: object
      properties:
        title:
          type: string
        url:
          type: string
        snippet:
          type: string
        content:
          type: string
        metadata:
          type: object
          properties:
            word_count:
              type: integer
        enrichment:
          type: object
          properties:
            tldr:
              type: string
            tags:
              type: array
              items:
                type: string
            entities:
              type: object
              properties:
                key_entities:
                  type: array
                  items:
                    type: string
        embeddings:
          type: object
          properties:
            model:
              type: string
            dimensions:
              type: integer
            chunkSize:
              type: integer
            chunkCount:
              type: integer
            totalChunks:
              type: integer
            chunks:
              type: array
              items:
                type: object
                properties:
                  index:
                    type: integer
                  embedding:
                    type: array
                    items:
                      type: number
            truncated:
              type: boolean
            error:
              type:
              - string
              - 'null'
        error:
          type: string
    PostApiV2SearchFastRequest:
      type: object
      properties:
        query:
          type: string
        maxResults:
          type: integer
    PostApiV2SearchFastResponse:
      type: object
      properties:
        query:
          type: string
        results:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              url:
                type: string
              snippet:
                type: string
              position:
                type: integer
              score:
                type: integer
        count:
          type: integer
        latencyMs:
          type: integer
        partial:
          type: boolean
        creditsCharged:
          type: number
        creditsRemaining:
          type: integer
    PostApiV2SearchGoogleRequest:
      type: object
      properties:
        query:
          type: string
    PostApiV2SearchGoogleResponse:
      type: object
      properties:
        query:
          type: string
        results:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              url:
                type: string
              snippet:
                type: string
        count:
          type: integer
        latencyMs:
          type: integer
        creditsCharged:
          type: integer
        creditsRemaining:
          type: integer
    PostApiV2SearchLiteRequest:
      type: object
      properties:
        query:
          type: string
        zdr:
          type: boolean
    PostApiV2SearchSlowRequest:
      type: object
      properties:
        query:
          type: string
    PostApiV2SearchSlowResponse:
      type: object
      properties:
        query:
          type: string
        results:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
              url:
                type: string
              snippet:
                type: string
              position:
                type: integer
        count:
          type: integer
        creditsCharged:
          type: integer
        creditsRemaining:
          type: integer
    PostApiV2SitemapRequest:
      type: object
      properties:
        url:
          type: string
        path_prefix:
          type: string
        limit:
          type: integer
    PostApiV2SitemapResponse:
      type: object
      properties:
        site:
          type: string
        source:
          type: string
        sitemaps:
          type: array
          items:
            type: string
        total_urls:
          type: integer
        truncated:
          type: boolean
        urls:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              lastmod:
                type: string
                format: date
        creditsCharged:
          type: integer
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api