# Datovu API > Programmatic access to Datovu: collect data from the web, index it semantically, and deploy monetizable REST APIs. ## Overview Base URL: https://datovu.com/api Authentication: JWT (Bearer) or API Key (`X-API-Key` header, `dv_` prefix) Interactive Docs: https://datovu.com/api/docs OpenAPI Spec: https://datovu.com/api/openapi.json Agent Info: https://datovu.com/api/v1/agent-info ## Authentication - [Register](https://datovu.com/api/docs#auth): `POST /auth/register` — Create account - [Login](https://datovu.com/api/docs#auth): `POST /auth/login` — Get JWT token - [My Profile](https://datovu.com/api/docs#auth): `GET /auth/me` — Current user - [API Keys](https://datovu.com/api/docs#auth): `POST/GET/DELETE /auth/api-keys` — Manage keys ## Core Data Operations - [Search](https://datovu.com/api/docs#search): `POST /v1/search` — Web search via API - [Scrape](https://datovu.com/api/docs#scrape): `POST /v1/scrape` — Extract web page content - [Inject](https://datovu.com/api/docs#inject): `POST /v1/inject` — Index your own data (CSV, JSON, PDF, text, API feeds) - [Query](https://datovu.com/api/docs#query): `POST /v1/query` — Semantic search on indexed data - [Index](https://datovu.com/api/docs#index): `POST /v1/index` — Rebuild semantic index - [Agent](https://datovu.com/api/docs#agent): `POST /v1/agent` — AI research agent (plain language prompts) - [Combined](https://datovu.com/api/docs#combined): `POST /v1/combined` — Predefined multi-step pipeline ## Jobs - [List Jobs](https://datovu.com/api/docs#jobs): `GET /v1/jobs` - [Job Detail](https://datovu.com/api/docs#jobs): `GET /v1/jobs/:id` - [Cancel Job](https://datovu.com/api/docs#jobs): `POST /v1/jobs/:id/cancel` ## Datasets - [CRUD](https://datovu.com/api/docs#datasets): `POST/GET/PUT/DELETE /v1/datasets` - [Documents](https://datovu.com/api/docs#datasets): `POST/GET /v1/datasets/:id/documents` - [Infer Schema](https://datovu.com/api/docs#datasets): `POST /v1/datasets/:id/schema/infer` - [Consolidate](https://datovu.com/api/docs#datasets): `POST /v1/datasets/:id/consolidate` ## Published APIs (Platform Management) - [CRUD](https://datovu.com/api/docs#apis): `POST/GET/PUT/DELETE /v1/apis` - [Deploy](https://datovu.com/api/docs#apis): `POST /v1/apis/:slug/deploy` - [Pause](https://datovu.com/api/docs#apis): `POST /v1/apis/:slug/pause` - [Resume](https://datovu.com/api/docs#apis): `POST /v1/apis/:slug/resume` - [Customer Keys](https://datovu.com/api/docs#keys): `CRUD /v1/apis/:slug/keys` - [Stats](https://datovu.com/api/docs#keys): `GET /v1/apis/:slug/stats` ## Webhooks - [CRUD](https://datovu.com/api/docs#webhooks): `GET/POST/PUT/DELETE /v1/webhooks` - [Test](https://datovu.com/api/docs#webhooks): `POST /v1/webhooks/:id/test` - [Deliveries](https://datovu.com/api/docs#webhooks): `GET /v1/webhooks/:id/deliveries` ## Subscriptions & Billing - [Plans](https://datovu.com/api/docs#billing): `GET /v1/plans` - [Subscribe](https://datovu.com/api/docs#billing): `POST /v1/subscriptions` - [Billing Portal](https://datovu.com/api/docs#billing): `POST /v1/subscriptions/portal` - [Usage](https://datovu.com/api/docs#billing): `GET /v1/usage` - [Usage Remaining](https://datovu.com/api/docs#billing): `GET /v1/usage/remaining` ## Stripe Connect (Publishers) - [Onboarding](https://datovu.com/api/docs#connect): `POST /v1/connect/onboarding` - [Status](https://datovu.com/api/docs#connect): `GET /v1/connect/status` ## Agent Information - [Agent Info](https://datovu.com/api/v1/agent-info): `GET /v1/agent-info` — Machine-readable capabilities JSON ## Guidelines for AI Agents - **Auth**: Use `Authorization: Bearer ` for user-scoped endpoints or `X-API-Key: ` for API-scoped endpoints - **Rate Limits**: 100 requests per minute per key (Platform API) - **Operation Costs**: search=1, scrape=1/URL, query=1, inject=0, structure=0, transform=0 operations - **Async Jobs**: Long-running tasks return `202 + job_id`; poll `GET /v1/jobs/:id` for completion - **Pagination**: List endpoints accept `?page=&per_page=` (default 20, max 100) - **Error Format**: All errors return `{ "detail": "message", "code": "ERROR_CODE" }`