> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terminus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Terminus Hub Public API v1: Overview

> Explore the Terminus Hub REST API: a versioned, JSON-based interface for managing Workspaces, Governance Models, Submissions, and Records.

The Terminus Hub Public API is a RESTful HTTP API that gives you programmatic access to your Terminus Hub data. All requests and responses use JSON, every endpoint is versioned under `/api/v1/`, and the API is designed to be predictable: consistent resource structures, a unified error envelope, and standard pagination across every list endpoint.

## Base URL

All API requests go to `https://hub.terminus.app`, and every endpoint is versioned under `/api/v1/`.

```
https://hub.terminus.app
```

<Note>
  If your team is on a dedicated Terminus Hub deployment, use its host in place of `hub.terminus.app`.
</Note>

## Authentication

Every request to the Public API must include a valid API key in the `Authorization` header using the **Bearer** scheme:

```
Authorization: Bearer thub_xxxxx
```

API keys are prefixed with `thub_` so they are easy to identify. See the [Authentication](/api-reference/authentication) page for full details on creating keys, using them in code, and handling auth errors.

<Warning>
  Never embed your API key in client-side code or commit it to a public repository. Treat it like a password.
</Warning>

## Request Format

All requests must include the `Content-Type: application/json` header when sending a request body (e.g., `POST` requests). Responses are always returned as JSON.

```http theme={null}
Content-Type: application/json
```

## Rate Limiting

Each API key may make up to **100 requests per minute**. When you exceed the limit, the API returns `429` with a `rate_limit_error` and a `Retry-After` header telling you how long to wait. Implement exponential back-off to handle these gracefully. See [Pagination & Errors](/api-reference/pagination-errors#rate-limiting) for the headers and full error schema.

## Example Request

The following example fetches the list of Workspaces your API key has access to. It is a good first request to verify that your key is working correctly.

```bash theme={null}
curl https://hub.terminus.app/api/v1/workspaces \
  -H "Authorization: Bearer thub_xxxxx" \
  -H "Content-Type: application/json"
```

A successful response returns a paginated envelope with a list of workspace objects:

```json theme={null}
{
  "items": [
    {
      "id": "3f9a7c21-5b8e-4d6a-9c2f-1e7b4a8d6c30",
      "name": "My Workspace",
      "description": "Primary workspace for the data team."
    }
  ],
  "has_more": false,
  "total_count": 1
}
```

## Available Resources

The Public API exposes four resource groups. Use the cards below to navigate to each section.

<CardGroup cols={2}>
  <Card title="Workspaces" icon="building" href="/api-reference/endpoints/workspaces/list-all-workspaces">
    List and retrieve Workspaces, the top-level containers that group your submissions and records.
  </Card>

  <Card title="Governance Models" icon="scale-balanced" href="/api-reference/endpoints/governance-models/list-governance-models">
    Browse the Governance Models available in your hub, including their names and descriptions.
  </Card>

  <Card title="Submissions" icon="file-arrow-up" href="/api-reference/endpoints/submissions/list-submissions">
    Create new Submissions and list existing ones filtered by Workspace and Taxonomy.
  </Card>

  <Card title="Records" icon="table-list" href="/api-reference/endpoints/records/list-all-records">
    Query individual Records within a Workspace, including their status and attached data payload.
  </Card>
</CardGroup>
