> This page is for version V1 (default).
> For other versions, use one of these documentation indexes:
> - V1 (default): https://docs.ottimate.com/v-1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ottimate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ottimate.com/_mcp/server.

# Python SDK

The Ottimate Python SDK is a typed client generated from the same [OpenAPI specification](/api-reference) that powers this documentation, so responses come back as Python objects instead of raw JSON.

> **Warning**
>
> Version `0.1.7` covers 57 of the API's 78 endpoints. Accounts, Batch, Catalog, Dimensions, Invoices, OAuth, Purchase Orders, Receipts, and Vendors are available. **Payments, Approval Policies, and Coding Defaults are not yet in the SDK** — call those endpoints directly over HTTP for now. See the [API Reference](/api-reference) for the full surface.

> **Note**
>
> The SDK is published to PyPI as `ottimate-sdk`, but its import name is `ottimate`:
>
> ```bash
> pip install ottimate-sdk==0.1.7
> ```

## Getting started

#### Install the client

Run `pip install ottimate-sdk==0.1.7` in a virtual environment. See [Setup](/sdks/python/setup).

#### Authenticate

Exchange your client credentials for an OAuth token, then initialize the client with it. See [Setup](/sdks/python/setup#authenticate-and-create-the-client).

#### Make your first call

Fetch the companies and locations on your account to confirm the client is wired up correctly. See [Accounts](/sdks/python/accounts).

## Guides

#### [Setup](/sdks/python/setup)

Install the package, configure credentials, and initialize the client

#### [Accounts](/sdks/python/accounts)

Fetch the companies and locations that belong to an account

#### [Dimensions](/sdks/python/dimensions)

Sync GL accounts and other accounting dimensions

#### [Vendors](/sdks/python/vendors)

Create and look up accounting vendors

#### [Invoices](/sdks/python/invoices)

Upload, create, list, and retrieve invoices

#### [Invoice Approvers](/sdks/python/invoice-approvers)

Add and remove approvers, and approve invoices

#### [Catalog](/sdks/python/catalog)

Manage catalog entries, prices, allowances, and variances

#### [End-to-End Workflow](/sdks/python/end-to-end-workflow)

A single script that runs the full onboarding-to-invoice flow

## Conventions

Method names mirror the underlying HTTP operation, grouped by API tag. For example:

| API endpoint                      | SDK method                                          |
| --------------------------------- | --------------------------------------------------- |
| `GET /v1/accounts/{id}/companies` | `client.accounts.get_accounts_id_companies(id=...)` |
| `POST /v1/vendors`                | `client.vendors.post_vendors_root(...)`             |
| `GET /v1/invoices`                | `client.invoices.get_invoices_root(...)`            |

Every request is scoped by the credentials you authenticate with — the same [scoping rules](/account-structure/scoping) that apply to direct API calls apply here.