Database

Databases

Requests, objects and response examples.

Guide →

Base URL and authentication

Create database

POST /database/v1/databases

Request body

FieldTypeRequiredDescription
namestringyesDisplay name for the database: 1–64 visible characters after trimming; control characters are rejected. It is not an identifier, so later calls still use the returned id.
labelsobjectnoOptional string tags to attach, at most 64. Each key starts with a lowercase letter and may use up to 63 characters of a-z 0-9 _ -; each value is up to 63 characters of a-z 0-9 _ -. List calls filter on exact key and value pairs.

Returns: Database.

Response

HTTP 201

Success

application/json

NameTypeDescription
idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
namestringDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
curl -X POST "https://api.deepraxis.ai/database/v1/databases" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"walk-lib-r1-DOC-5320-tasks","labels":{"purpose":"docs","sample":"walk-lib-r1-doc-5320-"}}'

Response example — HTTP 201

{
  "id": "db_d6f0d743d5a645e8",
  "name": "walk-lib-r1-DOC-5320-tasks",
  "labels": {
    "purpose": "docs",
    "sample": "walk-lib-r1-doc-5320-"
  },
  "status": "active",
  "table_count": 0,
  "size_bytes": 53248,
  "created_at": "2026-10-11T17:41:40.620Z",
  "updated_at": "2026-10-11T17:41:41.488Z",
  "deleted_at": null,
  "purge_at": null
}

List databases

GET /database/v1/databases

ParameterLocationDescription
cursorqueryOpaque next_cursor from the previous page.
limitqueryPage size. (default: 20) (1–100)
labelsqueryExact label match, encoded as labels[purpose]=docs.
statusqueryFilter by lifecycle state. active (the default when omitted) lists usable databases; deleting lists databases that were deleted and are still inside the seven-day restore window. Any other value returns 400 INVALID_PARAMS.

Returns: Page + object.

Response

HTTP 200

Success

application/json

NameTypeDescription
dataarray<object>Databases on this page, newest first (created_at descending, ties by id). Deleting databases are excluded unless status=deleting.
data[].idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
data[].namestringDisplay name given at creation or by the last update; it is not an identifier.
data[].labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
data[].statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
data[].table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
data[].size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
data[].created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
data[].updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
data[].deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
data[].purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
next_cursorstring | nullOpaque cursor for the next page, or null when there are no more items. Databases list: pass it as cursor. Events list: pass it as after_seq (order asc) or before_seq (order desc).
curl -g -X GET "https://api.deepraxis.ai/database/v1/databases?limit=10&labels[purpose]=docs&labels[sample]=walk-lib-r1-doc-5320-" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Response example — HTTP 200

{
  "data": [
    {
      "id": "db_d6f0d743d5a645e8",
      "name": "walk-lib-r1-DOC-5320-tasks",
      "labels": {
        "purpose": "docs",
        "sample": "walk-lib-r1-doc-5320-"
      },
      "status": "active",
      "table_count": 0,
      "size_bytes": 53248,
      "created_at": "2026-10-11T17:41:40.620Z",
      "updated_at": "2026-10-11T17:41:41.488Z",
      "deleted_at": null,
      "purge_at": null
    }
  ],
  "next_cursor": null
}

Get database

GET /database/v1/databases/{database_id}

ParameterLocationDescription
database_idpathIdentifier of the database to act on: the id (db_…) returned by databaseCreateDatabase or databaseListDatabases. A display name is not accepted.

Returns: Database.

Response

HTTP 200

Success

application/json

NameTypeDescription
idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
namestringDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
curl -X GET "https://api.deepraxis.ai/database/v1/databases/${DATABASE_ID}" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Response example — HTTP 200

{
  "id": "db_d6f0d743d5a645e8",
  "name": "walk-lib-r1-DOC-5320-tasks",
  "labels": {
    "purpose": "docs",
    "sample": "walk-lib-r1-doc-5320-"
  },
  "status": "active",
  "table_count": 0,
  "size_bytes": 53248,
  "created_at": "2026-10-11T17:41:40.620Z",
  "updated_at": "2026-10-11T17:41:41.488Z",
  "deleted_at": null,
  "purge_at": null
}

Update database

PATCH /database/v1/databases/{database_id}

ParameterLocationDescription
database_idpathIdentifier of the database to act on: the id (db_…) returned by databaseCreateDatabase or databaseListDatabases. A display name is not accepted.

Request body

FieldTypeRequiredDescription
namestringnoNew display name, 1–64 visible characters after trimming. Omit it to keep the current name.
labelsobjectnoComplete replacement label set, not a merge: labels not listed here are removed. Same limits as at creation (at most 64; keys a-z 0-9 _ - starting with a letter; values up to 63 characters of a-z 0-9 _ -). Omit it to keep the current labels.

Returns: Database.

Response

HTTP 200

Success

application/json

NameTypeDescription
idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
namestringDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
curl -X PATCH "https://api.deepraxis.ai/database/v1/databases/${DATABASE_ID}" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"walk-lib-r1-DOC-5320-notes"}'

