import type { Metadata } from 'next'; import { TipBox } from '@/components/docs/shared/TipBox'; import { Table } from '@/components/docs/shared/Table'; import { CodeBlock } from '@/components/docs/shared/CodeBlock'; import { DocPage } from '@/components/docs/layout/DocPage'; import { JsonLd } from '@/components/seo/JsonLd'; import { createDocsMetadata, DOCS_PAGES } from '@/config/docs-seo'; import { createBreadcrumbSchema, createTechArticleSchema, API_REFERENCE_SCHEMA } from '@/config/docs-schema'; import { Hero, SectionHeader, InlineCode, LinkCard, LinkCardGrid, } from '@/components/docs/blocks'; const PAGE = DOCS_PAGES['api-overview']; export const metadata: Metadata = createDocsMetadata(PAGE); const breadcrumbSchema = createBreadcrumbSchema([ { name: 'Home', path: '/' }, { name: 'Documentation', path: '/docs/' }, { name: 'API Reference', path: '/docs/api/' }, ]); const articleSchema = createTechArticleSchema(PAGE); const tocItems = [ { id: 'base-url', text: 'Base URL', level: 2 }, { id: 'authentication', text: 'Authentication', level: 2 }, { id: 'response-format', text: 'Response Format', level: 2 }, { id: 'error-codes', text: 'Common Error Codes', level: 2 }, { id: 'rate-limits', text: 'Rate Limits', level: 2 }, { id: 'endpoints', text: 'Endpoints', level: 2 }, { id: 'next-steps', text: 'Next Steps', level: 2 }, ]; export default function APIOverviewPage() { return ( <>
Base URL
Authentication

All endpoints require the X-API-Key header:

See Authentication for details on obtaining and using API keys.

Response Format

All responses follow a consistent JSON structure:

Success Response:

Error Response:

Paginated Response:

Common Error Codes 400, 'VALIDATION_ERROR', 'Missing or invalid parameters', ], [ 401, 'UNAUTHORIZED', 'Missing or invalid API key', ], [ 404, '*_NOT_FOUND', 'Requested resource not found', ], [ 409, 'ALIAS_CONFLICT', 'Alias already exists', ], [ 429, 'RATE_LIMIT_EXCEEDED', 'Too many requests', ], [ 500, 'INTERNAL_ERROR', 'Server error', ], ]} />
Rate Limits

API requests are rate limited to 100 requests per hour per API key.

Rate limit headers are included in every response:

X-RateLimit-Limit, 'Maximum requests per hour'], [X-RateLimit-Remaining, 'Requests remaining in current window'], [X-RateLimit-Reset, 'Unix timestamp when limit resets'], ]} />
Endpoints
); }