# ZeroID

Open Source ZeroID GitHub Repository: <a href="https://github.com/highflame-ai/zeroid" class="button secondary" data-icon="github">ZeroID</a>

### Current Language Coverage

<table><thead><tr><th width="116.4453125">Language</th><th width="117.16796875">Status</th><th>Notes</th></tr></thead><tbody><tr><td>Python</td><td>Available</td><td>Strong developer experience for admin APIs and token operations</td></tr><tr><td>TypeScript</td><td>Available</td><td>Good browser and Node ergonomics with built-in token exchange support</td></tr></tbody></table>

### Current Resource Shape

The SDK already exposes a meaningful ZeroID surface, but feature coverage is not identical across languages yet.

#### Python

Current client resources:

* `client.identities`
* `client.agents`
* `client.oauth_clients`
* `client.credential_policies`
* `client.api_keys`
* `client.tokens`
* `client.signals`

#### TypeScript

Current client resources:

* `client.identities`
* `client.agents`
* `client.oauthClients`
* `client.credentialPolicies`
* `client.apiKeys`
* `client.tokens`
* `client.signals`
* `client.credentials`

### Important Behavioral Notes

#### Tenant Context

Admin routes use tenant headers. The SDK handles this for you by carrying:

* `account_id` / `project_id` in Python
* `accountId` / `projectId` in TypeScript

For local development, SDK clients can auto-generate tenant IDs if you do not provide them. That is convenient for quickstarts, but production systems should use stable tenant values.

#### Public Token Endpoints

The token APIs do not send tenant headers as admin routes do. The server derives tenant context from credential material, such as:

* API key metadata
* client credentials
* WIMSE URI
* subject token

#### API Key Bootstrap

If you initialize the client with a ZeroID API key:

* The SDK can exchange it for a short-lived access token
* The token can be cached and refreshed automatically
* Higher-level flows, like token exchange, become easier to implement

### Recommended Docs Reading Order

* Read **Python** if you want the fastest first integration path.
* Read **TypeScript** if you are integrating from Node or a TypeScript service.

### SDK vs REST Guidance

Use the SDK when:

* You want a better developer experience
* You are integrating from the application code
* You want token caching, tenant header handling, and typed models

Use REST directly when:

* You need a language without an SDK yet
* You are working from infrastructure or platform tooling
* You need a feature that is server-supported but not yet surfaced in your preferred SDK

#### What's Next?

* Start with&#x20;
  * [**Python**](/api-reference/sdk/zeroid/python-sdk.md)&#x20;
  * [**TypeScript**](/api-reference/sdk/zeroid/typescript-sdk.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.highflame.ai/api-reference/sdk/zeroid.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