Response example — HTTP 200

{
  "id": "db_d6f0d743d5a645e8",
  "name": "walk-lib-r1-DOC-5320-notes",
  "labels": {
    "purpose": "docs",
    "sample": "walk-lib-r1-doc-5320-"
  },
  "status": "active",
  "table_count": 0,
  "size_bytes": 53248,
  "created_at": "2026-10-11T17:41:40.620Z",
  "updated_at": "2026-10-11T17:41:43.514Z",
  "deleted_at": null,
  "purge_at": null
}

Delete database

DELETE /database/v1/databases/{database_id}

ParameterLocationDescription
database_idpathIdentifier of the database to act on: the id (db_…) returned by databaseCreateDatabase or databaseListDatabases. A display name is not accepted.

Returns: Database.

Response

HTTP 200

Success

application/json

NameTypeDescription
idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
namestringDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
curl -X DELETE "https://api.deepraxis.ai/database/v1/databases/${DATABASE_ID}" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Response example — HTTP 200

{
  "id": "db_d6f0d743d5a645e8",
  "name": "walk-lib-r1-DOC-5320-notes",
  "labels": {
    "purpose": "docs",
    "sample": "walk-lib-r1-doc-5320-"
  },
  "status": "deleting",
  "table_count": 0,
  "size_bytes": 53248,
  "created_at": "2026-10-11T17:41:40.620Z",
  "updated_at": "2026-10-11T17:41:51.868Z",
  "deleted_at": "2026-10-11T17:41:51.868Z",
  "purge_at": "2026-10-18T17:41:51.868Z"
}

Restore database

POST /database/v1/databases/{database_id}/restore

ParameterLocationDescription
database_idpathIdentifier of the database to act on: the id (db_…) returned by databaseCreateDatabase or databaseListDatabases. A display name is not accepted.

Returns: Database.

Response

HTTP 200

Success

application/json

NameTypeDescription
idstringDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.
namestringDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectString tags attached to the database, as key and value pairs; empty object when none.
statusstringLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegerNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegerStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atstringTime the database was created, as an RFC 3339 UTC timestamp.
updated_atstringTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atstring | nullTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atstring | nullPermanent deletion deadline for deleting databases; null otherwise.
curl -X POST "https://api.deepraxis.ai/database/v1/databases/${DATABASE_ID}/restore" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Response example — HTTP 200

{
  "id": "db_d6f0d743d5a645e8",
  "name": "walk-lib-r1-DOC-5320-notes",
  "labels": {
    "purpose": "docs",
    "sample": "walk-lib-r1-doc-5320-"
  },
  "status": "active",
  "table_count": 0,
  "size_bytes": 53248,
  "created_at": "2026-10-11T17:41:40.620Z",
  "updated_at": "2026-10-11T17:41:51.528Z",
  "deleted_at": null,
  "purge_at": null
}

Purge database

POST /database/v1/databases/{database_id}/purge

ParameterLocationDescription
database_idpathIdentifier of the database to act on: the id (db_…) returned by databaseCreateDatabase or databaseListDatabases. A display name is not accepted.

Returns: object.

Response

HTTP 200

Permanently purged

application/json

NameTypeDescription
idstringId (db_…) of the database that was permanently purged; it no longer resolves.
objectstringResource type of the purged object; always database.
purgedbooleanAlways true: the database and all of its data were permanently removed and cannot be recovered.
curl -X POST "https://api.deepraxis.ai/database/v1/databases/${DATABASE_ID}/purge" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Response example — HTTP 200

{
  "id": "db_d6f0d743d5a645e8",
  "object": "database",
  "purged": true
}

Database

FieldTypeRequiredDescription
idstringyesDatabase identifier, prefixed db_. Pass it as database_id in every database, table, field, rows and events path.; ^db_
namestringyesDisplay name given at creation or by the last update; it is not an identifier.
labelsobjectyesString tags attached to the database, as key and value pairs; empty object when none.
status"provisioning" / "active" / "deleting" / "deleted" / "failed"yesLifecycle state of the database. Table, field and row calls work only while it is active.
table_countintegeryesNumber of tables currently in the database, at most 50; refreshed when the schema changes.
size_bytesintegeryesStorage size; row writes and GET refresh usage at most once per five seconds, schema changes refresh immediately.
created_atdate-timeyesTime the database was created, as an RFC 3339 UTC timestamp.
updated_atdate-timeyesTime of the last change to the name, labels, status or usage snapshot, as an RFC 3339 UTC timestamp.
deleted_atdate-time / nullyesTime the database entered the deleting state, as an RFC 3339 UTC timestamp; null while it is active and again after a restore.
purge_atdate-time / nullyesPermanent deletion deadline for deleting databases; null otherwise.

Page

FieldTypeRequiredDescription
dataJSON[]yesItems of this page; the item type depends on the operation.
next_cursorstring / nullyesOpaque cursor for the next page, or null when there are no more items. Databases list: pass it as cursor. Events list: pass it as after_seq (order asc) or before_seq (order desc).
Export

On this page