# Database API (/en/docs/api/native/database)



Database is a headless content store: structured tables and rows that people, agents and scripts read and write directly through the API, the way a headless CMS works. Concepts and behavior follow Supabase (PostgREST filters, projections, ordering and row writes via supabase-js), so Supabase experience applies. Differences: storage uses SQLite, not PostgreSQL, and schema changes use table/field APIs rather than SQL migrations or raw SQL; access uses a Praxis credential scoped to its tenant, with no Supabase Auth or row-level security policies; realtime row subscriptions are unavailable; casts, aggregates, spread and join modifiers are unsupported, and filtered planned/estimated counts may be unknown; upsert targets id or one unique field rather than composite keys. For an application's own runtime data, use the application's own d1, kv or r2 components instead. Start with `praxis.database.databases.create` to create a database, then use its returned id for tables and rows.

Use your API Key as a Bearer credential to manage databases and table structure.

`https://api.deepraxis.ai/database/v1`

[Guide →](/en/docs/developers/services/database/quickstart)

| Resource | Path |
| --- | --- |
| [Databases](/en/docs/api/native/database/databases) | /database/v1/databases |
| [Tables](/en/docs/api/native/database/tables) | /database/v1/databases/&#123;database_id&#125;/tables |
| [Fields](/en/docs/api/native/database/fields) | /database/v1/databases/&#123;database_id&#125;/tables/&#123;table&#125;/fields |
| [Events](/en/docs/api/native/database/events) | /database/v1/databases/&#123;database_id&#125;/events |
| [REST](/en/docs/api/native/database/rest) | /database/v1/databases/&#123;database_id&#125;/rest/&#123;table&#125; |

[Error codes](/en/docs/api/native/database/errors)
