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.
openapi: 3.2.0
info:
title: Hacker Bob public records NL Web API
version: 1.0.0
summary: Read-only access to cleared public Hacker Bob CVE records and capability metadata.
description: 'This API exposes only cleared public records. It cannot start assessments, interact with targets, access private workspaces, or spend credits. Assessment execution remains in the separately installed local Hacker Bob runtime. The major version is encoded in the URL. Breaking changes use a new major version. Deprecated versions publish Deprecation and Sunset headers with at least 90 days notice. Lifecycle policy: https://hackerbob.ai/api-policy.md.'
license:
name: Apache-2.0
identifier: Apache-2.0
url: https://www.apache.org/licenses/LICENSE-2.0
contact:
name: Hacker Bob security
email: security@hackerbob.ai
url: https://hackerbob.ai/contact
x-versioning-policy:
strategy: URL major version
current: v1
deprecated: []
policy: https://hackerbob.ai/api-policy.md
minimumSunsetNoticeDays: 90
servers:
- url: https://hackerbob.ai
description: Public production records service
security: []
tags:
- name: NLWeb
description: Natural-language search over the public record index.
paths:
/ask:
get:
operationId: searchPublicRecordsWithNlweb
summary: Search public records using NLWeb
description: Search cleared public Hacker Bob records. Request text/event-stream or set stream=true for a Server-Sent Events response.
tags:
- NLWeb
parameters:
- name: query
in: query
description: CVE identifier, project, or publication status to search.
schema:
type: string
default: Hacker Bob public CVE records
- name: stream
in: query
description: Return Server-Sent Events when true.
schema:
type: boolean
default: false
responses:
'200':
description: NLWeb list response or Server-Sent Events stream.
content:
application/json:
schema:
$ref: '#/components/schemas/NlwebResponse'
text/event-stream:
schema:
type: string
'400':
description: The request is invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: The endpoint or public record does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'405':
description: The HTTP method is not supported.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: The edge request limit is exhausted. Retry after the advertised reset.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: The public records service could not complete the request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
deprecated: false
x-lifecycle:
status: active
deprecationPolicy: https://hackerbob.ai/api-policy.md
minimumSunsetNoticeDays: 90
components:
schemas:
ErrorResponse:
type: object
additionalProperties: false
required:
- error
- requestId
properties:
error:
type: object
additionalProperties: false
required:
- code
- message
properties:
code:
type: string
message:
type: string
details: {}
requestId:
type: string
NlwebResponse:
type: object
additionalProperties: true
required:
- query_id
- results
properties:
query_id:
type: string
results:
type: array
items:
$ref: '#/components/schemas/NlwebResult'
NlwebResult:
type: object
additionalProperties: false
required:
- url
- name
- site
- score
- snippet
properties:
url:
type: string
format: uri
name:
type: string
site:
type: string
score:
type: number
minimum: 0
maximum: 1
snippet:
type: string
externalDocs:
description: Hacker Bob public API reference
url: https://hackerbob.ai/api-reference