Context.dev Usage API
Read your organization's credit balance and usage history.
Read your organization's credit balance and usage history.
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/contextdev:contextdev-usage-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Context.dev Usage API
description: Scrape, crawl, search, and monitor websites, and retrieve brand, people, and news data.
version: 1.0.0
servers:
- url: https://api.context.dev/v1
tags:
- name: Usage
description: Read your organization's credit balance and usage history.
paths:
/org/usage:
get:
operationId: getUsage
summary: Retrieve credit usage
tags:
- Usage
description: Retrieve your organization’s credit balance, current-period usage, and next refill.
security:
- bearerAuth: []
x-mint:
content: <Badge color="blue">0 credits</Badge>
responses:
'200':
description: Current credit usage
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/OrgUsageResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
description: Rate limit exceeded (60 requests per minute per organization).
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Usage data is temporarily unavailable.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/org/usage/history:
get:
operationId: getUsageHistory
summary: Retrieve usage history
tags:
- Usage
description: Retrieve credits and requests over time, bucketed by hour, day, or month. History is kept for one year.
security:
- bearerAuth: []
x-mint:
content: <Badge color="blue">0 credits</Badge>
parameters:
- schema:
type: string
format: date-time
description: Start of the range, as an ISO 8601 timestamp. Defaults to 24 hours before `to` for `hour`, 30 days for `day`, and 366 days for `month`.
example: '2026-09-01T00:00:00Z'
required: false
description: Start of the range, as an ISO 8601 timestamp. Defaults to 24 hours before `to` for `hour`, 30 days for `day`, and 366 days for `month`.
name: from
in: query
- schema:
type: string
format: date-time
description: End of the range, as an ISO 8601 timestamp. Defaults to now.
example: '2026-10-01T00:00:00Z'
required: false
description: End of the range, as an ISO 8601 timestamp. Defaults to now.
name: to
in: query
- schema:
type: string
enum:
- hour
- day
- month
default: day
description: Bucket size. `hour` covers up to 7 days; `day` and `month` cover up to 366 days. Buckets start on UTC boundaries.
required: false
description: Bucket size. `hour` covers up to 7 days; `day` and `month` cover up to 366 days. Buckets start on UTC boundaries.
name: interval
in: query
- schema:
type: string
enum:
- path
- key_id
- status_code
description: Split each bucket by endpoint path, API key, or HTTP status code.
required: false
description: Split each bucket by endpoint path, API key, or HTTP status code.
name: group_by
in: query
responses:
'200':
description: Usage over time
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/UsageHistoryResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
description: Rate limit exceeded (60 requests per minute per organization).
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Usage data is temporarily unavailable.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ConcurrencyErrorData:
type: object
properties:
is_authenticated:
type: boolean
enum:
- true
limit_type:
type: string
enum:
- concurrency
limit:
type: number
minimum: 0
remaining:
type: number
minimum: 0
retry_after_seconds:
type: number
minimum: 0
credits_remaining:
type: number
minimum: 0
credits_charged:
type: number
enum:
- 0
should_retry:
type: boolean
enum:
- false
retry_condition:
type: string
enum:
- available_concurrency
recovery_options:
type: array
items:
type: string
enum:
- wait_for_in_flight_requests
- increase_concurrency_limit
info_url:
type: string
enum:
- https://context.dev/dashboard/subscription
required:
- is_authenticated
- limit_type
- limit
- remaining
- retry_after_seconds
- credits_charged
- should_retry
- retry_condition
- recovery_options
- info_url
description: Organization concurrency rejection details. Authentication is valid and no credits were charged. should_retry is false immediately; respect retry_after_seconds and wait for an in-flight request to finish or for the effective concurrency limit to increase. info_url opens subscription settings; no higher allowance is guaranteed for a particular account.
KeyMetadata:
type: object
properties:
credits_consumed:
type: integer
description: Credits charged for this request.
credits_remaining:
type: integer
description: Credits remaining for your organization.
required:
- credits_consumed
- credits_remaining
description: Credits this request used and your remaining balance.
BillingErrorData:
type: object
properties:
is_authenticated:
type: boolean
enum:
- true
credits_remaining:
type: number
minimum: 0
credits_required:
type: number
minimum: 0
is_credits_required_estimated:
type: boolean
credits_charged:
type: number
minimum: 0
should_retry:
type: boolean
enum:
- false
retry_condition:
type: string
enum:
- sufficient_credits
next_refill_at:
type: string
format: date-time
next_refill_credits:
type: number
exclusiveMinimum: 0
info_url:
type: string
enum:
- https://context.dev/dashboard/subscription
required:
- is_authenticated
- should_retry
- retry_condition
- info_url
description: Credit admission or reservation failure details. credits_required is an admission estimate, not a final charge. should_retry is false for an unchanged request immediately; retry_condition requires sufficient account credits. Unknown balances, costs, and refill details are omitted. next_refill_at is an ISO 8601 UTC timestamp. Existing request_id and key_metadata remain on the error envelope.
UsageHistoryResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UsageHistoryBucket'
description: One bucket per interval, oldest first. Intervals without usage are included with zero totals.
total_credits_used:
type: integer
description: Credits charged across the range.
total_request_count:
type: integer
description: Requests made across the range.
interval:
type: string
enum:
- hour
- day
- month
description: Bucket size used.
from:
type: string
format: date-time
description: Start of the range.
to:
type: string
format: date-time
description: End of the range.
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
request_id:
$ref: '#/components/schemas/RequestId'
required:
- data
- total_credits_used
- total_request_count
- interval
- from
- to
- request_id
example:
data:
- start: '2026-09-29T00:00:00.000Z'
credits_used: 1250
request_count: 830
groups:
- value: /v1/web/scrape
credits_used: 1000
request_count: 500
- value: /v1/brand/retrieve
credits_used: 250
request_count: 330
- start: '2026-09-30T00:00:00.000Z'
credits_used: 0
request_count: 0
groups: []
total_credits_used: 1250
total_request_count: 830
interval: day
from: '2026-09-29T00:00:00.000Z'
to: '2026-09-30T23:59:59.999Z'
key_metadata:
credits_consumed: 0
credits_remaining: 41250
request_id: 3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91
UsageHistoryBucket:
type: object
properties:
start:
type: string
format: date-time
description: Start of the bucket, in UTC.
example: '2026-09-30T00:00:00.000Z'
credits_used:
type: integer
description: Credits charged.
request_count:
type: integer
description: Requests made.
groups:
type: array
items:
type: object
properties:
value:
type: string
description: The endpoint path, API key ID, or status code this group covers.
example: /v1/web/scrape
credits_used:
type: integer
description: Credits charged.
request_count:
type: integer
description: Requests made.
required:
- value
- credits_used
- request_count
description: Per-group totals, highest credits first. Present only when `group_by` is set.
required:
- start
- credits_used
- request_count
OrgUsageResponse:
type: object
properties:
credits_remaining:
type: integer
description: Credits available to your organization right now.
example: 41250
period:
type:
- object
- 'null'
properties:
start:
type: string
format: date-time
description: When the current credit period started.
example: '2026-09-14T07:01:00.000Z'
credits_used:
type: integer
description: Credits charged since `start`.
example: 8750
required:
- start
- credits_used
description: The current monthly credit period, or null when your organization has no monthly credits or billing is paused.
next_refill:
type:
- object
- 'null'
properties:
at:
type: string
format: date-time
description: When your credits next refill.
example: '2026-10-14T07:01:00.000Z'
credits:
type: integer
description: Your balance is reset to this amount at the refill. Unused credits do not carry over.
example: 50000
required:
- at
- credits
description: The next monthly refill, or null when no refill is scheduled. While billing is paused, this is when billing resumes.
auto_topup:
type: object
properties:
enabled:
type: boolean
description: Whether credits are added automatically when your balance runs out.
credits_used_this_period:
type: integer
description: Credits added by Auto-Topup in the current period.
example: 0
monthly_budget_credits:
type:
- integer
- 'null'
description: Monthly Auto-Topup budget you are alerted against, or null when none is set.
example: 100000
required:
- enabled
- credits_used_this_period
- monthly_budget_credits
description: Auto-Topup settings and spend.
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
request_id:
$ref: '#/components/schemas/RequestId'
required:
- credits_remaining
- period
- next_refill
- auto_topup
- request_id
example:
credits_remaining: 41250
period:
start: '2026-09-14T07:01:00.000Z'
credits_used: 8750
next_refill:
at: '2026-10-14T07:01:00.000Z'
credits: 50000
auto_topup:
enabled: true
credits_used_this_period: 0
monthly_budget_credits: 100000
key_metadata:
credits_consumed: 0
credits_remaining: 41250
request_id: 3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91
ErrorResponse:
type: object
properties:
message:
type: string
description: Human-readable error message.
error_code:
type: string
enum:
- PROFILE_NOT_FOUND
- PROFILE_BUSY
- PROFILE_SESSION_EXPIRED
- PROFILE_REAUTHENTICATION_REQUIRED
- PROFILE_INVALID_CREDENTIALS
- PROFILE_MISSING_CREDENTIALS
- PROFILE_INTERACTION_REQUIRED
- PROFILE_AUTHENTICATION_UNKNOWN
- PROFILE_ORIGIN_BLOCKED
- PROFILE_INVALID_SESSION
- PROFILE_SESSION_TOO_LARGE
- INTERNAL_ERROR
- VALID
- NOT_FOUND
- FORBIDDEN
- USAGE_EXCEEDED
- RATE_LIMITED
- UNAUTHORIZED
- DISABLED
- PAID_PLAN_REQUIRED
- INSUFFICIENT_PERMISSIONS
- TIMEOUT_EXCEEDS_MAXIMUM
- TIMEOUT_TOO_SHORT_FOR_WAIT
- WEBSITE_ACCESS_ERROR
- WEBSITE_BLOCKED
- WEBSITE_NOT_FOUND
- PDF_SKIPPED
- PDF_IMAGES_ONLY
- INPUT_VALIDATION_ERROR
- ZDR_NOT_SUPPORTED
- ZDR_NOT_ENABLED
- FREE_EMAIL_DETECTED
- DISPOSABLE_EMAIL_DETECTED
- REQUEST_TIMEOUT
- COLD_DOMAIN_TIMEOUT_TOO_LOW
- UNSUPPORTED_CONTENT
- CONTENT_TOO_LARGE
- MONITOR_PAUSED
- MONITOR_NO_WEBHOOK
- COLLECTION_PAUSED
- MONITOR_LIMIT_EXCEEDED
- SEARCH_UNAVAILABLE
- BATCH_LIMIT_EXCEEDED
- BATCH_NOT_CANCELLABLE
- BATCH_NOT_COMPLETED
- IDEMPOTENCY_KEY_CONFLICT
- DELIVERY_IN_PROGRESS
- DELIVERY_ALREADY_DELIVERED
- DELIVERY_EXPIRED
- DELIVERY_CANCELLED
description: Machine-readable error code.
error_data:
anyOf:
- $ref: '#/components/schemas/BillingErrorData'
- $ref: '#/components/schemas/ConcurrencyErrorData'
required_permission:
type: string
enum:
- logs:read
- data:execute
- monitors:read
- monitors:write
- batches:read
- batches:write
description: Permission required for this request when error_code is INSUFFICIENT_PERMISSIONS. Manage (write) also grants read access to the same resource group.
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
request_id:
$ref: '#/components/schemas/RequestId'
required:
- request_id
RequestId:
type: string
format: uuid
description: Unique ID of this request, also in `X-Request-Id`. Include it when contacting support.
example: 3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91
headers:
RateLimitLimit:
description: Maximum request units per minute, or maximum concurrent requests when X-RateLimit-Mode is concurrency.
schema:
type: integer
minimum: 1
RateLimitReset:
description: Unix timestamp in seconds when the per-minute rate limit resets. Omitted for concurrency limits.
schema:
type: integer
RateLimitMode:
description: Set to concurrency when these headers report concurrent requests. When a per-minute limit also applies, its rejections report per-minute headers without this header. New Free accounts have 2 concurrent requests and 10 requests per minute; paid plans have no per-minute limit by default. Existing and custom allowances can differ.
schema:
type: string
enum:
- concurrency
RateLimitRemaining:
description: Request units remaining in the current minute, or concurrent requests still available when X-RateLimit-Mode is concurrency.
schema:
type: integer
minimum: 0
RequestId:
description: Unique ID of this request; also `request_id` in JSON bodies.
schema:
type: string
format: uuid
responses:
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
X-RateLimit-Mode:
$ref: '#/components/headers/RateLimitMode'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Send `Authorization: Bearer <API_KEY>`. Keys have full access unless restricted to scopes.'
x-provenance:
method: harvested
publisher: Context.dev
source: https://docs.context.dev/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)