openapi: 3.2.0
info:
title: Bitculator Data Meta API
description: 'Programmatic access to Bitculator market data: coins, prices, history, exchanges, trust scores, tickers, pairs, wallets, sentiment, technical indicators, liquidations, editorial content, and calculators.'
version: 1.0.0
servers:
- url: https://bitculator.com
security:
- default: []
tags:
- name: Meta
description: 'API meta and introspection: an authenticated ping to verify a key and the
middleware stack, current-key usage/quota, and the machine-readable OpenAPI spec.'
paths:
/api/v1/openapi.json:
get:
summary: OpenAPI spec
operationId: openAPISpec
description: 'The machine-readable OpenAPI 3 document for this API, as JSON — point codegen
or API tooling at this URL. Public: no key required.'
parameters: []
responses: []
tags:
- Meta
/api/v1/ping:
get:
summary: Ping
operationId: ping
description: 'An authenticated no-op for verifying a Data API key end-to-end (auth.api →
per-plan burst throttle → monthly quota). It counts against the quota like any
other call.'
parameters: []
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
example:
data:
status: ok
plan: free
properties:
data:
type: object
properties:
status:
type: string
example: ok
plan:
type: string
example: free
tags:
- Meta
/api/v1/usage:
get:
summary: Key usage & quota
operationId: keyUsageQuota
description: 'Usage introspection for the calling key''s owner: the Data API plan, its monthly
limit, used and remaining (always matching the X-Quota-* headers), the current
period window, and per-endpoint / per-token breakdowns. Embed-widget usage has
its own plan and pool — it never appears here.'
parameters: []
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
example:
data:
plan: free
limit: 10000
used: 29
remaining: 9971
period_start: '2026-06-15'
period_end: '2026-07-15T00:00:00+00:00'
burst_per_minute: 60
endpoints:
- endpoint: GET api/v1/prices
requests: 18
- endpoint: GET api/v1/global
requests: 11
tokens:
- id: 12
name: production
kind: data-api
requests: 29
last_used_at: '2026-07-02T21:14:09+00:00'
revoked: false
meta:
note: Endpoint and token breakdowns are flushed from the buffer every minute and can trail `used` slightly.
properties:
data:
type: object
properties:
plan:
type: string
example: free
limit:
type: integer
example: 10000
used:
type: integer
example: 29
remaining:
type: integer
example: 9971
period_start:
type: string
example: '2026-06-15'
period_end:
type: string
example: '2026-07-15T00:00:00+00:00'
burst_per_minute:
type: integer
example: 60
endpoints:
type: array
example:
- endpoint: GET api/v1/prices
requests: 18
- endpoint: GET api/v1/global
requests: 11
items:
type: object
properties:
endpoint:
type: string
example: GET api/v1/prices
requests:
type: integer
example: 18
tokens:
type: array
example:
- id: 12
name: production
kind: data-api
requests: 29
last_used_at: '2026-07-02T21:14:09+00:00'
revoked: false
items:
type: object
properties:
id:
type: integer
example: 12
name:
type: string
example: production
kind:
type: string
example: data-api
requests:
type: integer
example: 29
last_used_at:
type: string
example: '2026-07-02T21:14:09+00:00'
revoked:
type: boolean
example: false
meta:
type: object
properties:
note:
type: string
example: Endpoint and token breakdowns are flushed from the buffer every minute and can trail `used` slightly.
tags:
- Meta
components:
securitySchemes:
default:
type: http
scheme: bearer
description: Create a Data API key in your developer console — keys are Bearer-only and carry the data-api ability. Keep them server-side; they are never meant for client-side embedding.