org: keirolabs
url: https://keirolabs.cloud
api_base: https://kierolabs.space
mcp_url: https://kierolabs.space/mcp
type: B2B SaaS API
category: web data infrastructure
positioning: "The Internet. Structured for Agents."
primitive: index, not scraper
  - query intent in
  - ranked structured citable sources out
  - no proxies, no headless browsers, no cron jobs

---

auth:
  method: apiKey field in request body
  key_format: keirolabs_<random_string>
  v1_key_compat: true (v1 keys work on v2 endpoints)
  get_key: https://platform.keirolabs.cloud/login
  reset: instant via dashboard, no support ticket

---

rate_limits:
  Explorer:   30 req/min
  Essential:  60 req/min
  Pro:        300 req/min
  Startup:    1000 req/min
  burst:      2x sustained for 10 seconds
  headers:
    X-RateLimit-Limit:      requests allowed per window
    X-RateLimit-Remaining:  requests left in current window
    X-RateLimit-Reset:      Unix timestamp when window resets
    Retry-After:            seconds to wait (sent with 429 only)
  on_429: exponential backoff starting at 1s, max 60s

---

endpoints:

  v2:
    - id: keirolabs
      method: POST
      path: /api/v2/keirolabs
      cost: 0.5 credits
      latency: 100ms–1s
      when_to_use: default choice for 90% of use cases — index-based, fast, cited
      params:
        query:        { type: string,  required: true,  min: 1, max: 500 }
        maxResults:   { type: integer, required: false, default: 10, max: 50 }
      response:
        results:      [{ title, url, snippet, score: float(0-1), published_date: ISO8601|null }]
        query:        string
        total_results: integer
        latency_ms:   integer
        credits_used: float
      notes:
        - auto-fires fresh search when cached data is stale
        - refreshes index in background, no user action needed

    - id: fast
      method: POST
      path: /api/v2/search/fast
      cost: 0.5 credits
      latency: ~1s
      when_to_use: when recency matters more than cost — always-fresh live search
      params:
        query:          { type: string,  required: true,  min: 1, max: 500 }
        maxResults:     { type: integer, required: false, default: 20, max: 50 }
        mode:           { type: enum,     required: false, default: "ai", values: [ai, deep, medium, light] }
        noCache:        { type: boolean,  required: false, default: false }
        includeMedia:   { type: boolean,  required: false, default: false }
      notes:
        - proxy-backed multi-engine
        - first-result-wins strategy for speed

    - id: flash
      method: POST
      path: /api/v2/search/flash
      cost: 0.5 credits
      latency: ~500ms
      when_to_use: autocomplete, type-ahead, any UI with <1s response budget
      params:
        query:        { type: string,  required: true,  min: 1, max: 500 }
        maxResults:   { type: integer, required: false, default: 5, max: 20 }
      notes:
        - lowest latency endpoint on the network
        - optimized for partial queries

    - id: content
      method: POST
      path: /api/v2/search/content
      cost: 1.5 credits
      latency: ~3s
      when_to_use: RAG pipelines that need full page text, not just snippets
      params:
        query:                      { type: string,  required: true,  min: 1, max: 500 }
        maxResults:                 { type: integer, required: false, default: 3, max: 5 }
        mode:                       { type: enum,     required: false, default: "ai", values: [ai, deep, medium, light] }
        noCache:                    { type: boolean,  required: false, default: false }
        includeMedia:               { type: boolean,  required: false, default: false }
        embeddings.enabled:         { type: boolean,  required: false, default: false }
        embeddings.dimensions:      { type: enum,     required: false, default: 768, values: [384, 512, 768, 1024] }
        embeddings.chunkSize:       { type: integer,  required: false, default: 500, min: 100, max: 2000 }
      response:
        results: [{ title, url, full_text: markdown, chunks: [{ text, embedding: float[] }], score }]
      notes:
        - returns RAG-ready chunks or raw markdown
        - embeddings generated inline, no separate call

    - id: batch
      method: POST
      path: /api/v2/search/batch
      poll: GET /api/v2/search/batch/:id
      cost: 0.5 credits per query
      latency: async (typical 30s–5min)
      when_to_use: overnight backfills, dataset generation, >100 queries
      params:
        queries:      { type: string[], required: true,  min: 1, max: 10000, item_max: 500 }
        maxResults:   { type: integer,  required: false, default: 10, max: 50 }
      response:
        id:           string
        status:       enum [queued, running, completed, failed]
        progress:     { completed: int, total: int }
        results_url:  string (expires 1 hour after completion)
      notes:
        - auto-retries on transient failures
        - jobs expire after 1 hour
        - tier_required: Startup and above

  v1:
    - id: search
      method: POST
      path: /api/search
      params: { query: string, cache_search: boolean, noCache: boolean, includeMedia: boolean, included_urls: string[] }

    - id: search_pro
      method: POST
      path: /api/search-pro
      note: enhanced results with metadata and related queries
      params: { query: string, cache_search: boolean, noCache: boolean, includeMedia: boolean, included_urls: string[] }

    - id: research
      method: POST
      path: /api/research
      note: comprehensive research with summary and key points
      params: { query: string, cache_search: boolean, noCache: boolean, includeMedia: boolean, included_urls: string[] }

    - id: research_pro
      method: POST
      path: /api/research-pro
      note: detailed analysis with timeline and visualizations
      params: { query: string, cache_search: boolean, noCache: boolean, includeMedia: boolean, included_urls: string[] }

    - id: answer
      method: POST
      path: /api/answer
      note: direct AI-powered answer with cited sources
      params: { query: string, noCache: boolean, includeMedia: boolean }

    - id: web_crawler
      method: POST
      path: /api/web-crawler
      note: structured markdown + metadata from any URL
      params: { url: string }

    - id: search_engine
      method: POST
      path: /api/search-engine
      note: full SERP — organic, images, videos, news, maps, localized
      params:
        query:      { type: string, required: true }
        type:       { type: enum, default: general, values: [general, images, videos, news, it, science, social, music, files, maps] }
        language:   { type: ISO_639_1, default: en }
        region:     { type: ISO_3166_1_alpha2, default: null }
        time_range: { type: enum, default: null, values: [day, week, month, year] }
        top_n:      { type: integer, default: 10, min: 1, max: 100 }

    - id: agentic_search
      method: POST
      path: /api/agentic-search
      note: autonomous research agent that navigates the web to find answers
      params: { query: string }

    - id: biomed
      method: POST
      path: /api/biomed
      note: biomedical papers, clinical trials, drug safety, protein sequences
      params:
        query:              { type: string, required: true }
        max_results:        { type: integer, default: 10, min: 3, max: 25 }
        include_trials:     { type: boolean, default: true }
        include_drugs:      { type: boolean, default: true }
        include_proteins:   { type: boolean, default: false }

  system:
    - id: health
      method: GET
      path: /health
      returns: { status: "ok"|"degraded", version: string, region: string }

