Skip to main content
SDK 0.4.0 The atlanai SDK management client covers the gateway’s whole published surface. Use this page to learn the client patterns once, then look up each operation in the per-resource reference. For HTTP access without the SDK, use the HTTP API. The per-resource pages are generated from the operation manifest that ships in the SDK packages.

Client structure

One namespace per resource — not per generated service — with the verb as the method name: client.agents.create(...), not client.agents.agent_create_agent(...). A resource can nest: client.agents has a sessions and a traces sub-resource, reached as client.agents.sessions.list(agent_id).
Path parameters come first, positionally; the request body is last, as a plain object. Method and resource names are snake_case in Python, camelCase in TypeScript. The per-resource reference marks the exceptions: skills.create and skills.bulk_create upload as multipart forms, the API proxy methods take no body, and users.traces.delete_content takes its workspace ID from the client’s workspace, so set one. Operations that upload an image or file take raw bytes (Blob in TypeScript) as the body. with_workspace() rebinds the whole client to another workspace over the same generated clients, so a multi-tenant process does not need a second client:

Resources you reach most

Content operations (file bytes, skill bundles) return the stored media type, not JSON — check the content type before parsing or you will write a corrupt file. Prefer the tracing SDK over building session records by hand. Use sessions/agents.sessions directly only when the runtime cannot be instrumented.

Errors

Every error the gateway returns is normalised to a single AtlanAPIError carrying its problem document, in place of the generated per-status exception classes, so you handle a status and a stable code rather than parsing bodies:
The fields are status, code, title, detail, and the request’s trace_id / traceId — quote that trace ID when reporting a gateway problem. detail is deliberately kept out of the exception message so an error that reaches a log or a user-facing surface cannot carry a server-supplied string. Catch AtlanAPIError and branch on status or code. You never need to catch a per-status exception class. Arguments the generated client rejects before sending, such as a missing required parameter, raise its own validation error instead: pydantic.ValidationError in Python and RequiredError in TypeScript. Writes are not retried automatically. A retried create can duplicate an artifact, so retry deliberately — see Errors and retries.

Find omitted operations

Start with the per-resource reference: together those pages list all 259. Beyond that, the operation manifest ships inside both packages and is the canonical inventory, so you can enumerate the surface at runtime:
The underlying generated clients also sit under client.raw.<service>.apis, keyed by the contract’s service name (agent, skill, file, mcp, model, api, otel, registry, secret, eval) rather than by resource, when you want a generated signature rather than the facade’s forwarded call.

See also