---
title: Overview
description: SeeLLM's REST API gives you programmatic access to all your AI traffic analytics data.
audience: [human, agent]
type: reference
version: v1
stability: stable
lastVerified: "2026-08-01"
prerequisites: []
related: [/docs/api/authentication/, /docs/api/analytics-endpoints/, /docs/api/jobs/]
artifacts: [{ label: OpenAPI contract, url: /docs/api/openapi.json }]
---

## Base URL

```
https://api.seellm.link/api
```

The generated [OpenAPI contract](/docs/api/openapi.json) is the machine-readable reference for the documented analytics, Jobs, and Agent Hooks endpoints.

## Authentication

All API requests require authentication via one of:

- **Firebase Auth Token** — `Authorization: Bearer <firebase_jwt>`
- **API Key** — `Authorization: Bearer sk_live_...`

API keys can be generated in your [dashboard](https://app.seellm.com) under Settings > API Keys. These documented routes authenticate an active API key or a Firebase token; they do not currently enforce endpoint-specific API-key scopes. Firebase `viewer` users cannot call write endpoints; API keys authenticate as editors.

## Common Query Parameters

All analytics endpoints support these parameters:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `range` | `7d` \| `30d` \| `90d` | `30d` | Predefined date range |
| `start_date` | string | — | Custom start date; it takes effect only when `end_date` is also supplied |
| `end_date` | string | — | Custom end date; future values are capped at today |
| `domain` | string | — | Filter by domain |
| `short_code` | string | — | Filter most analytics endpoints by short code; ignored by `/analytics/domain-breakdown` |
| `target_url` | string | — | Resolve a tracked target URL to its short code; `/analytics/domain-breakdown` uses this filter and ignores `short_code` |
| `traffic_type` | string | — | Filter only `GET /analytics/bot-traffic` by traffic type |

The current analytics routes do not paginate. `GET /jobs` also returns all jobs for the organization, newest first, without pagination or filters.

## Response Format

All endpoints return JSON. Successful responses return the data directly. Errors return:

```json
{
  "error": "Missing or invalid authorization header"
}
```

Some errors add a `message`; rate-limit responses also add `retryAfter` (milliseconds), `limit`, and `remaining`.

## Rate Limits

- **60 requests/minute** globally per source IP. The limiter runs before route authentication, so authenticated API calls use the source-IP key as well.
- Headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, and `Retry-After`
- On HTTP `429`, wait for `Retry-After` before retrying. No public request-timeout or automatic-retry policy is currently advertised.

## Idempotency and Versioning

The current write endpoints do not accept idempotency keys, so do not automatically retry a timed-out `POST` unless your caller can safely reconcile the result. This is the current v1 documentation contract (`info.version` is `1.0.0`); the API URL does not include a version segment and does not publish a version header.

## Caching

All analytics queries are cached server-side with a 5-minute TTL. This reduces backend costs by ~95% while keeping data fresh enough for dashboards.

## Next Steps

- See [Authentication](/docs/api/authentication/) for detailed auth setup
- Download the [OpenAPI contract](/docs/api/openapi.json) for generated clients or validation
- Browse [Analytics Endpoints](/docs/api/analytics-endpoints/) for the full API reference
- Use [Jobs](/docs/api/jobs/) to approve work and attach patch or edge-page implementations
- Use [Agent Hooks](/docs/api/agent-hooks/) to send signed SeeLLM jobs to your automation stack
