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

# OpenMetadata SDKs & APIs

> Programmatic access to your OpenMetadata data catalog through REST APIs and native SDKs

# OpenMetadata SDKs & APIs

The OpenMetadata API provides programmatic access to all metadata in your data catalog. Build integrations, automate workflows, and manage your data assets using our REST API or native SDKs.

## Base URL

All API requests should be made to your OpenMetadata instance.

<RequestExample>
  ```bash Cloud theme={null}
  https://{your-company}.open-metadata.org/api/v1
  ```
</RequestExample>

<ResponseExample>
  ```bash Self-Hosted theme={null}
  https://your-host.com/api/v1
  ```
</ResponseExample>

## Client Libraries

Install an official SDK to interact with the OpenMetadata API in your preferred language.

<Tabs>
  <Tab title="Python">
    ```bash theme={null}
    pip install "openmetadata-ingestion~=1.12.1"
    ```

    The Python SDK provides a high-level, type-safe API with built-in support for ingestion, lineage, and all entity operations.
  </Tab>

  <Tab title="Java">
    ```xml theme={null}
    <dependency>
      <groupId>org.open-metadata</groupId>
      <artifactId>openmetadata-java-client</artifactId>
      <version>1.12.1</version>
    </dependency>
    ```

    The Java SDK integrates OpenMetadata into your JVM environment to provision and manage resources.
  </Tab>

  <Tab title="Go">
    ```bash theme={null}
    go get github.com/open-metadata/openmetadata-sdk/openmetadata-go-client
    ```

    A robust, type-safe Go API that integrates with the OpenMetadata backend.
  </Tab>
</Tabs>

## Quick Start

Get started with a simple API call to list tables in your catalog:

<CodeGroup dropdown>
  ```python Python theme={null}
  from metadata.sdk import configure, Tables

  configure(host="https://your-company.open-metadata.org/api", jwt_token="your-jwt-token")

  # List tables
  for table in Tables.list().auto_paging_iterable():
      print(f"{table.fullyQualifiedName}: {table.description}")
  ```

  ```java Java theme={null}
  // Configure connection
  OpenMetadataConfig config = OpenMetadataConfig.builder()
      .serverUrl("https://your-company.open-metadata.org/api")
      .accessToken("your-jwt-token")
      .build();

  OpenMetadataClient client = new OpenMetadataClient(config);

  // List tables
  TablesApi tablesApi = client.buildClient(TablesApi.class);
  TableList tables = tablesApi.listTables(null, 10, null, null, null);
  for (Table table : tables.getData()) {
      System.out.println(table.getFullyQualifiedName());
  }
  ```

  ```bash cURL theme={null}
  curl -X GET "https://your-company.open-metadata.org/api/v1/tables?limit=10" \
    -H "Authorization: Bearer your-jwt-token" \
    -H "Content-Type: application/json"
  ```
</CodeGroup>

## Authentication

All API requests require authentication using a JWT Bearer token.

<CodeGroup>
  ```bash Authorization Header theme={null}
  Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
  ```
</CodeGroup>

You can obtain a token through **Bot Tokens** (for service accounts via **Settings > Bots**) or **Personal Access Tokens** (via your **Profile > Access Tokens**).

<Card title="Authentication Guide" icon="key" href="/v1.12.x/api-reference/authentication">
  Learn more about authentication methods, token management, and security configuration.
</Card>

## Error Handling

The API uses conventional HTTP response codes:

| Code  | Description                             |
| ----- | --------------------------------------- |
| `200` | Success                                 |
| `201` | Created                                 |
| `400` | Bad Request — Invalid parameters        |
| `401` | Unauthorized — Invalid or missing token |
| `403` | Forbidden — Insufficient permissions    |
| `404` | Not Found — Resource doesn't exist      |
| `409` | Conflict — Resource already exists      |
| `429` | Too Many Requests — Rate limit exceeded |
| `500` | Internal Server Error                   |

## Explore the API

<CardGroup cols={2}>
  <Card title="Data Assets" icon="database" href="/v1.12.x/api-reference/data-assets">
    Manage tables, dashboards, pipelines, topics, ML models, and more.
  </Card>

  <Card title="Discovery" icon="magnifying-glass" href="/v1.12.x/api-reference/discovery">
    Search and discover metadata across your catalog.
  </Card>

  <Card title="Data Contracts" icon="file-contract" href="/v1.12.x/api-reference/data-contracts">
    Define and validate data contracts for your assets.
  </Card>

  <Card title="Teams & Users" icon="users" href="/v1.12.x/api-reference/teams-and-users">
    Manage users, teams, and organizational structure.
  </Card>

  <Card title="Data Governance" icon="shield-check" href="/v1.12.x/api-reference/governance">
    Manage domains, glossaries, classifications, and tags.
  </Card>

  <Card title="Data Quality" icon="chart-line" href="/v1.12.x/api-reference/data-quality">
    Create and manage test suites, test cases, and quality metrics.
  </Card>
</CardGroup>

## Need Help?

<CardGroup cols={2}>
  <Card title="Support" icon="headset" href="mailto:support@getcollate.io">
    Contact our support team
  </Card>

  <Card title="Community" icon="slack" href="https://slack.open-metadata.org">
    Join the OpenMetadata Slack community
  </Card>
</CardGroup>