---

mcp_tools:
  - name: get_endpoint
    description: retrieve full schema and params for any endpoint by id
    params: { endpoint_id: string }
  - name: list_resources
    description: view system resources and rate limits for authenticated account
    params: {}
  - name: calculate_cost
    description: estimate credit cost for a planned batch of queries
    params: { endpoint_id: string, count: integer }

---

error_codes:
  200: OK
  400: Bad Request — invalid params, check response body for field-level errors
  401: Unauthorized — invalid or missing API key
  429: Rate Limited — check Retry-After header, implement backoff
  500: Internal Error — retry once, then contact support if persists
  503: Service Unavailable — temporary outage, retry with exponential backoff

---

plans:
  - name: Explorer
    price_monthly: $0
    searches: 500
    rate_limit: 30 req/min
    queue: standard
    log_retention: none
    card_required: false
    batch: false
    overage: not allowed (hard stop at 500)
    includes: [all v3 endpoints, community Discord]

  - name: Essential
    price_monthly: $15
    price_first_month: $1
    searches: 5000
    rate_limit: 60 req/min
    queue: standard
    log_retention: 7 days
    batch: false
    overage: billed at $0.0025/search
    includes: [drift, remem, email support]

  - name: Pro
    price_monthly: $25
    price_yearly: $250 ($20.83/mo)
    searches: 15000
    rate_limit: 300 req/min
    queue: priority (2x speed)
    log_retention: 30 days
    batch: false
    loyalty_bonus: 5% extra credits monthly
    overage: billed at $0.0014/search
    includes: [webhook integrations, drift, remem, priority support]

  - name: Startup
    price_monthly: $50
    price_yearly: $500 ($41.67/mo)
    searches: 50000
    rate_limit: 1000 req/min
    queue: priority infrastructure
    log_retention: 90 days
    batch: true (unlimited, free)
    loyalty_bonus: 10% extra credits monthly
    overage: billed at $0.0008/search
    includes: [dedicated account manager, SSO, SAML, Slack channel]

credit_mechanics:
  unit: 1 credit = 1 call unit
  keirolabs_cost: 0.5 credits
  fast_cost: 0.5 credits
  flash_cost: 0.5 credits
  content_cost: 1.5 credits
  batch_cost: 0.5 credits per query
  v2_beta_discount: 50% off all credits until further notice
  rollover: false — expire at billing cycle end
  warning_threshold: 80% and 95% of monthly credits
  hard_cap: settable in dashboard, default off

---

pricing_comparison:
  headline: "Cost per 1,000 searches"
  keirolabs:    $0.50
  brave:        $1.00   (2x more expensive)
  serpapi:      $2.50   (5x more expensive)
  exa:          $7.00   (14x more expensive)
  tavily:       $5.00   (10x more expensive)
  perplexity:   $5.00   (10x more expensive)

