AIXBT Docs

REST API

API key authentication and setup

Access the AIXBT API using API key authentication. For purchasing API key passes without an account, see x402.

Base URL

https://api.aixbt.tech

All endpoints are prefixed with /v2.

Authentication

API requests require an API key. Include the key in the x-api-key header:

curl "https://api.aixbt.tech/v2/projects" \
  -H "x-api-key: YOUR_API_KEY"

Access Levels

LevelAuthenticationDataRate LimitsHow to Get
x402 Keyx-api-key headerReal-time30/min, 10k/dayPurchase via x402 - from $10/day
Full Keyx-api-key headerReal-time100/min, 100k/dayData, Pro, or Holder plan

Requests to data endpoints without an API key receive a 403 response with an API_KEY_REQUIRED error code and upgrade information (see Error Responses). x402 keys are convenient for short-term use; for ongoing access, a subscription plan offers the same or better value with higher rate limits.

Indigo Agent Access

The Indigo agent endpoint (POST /v2/agents/indigo) is gated separately from data endpoints:

  • Subscription keys: Pro or Holder plans only. Data-tier subscription keys can call all data endpoints but cannot call Indigo.
  • x402-purchased API keys (short-term passes purchased via x402): valid for data endpoints, but cannot call Indigo.

Requests that lack access return 403 with code: "AGENT_API_NOT_AVAILABLE".

Quick Start

Grounding

The grounding endpoint provides real-time market context:

curl "https://api.aixbt.tech/v2/grounding" \
  -H "x-api-key: YOUR_API_KEY"

Projects (Key Required)

Data endpoints require an API key in the x-api-key header:

curl "https://api.aixbt.tech/v2/projects?limit=5" \
  -H "x-api-key: YOUR_API_KEY"

A successful response returns:

{
  "status": 200,
  "data": [...],
  "pagination": { "page": 1, "limit": 5, "totalCount": 1000, "hasMore": true }
}

Requests without an API key to data endpoints return 403 with upgrade information. See Getting Started for access options.

API Key Info

GET /v2/api-keys/info

Returns metadata about the API key used to authenticate the request.

{
  "status": 200,
  "data": {
    "id": "665f1a2b3c4d5e6f7a8b9c0d",
    "type": "x402",
    "scopes": ["mcp", "projects"],
    "expiresAt": "2026-03-27T08:00:00.000Z"
  }
}

The expiresAt field returns "never" if the key has no expiration set.

Rate Limits

x402 (personal)Full (subscription)
Per minute30100
Per day10,000100,000

Rate Limit Headers

Every response includes headers showing your current usage:

X-RateLimit-Limit-Minute: 100
X-RateLimit-Remaining-Minute: 99
X-RateLimit-Reset-Minute: 2025-01-15T12:01:00.000Z
X-RateLimit-Limit-Day: 100000
X-RateLimit-Remaining-Day: 99999
X-RateLimit-Reset-Day: 2025-01-16T00:00:00.000Z

Rate Limit Exceeded

When you exceed a limit, you'll receive a 429 response:

{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded (minute). Try again after 2025-01-15T12:01:00.000Z",
  "code": "RATE_LIMIT_EXCEEDED",
  "limitType": "minute"
}

The response includes a Retry-After header with the number of seconds to wait.

Response Format

All endpoints return a consistent JSON structure:

Success Response

{
  "status": 200,
  "data": { ... },
  "pagination": {
    "page": 1,
    "limit": 50,
    "totalCount": 1000,
    "hasMore": true
  }
}

The pagination object is included for list endpoints.

Unauthenticated Error Response

Data endpoints called without an API key return a 403 response with upgrade information:

{
  "error": "Forbidden",
  "message": "An API key is required to access this endpoint. Visit docs.aixbt.tech for access options.",
  "code": "API_KEY_REQUIRED",
  "meta": {
    "upgrade": {
      "description": "Purchase an API key for real-time access - no account needed.",
      "protocol": "x402",
      "payment": "USDC on Base",
      "options": [
        { "period": "1 day", "price": "$10", "method": "POST", "url": "https://api.aixbt.tech/x402/v2/api-keys/1d" },
        { "period": "1 week", "price": "$50", "method": "POST", "url": "https://api.aixbt.tech/x402/v2/api-keys/1w" },
        { "period": "4 weeks", "price": "$100", "method": "POST", "url": "https://api.aixbt.tech/x402/v2/api-keys/4w" }
      ]
    }
  }
}

This applies to all data endpoints (/v2/projects, /v2/intel, /v2/projects/{id}, etc.).

Reference endpoints (/v2/clusters, /v2/projects/chains) and grounding remain accessible without a key. Grounding responses include a meta.upgrade block when unauthenticated.

Error Response

{
  "status": 400,
  "error": "Invalid request parameters",
  "data": []
}

HTTP Status Codes

StatusCodeMeaning
200-Success
400-Bad request, check your parameters
401INVALID_API_KEYAPI key is invalid, expired, or inactive
403API_KEY_REQUIREDNo API key provided (includes upgrade info)
403INVALID_API_KEY_SCOPEAPI key lacks required permissions
404-Resource not found
429RATE_LIMIT_EXCEEDEDRate limit exceeded
500-Server error

Pagination

List endpoints support pagination with these query parameters:

ParameterDefaultMaxDescription
page1-Page number (1-indexed)
limit5050Results per page

Example:

curl "https://api.aixbt.tech/v2/projects?page=2&limit=25" \
  -H "x-api-key: YOUR_API_KEY"

Filtering

Most list endpoints support filtering. Filters use AND logic between different parameters, and OR logic for multiple values within a parameter.

# Projects matching (name=eth OR name=btc) AND chain=base
curl "https://api.aixbt.tech/v2/projects?names=eth,btc&chain=base" \
  -H "x-api-key: YOUR_API_KEY"

See the API Reference for available filters on each endpoint.

Next Steps

On this page