Cyble · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the ODIN API

31 actions 31 updates documentation extends openapi/cyble-odin-openapi.yml
Derived by API Evangelist Built from the contracts Cyble publishes. Cyble did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

operationIdx-apievangelist-derived-operation-idx-apievangelist-notex-apievangelist-profilex-apievangelist-enrichedx-providerx-productx-documentation

Targets 31 · first 16 shown; the file carries all of them

$.info
$.tags
$.security
$.servers
$.components.securitySchemes.ApiKeyAuth
$.paths['/v1/hosts/search'].post
$.paths['/v1/hosts/count'].post
$.paths['/v1/hosts/summary'].post
$.paths['/v1/hosts/{ip}'].get
$.paths['/v1/hosts/cve/{ip}'].get
$.paths['/v1/hosts/cves/{ip}/{cve}'].get
$.paths['/v1/hosts/exploits/{ip}'].get
$.paths['/v1/hosts/exploits/{ip}/{cve}'].get
$.paths['/v1/cves/all/{ip}/{page}'].get
$.paths['/v1/exposed/buckets/count'].post
$.paths['/v1/exposed/buckets/summary'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the ODIN API
  version: 1.0.0
extends: openapi/cyble-odin-openapi.yml
x-generated: '2026-08-11'
x-method: generated
x-source: >-
  Derived from the harvested openapi/_original/cyble-odin-openapi-original.yml plus the repo
  artifacts. Captures API Evangelist annotations and the contract gaps found during enrichment.
  The original specification is never mutated.
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apievangelist.com/providers/cyble
    x-apievangelist-enriched: '2026-08-11'
    x-provider: Cyble Inc.
    x-product: ODIN
    x-documentation: https://docs.odin.io/api-reference/introduction
    x-llms-txt: https://docs.odin.io/llms.txt
    contact:
      name: Cyble Support
      url: https://search.odin.io/community
    x-apievangelist-notes:
    - No operationIds on 26 of 27 operations - only searchExposedBuckets carries one.
    - No tags[] declaration at the document root, though every operation is tagged.
    - No security requirement declared at the document root despite every operation requiring X-API-Key.
- target: $.tags
  update:
  - name: Hosts
    description: IPv4 scan results across 500+ ports with ASN, geolocation, CVE and exploit enrichment.
  - name: ExposedBuckets
    description: Cloud storage buckets discovered open on the internet, AI/ML-labelled and categorised.
  - name: ExposedFiles
    description: Files harvested from exposed buckets, categorised and labelled by sensitivity.
  - name: domain
    description: Domain and subdomain search plus current and historical WHOIS records.
  - name: Fields
    description: The queryable field registry per dataset that makes Lucene queries writable.
  - name: Health
    description: API server liveness.
- target: $.security
  update:
  - ApiKeyAuth: []
- target: $.servers
  update:
  - url: https://api.odin.io/
    description: Production. HTTPS only - plain HTTP requests fail.
- target: $.components.securitySchemes.ApiKeyAuth
  update:
    description: >-
      API key issued from the ODIN console under "API and Query Limits"
      (https://search.odin.io/ -> profile -> API and Query Limits). Keys can be enabled, disabled or
      deleted individually. The docs prose writes the header X-Api-Key and the Go SDK sends
      x-api-key; HTTP header names are case-insensitive so all spellings interoperate.
    x-key-management: https://docs.odin.io/authentication
- target: $.paths['/v1/hosts/search'].post
  update:
    operationId: searchHosts
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/count'].post
  update:
    operationId: countHosts
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/summary'].post
  update:
    operationId: summarizeHosts
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/{ip}'].get
  update:
    operationId: getHost
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/cve/{ip}'].get
  update:
    operationId: getHostCves
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/cves/{ip}/{cve}'].get
  update:
    operationId: getHostCve
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/exploits/{ip}'].get
  update:
    operationId: getHostExploits
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/hosts/exploits/{ip}/{cve}'].get
  update:
    operationId: getHostCveExploits
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/cves/all/{ip}/{page}'].get
  update:
    operationId: listHostCveDetails
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/exposed/buckets/count'].post
  update:
    operationId: countExposedBuckets
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/exposed/buckets/summary'].post
  update:
    operationId: summarizeExposedBuckets
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/exposed/files/search'].post
  update:
    operationId: searchExposedFiles
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/exposed/files/count'].post
  update:
    operationId: countExposedFiles
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/exposed/files/summary'].post
  update:
    operationId: summarizeExposedFiles
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/search'].post
  update:
    operationId: searchDomains
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/count'].post
  update:
    operationId: countDomains
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/subdomain/search'].post
  update:
    operationId: searchSubdomains
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/subdomain/count'].post
  update:
    operationId: countSubdomains
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/whois/{domain-name}'].get
  update:
    operationId: getDomainWhois
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/whois/{domain-name}/historical'].get
  update:
    operationId: getDomainWhoisHistory
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/whois/{domain-name}/is-expired'].get
  update:
    operationId: isDomainExpired
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/domain/whois/{domain-name}/is-registered'].get
  update:
    operationId: isDomainRegistered
    x-apievangelist-derived-operation-id: true
    summary: Check whether a domain is registered
    x-apievangelist-note: >-
      The published summary on this operation reads "Fetch all the domain whois historical records",
      duplicating the /historical operation. The path and the docs index both indicate a
      registration check.
- target: $.paths['/v1/fields/exposed/buckets'].get
  update:
    operationId: listExposedBucketFields
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/fields/exposed/files'].get
  update:
    operationId: listExposedFileFields
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/fields/hosts/{category}'].get
  update:
    operationId: listHostFields
    x-apievangelist-derived-operation-id: true
- target: $.paths['/v1/ping'].get
  update:
    operationId: healthCheck
    x-apievangelist-derived-operation-id: true
    x-unauthenticated: true
    x-apievangelist-note: Verified live on 2026-08-11 - returns 200 "pong" with no API key.

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/cyble-odin-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?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.