---

benchmarks:
  judge_model: Gemma 3 12B
  endpoint_tested: /keirolabs
  SimpleQA:    { keirolabs: 94, perplexity: 86, tavily: 78 }
  FreshQA:     { keirolabs: 91, perplexity: 83, tavily: 77 }
  HotpotQA:    { keirolabs: 82, perplexity: 74, tavily: 68 }
  FinanceBench: 93.5%

---

index_freshness:
  hot_urls: seconds
  trending: minutes
  long_tail: minutes to hours
  guarantee: every result includes freshness timestamp

---

compliance:
  encryption: TLS 1.3 in transit, AES-256 at rest
  key_management: per-tenant wrapping, automatic rotation
  regions: [EU, US, APAC] — pinnable per request via X-Region header
  model_training: never — queries, payloads, responses excluded from all training
  audit: signed timestamped logs, real-time SIEM export
  certifications: [CCPA, GDPR, HIPAA-ready]
  contracts: [DPA, SCC, BAA] available on request
  robots_txt: always respected
  user_agent: verifiable, forwarded on every fetch

---

sdks:
  python:   pip install keirolabs
  node:     npm install @keirolabs/sdk
  go:       go get github.com/keirolabs/go-keirolabs
  all_support: async/await, streaming, retries, type hints

---

code_examples:
  python: |
    import keirolabs
    client = keirolabs.Client(api_key="keirolabs_...")
    results = client.search(query="AI regulation EU 2026", max_results=5)
    for r in results:
        print(r.title, r.url, r.score)

  node: |
    import { KeiroLabs } from '@keirolabs/sdk';
    const client = new KeiroLabs({ apiKey: 'keirolabs_...' });
    const { results } = await client.search({ query: 'AI regulation EU 2026', maxResults: 5 });

  curl: |
    curl -X POST https://kierolabs.space/api/v2/keirolabs \
      -H "Content-Type: application/json" \
      -d '{"apiKey":"keirolabs_...","query":"AI regulation EU 2026","maxResults":5}'

---

use_cases:
  - scenario: RAG pipeline for a chatbot
    endpoint: /api/v2/search/content
    why: returns full page text + embeddings in one call
    cost_per_user_msg: ~1.5 credits

  - scenario: Live news monitoring
    endpoint: /api/v2/search/fast
    why: always-fresh, bypasses cache
    cost_per_query: 0.5 credits

  - scenario: Autocomplete search box
    endpoint: /api/v2/search/flash
    why: <500ms latency
    cost_per_keystroke: 0.5 credits (debounce recommended)

  - scenario: Overnight dataset generation
    endpoint: /api/v2/search/batch
    why: 10,000 queries in one job
    cost: 0.5 credits per query

---

social_proof:
  developers: 15000+
  rag_databases_powered: 100000+
  g2_rating: 4.5/5
  case_studies:
    - customer: TaxSrishti AI
      role: Founding Engineer
      quote: "Replaced a 14-machine scraping fleet with 3 KeiroLabs endpoints. Bill dropped from $2,500 to $500/month."
      savings: 80%

    - customer: Subport AI
      role: Customer Support Automation
      quote: "Resolution time cut in half. Every answer pulls from current docs, not last quarter's version."
      improvement: 50%

    - customer: Echidna AI Foundry
      role: LLM Training Platform
      quote: "Cut data prep time by 60%. Fresh structured web data without writing a single scraper."
      improvement: 60%

---

oss:
  - name: KDX
    url: https://github.com/Neptaverse/Kdx
    description: KeiroLabs x Codex — live documentation inside your terminal
    language: TypeScript

  - name: WebRank Nano
    url: https://huggingface.co/mannybr/Webrank-nano
    description: Lightweight neural ranker
    params: 3.14M
    latency_cpu: 6.6ms
    size: 3.2MB INT8
    format: ONNX
    huggingface: mannybr/Webrank-nano

  - name: Dayta
    status: beta
    description: Query the web like a database from a notebook

---

support:
  email: team@keirolabs.cloud
  status_page: https://platform.keirolabs.cloud/status
  docs: https://platform.keirolabs.cloud/docs
  openapi: https://platform.keirolabs.cloud/openapi.json
  postman_collection: https://www.postman.com/manas-88219162-2128017/keirolabs-api/overview
  community: https://platform.keirolabs.cloud/community
  response_time: <4 hours for Pro/Startup, <24 hours for Essential

---

meta:
  version: v3
  status: public_beta
  indexed_pages: 50B+
  avg_latency: 487ms
  uptime_sla: 99.9% (Startup tier)
  financebench: 93.5%
  g2: 4.5/5
  nps: 72.5
  last_updated: 2026-05-20