HubVibe Audit API
The Audit API from HubVibe — 5 operation(s) for audit.
The Audit API from HubVibe — 5 operation(s) for audit.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/hubvibe-io-com:hubvibe-io-com-audit-api"
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.
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: 3.2.0
info:
title: 'HubVibe: Pay-per-Call Agent Tools: Web Search, Email…'
description: 'Pay-per-call tools for AI agents under /work -- web search and cited research, email verification, company enrichment, contact and sanctions screening, non-government ownership and public identity intelligence, phone/IP/DNS lookups, stock prices, SEC filings and insider trades, crypto prices and prediction-market odds, news in any language, economic and open data, US real-estate data, flight status, places and weather, web scraping, LLM completion and extraction, BigQuery SQL and forecasting, a deterministic probability engine, image/speech/video generation and sandboxed Python -- plus five deterministic site audits: accessibility (axe-core), SEO, security headers, performance, and the $0.15 bundle, at $0.05 per single audit. Every /work route declares its request schema and a typed 200 response schema with an example; every delivered job has a receipt at /work/receipts/{id}.
Built for agent-to-agent use: every paid route answers an unauthenticated request with HTTP 402 carrying a machine-readable payment challenge, so a paying agent can discover the price and settle without a human in the loop. The challenge names the rails this deployment can actually settle; see /.well-known/agent.json.
Every result is a rule-based check against the actual page. Nothing here is an LLM judging quality, and a check that could not run is reported as an error, never as a passing result.
Discovery: /.well-known/agent.json, /.well-known/ard.json, /llms.txt, /mcp.json, /openapi.json, and GET /discover?q= (or POST /discover/semantic with {"query": ...}) -- a free ranked search over the capabilities this node sells right now; /discover/health says which methods are live.'
termsOfService: https://hubvibe-io.com/terms
contact:
name: HubVibe
url: https://hubvibe-io.com/
email: Hubvibe@hubvibe-io.com
version: 1.35.0
x-guidance: 'HubVibe sells 75 tools to AI agents, one POST route each, priced per call in USD ($0.05 to $20.00; each operation''s x-payment-info.price). No account and no subscription.
To buy: POST the JSON body the operation''s requestBody schema describes (every operation carries an example). Unpaid, the route answers HTTP 402 with the price and a payment challenge for each rail its x-payment-info.protocols lists. Rails: x402 (USDC; sign an EIP-3009 authorization for the amount to the 402''s payTo and send it as PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1)); MPP tempo (USDC on Tempo; send Authorization: Payment); MPP evm (USDC on Base; send Authorization: Payment); MPP stripe (card; send Authorization: Payment). Pay with any one and resend the same request with the credential. A /work 200 also carries a receipt id (GET /work/receipts/{receipt_id}). A /work job still running at 22 s answers 202 with collect_url (GET /work/jobs/{job_id}, free); its payment is taken only when it delivers.
Not billed: a 429 (the rate limit is checked before payment), a call that produced no result (an MPP tempo or evm credential from one can be presented again while its challenge is valid), or a /work result that fails its published 200 schema (HTTP 502, contract_mismatch).
Before paying, GET /contracts/{capability} returns the exact terms under a contract_hash (GET /contracts lists all); send it as X-HubVibe-Contract and the node refuses payment if the terms changed.
Prepaid: a USDC transfer on Solana buys an X-API-Key (POST /pay/solana/challenge, then /pay/solana/redeem).
The same tools are MCP tools at /mcp (x402 over MCP) and A2A skills at /a2a. Request examples: each operation here, /.well-known/agent.json and /contracts/{capability}. Catalog: GET /work and /llms.txt.'
servers:
- url: https://hubvibe-io.com
description: Production
tags:
- name: Audit
paths:
/audit/wcag:
post:
summary: Audit Wcag
description: 'Website accessibility audit (a11y, WCAG compliance check): WCAG 2.1 level A and AA conformance of any live URL or raw HTML, tested with axe-core in a real headless browser. Returns every violation with rule id, impact, help text and affected node count. Deterministic rules; a check that cannot run returns an error, never a pass.'
operationId: audit_wcag_audit_wcag_post
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/XPayment'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AuditRequest'
example:
url: https://example.com
responses:
'200':
description: The audit result.
content:
application/json:
schema:
$ref: '#/components/schemas/Wcag'
example:
status: ok
pass: false
engine: axe-core
ruleset: wcag2a, wcag2aa, wcag21a, wcag21aa
violations:
- id: image-alt
impact: critical
help: Images must have alternative text
help_url: https://dequeuniversity.com/rules/axe/4.12/image-alt
nodes_affected: 3
- id: color-contrast
impact: serious
help: Elements must meet minimum color contrast ratio thresholds
help_url: https://dequeuniversity.com/rules/axe/4.12/color-contrast
nodes_affected: 7
coverage:
frames_audited: 2
frames_unreachable: 0
frames_not_loaded: 1
page_finished_loading: true
'422':
$ref: '#/components/responses/ValidationError422'
'402':
description: Payment Required
x-payment-info:
offers:
- amount: '50000'
currency: '0x20C000000000000000000000b9537d11c60E8b50'
intent: charge
method: tempo
- amount: '50000'
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
intent: charge
method: evm
- method: x402
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '50000'
currency: USDC
payTo: '0x837C40E2B4e976f43Ffb4451eE281A00fA9477dd'
x402Versions:
- 1
- 2
protocols:
- x402: {}
- mpp:
method: tempo
intent: charge
currency: '0x20C000000000000000000000b9537d11c60E8b50'
- mpp:
method: evm
intent: charge
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
price:
mode: fixed
currency: USD
amount: '0.05'
tags:
- Audit
/audit/seo:
post:
summary: Audit Seo
operationId: audit_seo_audit_seo_post
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/XPayment'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AuditRequest'
example:
url: https://example.com
responses:
'200':
description: The audit result.
content:
application/json:
schema:
$ref: '#/components/schemas/Response200_d506ad1e'
example:
status: ok
pass: false
findings:
- id: missing-meta-description
severity: critical
detail: No meta description found
- id: missing-canonical
severity: minor
detail: No canonical link found
'422':
$ref: '#/components/responses/ValidationError422'
'402':
description: Payment Required
x-payment-info:
offers:
- amount: '50000'
currency: '0x20C000000000000000000000b9537d11c60E8b50'
intent: charge
method: tempo
- amount: '50000'
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
intent: charge
method: evm
- method: x402
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '50000'
currency: USDC
payTo: '0x837C40E2B4e976f43Ffb4451eE281A00fA9477dd'
x402Versions:
- 1
- 2
protocols:
- x402: {}
- mpp:
method: tempo
intent: charge
currency: '0x20C000000000000000000000b9537d11c60E8b50'
- mpp:
method: evm
intent: charge
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
price:
mode: fixed
currency: USD
amount: '0.05'
description: 'SEO audit of a web page (on-page SEO check) for any live URL or raw HTML: title tag, meta description, H1 heading structure, canonical link, OpenGraph and social tags, JSON-LD structured data, html lang attribute. Rule-by-rule findings with severity and what is missing or malformed.'
tags:
- Audit
/audit/security:
post:
summary: Audit Security
operationId: audit_security_audit_security_post
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/XPayment'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UrlAuditRequest'
example:
url: https://example.com
responses:
'200':
description: The audit result.
content:
application/json:
schema:
$ref: '#/components/schemas/Response200_d506ad1e'
example:
status: ok
pass: false
findings:
- id: missing-hsts
severity: serious
detail: No Strict-Transport-Security header
- id: missing-csp
severity: moderate
detail: No Content-Security-Policy header
'422':
$ref: '#/components/responses/ValidationError422'
'402':
description: Payment Required
x-payment-info:
offers:
- amount: '50000'
currency: '0x20C000000000000000000000b9537d11c60E8b50'
intent: charge
method: tempo
- amount: '50000'
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
intent: charge
method: evm
- method: x402
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '50000'
currency: USDC
payTo: '0x837C40E2B4e976f43Ffb4451eE281A00fA9477dd'
x402Versions:
- 1
- 2
protocols:
- x402: {}
- mpp:
method: tempo
intent: charge
currency: '0x20C000000000000000000000b9537d11c60E8b50'
- mpp:
method: evm
intent: charge
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
price:
mode: fixed
currency: USD
amount: '0.05'
description: 'Security headers check for a website: audits HTTPS, HSTS, Content- Security-Policy (CSP), X-Content-Type-Options, X-Frame-Options / clickjacking protection, Referrer-Policy and CORS from the real HTTP response of any live URL. Findings with severity for what is missing. Header posture only, not a penetration test.'
tags:
- Audit
/audit/performance:
post:
summary: Audit Performance
operationId: audit_performance_audit_performance_post
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/XPayment'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UrlAuditRequest'
example:
url: https://example.com
responses:
'200':
description: The audit result.
content:
application/json:
schema:
$ref: '#/components/schemas/Response200'
example:
status: ok
pass: false
metrics:
dom_node_count: 2097
total_bytes_transferred: 3412000
request_count: 118
unmeasured_responses: 0
findings:
- id: high-dom-complexity
severity: moderate
detail: 2097 DOM nodes (recommended <= 1500)
- id: heavy-page-weight
severity: moderate
detail: 3.4 MB transferred (recommended <= 3 MB)
- id: high-request-count
severity: minor
detail: 118 network requests (recommended <= 100)
disclosure: Single-page-load measurement, not a full Lighthouse-style audit.
'422':
$ref: '#/components/responses/ValidationError422'
'402':
description: Payment Required
x-payment-info:
offers:
- amount: '50000'
currency: '0x20C000000000000000000000b9537d11c60E8b50'
intent: charge
method: tempo
- amount: '50000'
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
intent: charge
method: evm
- method: x402
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '50000'
currency: USDC
payTo: '0x837C40E2B4e976f43Ffb4451eE281A00fA9477dd'
x402Versions:
- 1
- 2
protocols:
- x402: {}
- mpp:
method: tempo
intent: charge
currency: '0x20C000000000000000000000b9537d11c60E8b50'
- mpp:
method: evm
intent: charge
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
price:
mode: fixed
currency: USD
amount: '0.05'
description: 'Page speed and page weight audit of a web page from one real browser load: total bytes transferred, HTTP request count and DOM node count, measured rather than estimated, with findings when the page is heavy. Page-weight signals, not Core Web Vitals.'
tags:
- Audit
/audit/bundle:
post:
summary: Audit Bundle
description: 'Full website audit in one call: accessibility (WCAG 2.1 A/AA via axe-core), on-page SEO, HTTP security headers and page speed / page weight, from a single browser load of one URL. Cheaper than four separate calls; if any part cannot run, nothing is billed. Use a single audit route when you need only one of the four.'
operationId: audit_bundle_audit_bundle_post
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/XPayment'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UrlAuditRequest'
example:
url: https://example.com
responses:
'200':
description: The audit result.
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
status:
type: string
const: ok
description: Present only on a completed audit.
pass:
type: boolean
description: Whether every rule in this dimension passed.
wcag:
$ref: '#/components/schemas/Wcag'
seo:
$ref: '#/components/schemas/Response200_d506ad1e'
security:
$ref: '#/components/schemas/Response200_d506ad1e'
performance:
$ref: '#/components/schemas/Response200'
required:
- pass
example:
status: ok
pass: false
wcag:
status: ok
pass: false
engine: axe-core
ruleset: wcag2a, wcag2aa, wcag21a, wcag21aa
violations:
- id: image-alt
impact: critical
help: Images must have alternative text
help_url: https://dequeuniversity.com/rules/axe/4.12/image-alt
nodes_affected: 3
coverage:
frames_audited: 2
frames_unreachable: 0
frames_not_loaded: 1
page_finished_loading: true
seo:
status: ok
pass: false
findings:
- id: missing-meta-description
severity: critical
detail: No meta description found
security:
status: ok
pass: false
findings:
- id: missing-hsts
severity: serious
detail: No Strict-Transport-Security header
performance:
status: ok
pass: false
metrics:
dom_node_count: 2097
total_bytes_transferred: 3412000
request_count: 118
unmeasured_responses: 0
findings:
- id: high-dom-complexity
severity: moderate
detail: 2097 DOM nodes (recommended <= 1500)
disclosure: Single-page-load measurement, not a full Lighthouse-style audit.
'422':
$ref: '#/components/responses/ValidationError422'
'402':
description: Payment Required
x-payment-info:
offers:
- amount: '150000'
currency: '0x20C000000000000000000000b9537d11c60E8b50'
intent: charge
method: tempo
- amount: '150000'
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
intent: charge
method: evm
- method: x402
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '150000'
currency: USDC
payTo: '0x837C40E2B4e976f43Ffb4451eE281A00fA9477dd'
x402Versions:
- 1
- 2
protocols:
- x402: {}
- mpp:
method: tempo
intent: charge
currency: '0x20C000000000000000000000b9537d11c60E8b50'
- mpp:
method: evm
intent: charge
currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
price:
mode: fixed
currency: USD
amount: '0.15'
tags:
- Audit
components:
responses:
ValidationError422:
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
parameters:
Authorization:
name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
XApiKey:
name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
XPayment:
name: x-payment
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Payment
schemas:
Response200_d506ad1e:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
status:
type: string
const: ok
description: Present only on a completed audit.
pass:
type: boolean
description: Whether every rule in this dimension passed.
findings:
$ref: '#/components/schemas/Findings'
required:
- pass
UrlAuditRequest:
properties:
url:
type: string
title: Url
language:
$ref: '#/components/schemas/Language_25963fa1'
type: object
required:
- url
title: UrlAuditRequest
description: 'For audit routes that need a live, fetchable URL -- security and
performance checks inspect real HTTP responses and real network
behavior, so raw HTML alone (no server to talk to) isn''t enough.'
Language_25963fa1:
anyOf:
- type: string
maxLength: 35
- type: 'null'
title: Language
description: 'Optional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable text of the findings is returned in this language; rule ids, severities, URLs and numbers are untouched. Default: English.'
Findings:
type: array
description: One entry per rule that did not pass. Empty when the check is clean.
items:
type: object
properties:
id:
type: string
description: Stable rule identifier.
severity:
type: string
description: Rule severity.
detail:
type: string
description: What failed and where.
required:
- id
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
Wcag:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
status:
type: string
const: ok
description: Present only on a completed audit.
pass:
type: boolean
description: Whether every rule in this dimension passed.
engine:
type: string
const: axe-core
violations:
type: array
items:
type: object
properties:
id:
type: string
description: axe-core rule id.
impact:
type:
- string
- 'null'
description: axe-core impact level.
help:
type:
- string
- 'null'
help_url:
type: string
format: uri
nodes_affected:
type: integer
minimum: 0
required:
- id
required:
- pass
AuditRequest:
properties:
html:
anyOf:
- type: string
maxLength: 2097152
- type: 'null'
title: Html
description: Raw HTML source to audit
url:
anyOf:
- type: string
- type: 'null'
title: Url
description: Live URL to audit instead of raw HTML
language:
$ref: '#/components/schemas/Language_25963fa1'
type: object
title: AuditRequest
Response200:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
status:
type: string
const: ok
description: Present only on a completed audit.
pass:
type: boolean
description: Whether every rule in this dimension passed.
metrics:
type: object
properties:
dom_node_count:
type: integer
minimum: 0
total_bytes_transferred:
type: integer
minimum: 0
request_count:
type: integer
minimum: 0
findings:
$ref: '#/components/schemas/Findings'
required:
- pass
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
x-service-info:
categories:
- data
- search
- ai
- web
- blockchain
docs:
apiReference: /docs
homepage: /
llms: /llms.txt
agent: /.well-known/agent.json
ard: /.well-known/ard.json