---
title: "Retrieve database schema"
method: GET
path: "/projects/{project_id}/branches/{branch_id}/schema"
tags: ["Branch"]
---

# Retrieve database schema

`GET /projects/{project_id}/branches/{branch_id}/schema`

Retrieves the schema from the specified database. The `lsn` and `timestamp` values cannot be specified at the same time. If both are omitted, the database schema is retrieved from database's head.

## Path parameters

- `project_id` string, required
- `branch_id` string, required

## Query parameters

- `db_name` string, required
- `lsn` string
- `timestamp` string, date-time
- `format` string

## Response `200`

Schema definition

- BranchSchemaResponse
  - `sql` string
  - `json` BranchSchemaJSON
    - `tables` object[], required
      - `schema` string, required
      - `name` string, required
      - `columns` object[], required
        - `name` string, required
        - `type` string, required
        - `nullable` boolean — Whether the column allows NULL values
        - `generated` boolean — Whether the column is a generated (computed) column
      - `constraints` object[]
        - `type` string, required — Type of constraint. Possible values: `primary_key`, `unique`, `foreign_key`
        - `columns` string[], required — Column names participating in this constraint
        - `name` string — Optional name of the constraint
        - `referenced_table` object — For foreign keys - the referenced table information
          - `schema` string, required — Schema of the referenced table
          - `table` string, required — Name of the referenced table
          - `columns` string[], required — Names of the referenced columns

## Other responses

- `default` — General Error. The request may or may not be safe to retry, depending on the HTTP method, response status code, and whether a response was received. - If no response is returned from the API, a network error or timeout likely occurred. - In some cases, the request may have reached the server and been successfully processed, but the response failed to reach the client. As a result, retrying non-idempotent requests can lead to unintended results. The following HTTP methods are considered non-idempotent: `POST`, `PATCH`, `DELETE`, and `PUT`. Retrying these methods is generally **not safe**. The following methods are considered idempotent: `GET`, `HEAD`, and `OPTIONS`. Retrying these methods is **safe** in the event of a network error or timeout. Any request that returns a `503 Service Unavailable` response is always safe to retry. Any request that returns a `423 Locked` response is safe to retry. `423 Locked` indicates that the resource is temporarily locked, for example, due to another operation in progress.

---

[API](https://skmtc.net/neon/apis/neon-api.md) · [All operations](https://skmtc.net/neon/apis/neon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/neon/neon-api/revisions/cfde79a5c713/schema)
