> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.ottimate.com/v-1/sdks/python/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. > Call the Ottimate API from Python with a typed, generated client ## Docs - [Setup](https://docs.ottimate.com/v-1/sdks/python/setup.md) - [Accounts](https://docs.ottimate.com/v-1/sdks/python/accounts.md) - [Dimensions](https://docs.ottimate.com/v-1/sdks/python/dimensions.md) - [Vendors](https://docs.ottimate.com/v-1/sdks/python/vendors.md) - [Invoices](https://docs.ottimate.com/v-1/sdks/python/invoices.md) - [Invoice Approvers](https://docs.ottimate.com/v-1/sdks/python/invoice-approvers.md) - [Catalog](https://docs.ottimate.com/v-1/sdks/python/catalog.md) - [Catalog Entries](https://docs.ottimate.com/v-1/sdks/python/catalog-entries.md) - [Catalog Prices](https://docs.ottimate.com/v-1/sdks/python/catalog-prices.md) - [Catalog Allowances](https://docs.ottimate.com/v-1/sdks/python/catalog-allowances.md) - [Catalog Variances](https://docs.ottimate.com/v-1/sdks/python/catalog-variances.md) - [End-to-End Workflow](https://docs.ottimate.com/v-1/sdks/python/end-to-end-workflow.md)