---
title: Catalog API
description: List lake schemas and tables, then inspect ordered columns, types, nullability, and qualified names.
species: reference
---
# Catalog API

The catalog API exposes the tables this credential may query. It never reveals whether a hidden name exists in another organization.

## List schemas

```endpoint
GET /catalog
```

Returns visible schema resources. Names match the middle part of `titan.<schema>.<table>`.

## List tables

```endpoint
GET /catalog/{schema}
```

Returns tables and logical views in one schema. URL-encode the schema as one path segment.

## Describe a table

```endpoint
GET /catalog/{schema}/{table}
```

Returns the qualified name and ordered columns with data type and nullability. Use this response to build a query without scraping presentation labels.

```json
{
  "object": "table",
  "schema": "stripe",
  "name": "charges",
  "qualified_name": "titan.stripe.charges",
  "columns": [
    { "name": "id", "type": "string", "nullable": false },
    { "name": "amount", "type": "integer", "nullable": true }
  ]
}
```

Missing and unauthorized names both return `404 catalog_not_found`. Catalog reads require a data- or query-read scope accepted by the current API rollout.

The response reflects one catalog view at request time. If a source discovers a column after you fetch metadata, retrieve the table again before generating a strict projection.
