Essential methods
Signatures below omitself. Unless noted, context-aware methods accept keyword-only org_id=None, project_id=None, falling back to the client context.
home, dashboard, and canvas refer to the same resource namespace. For example, client.canvas.pages.list() and client.home.pages.list() use the same page API. See Canvas pages for the CLI workflow.
For container-backed apps, use client.hosted_apps for publication management and a request-bound client for delegated data access inside an app. client.lakehouse.statements submits SQL and retrieves status and result chunks. These namespaces require client 0.6.133 or later and the corresponding deployment services.
Read, then conditionally update a page
SetTHINKPLATFORM_ORG_ID, THINKPLATFORM_PROJECT_ID, and THINKPLATFORM_PAGE_ID along with THINKPLATFORM_API_BASE_URL and a bearer token in THINKPLATFORM_ACCESS_TOKEN as described in authentication. The example reads the page first and changes its title only when THINKPLATFORM_APPLY_UPDATE=yes; leave that flag unset to inspect without writing. Confirm the page ID and intended title before enabling it. After the update, a separate GET checks the stored title. These requests are not an atomic compare-and-swap; another writer can change the page between them.
Follow a continuation token
has_more, next_cursor, or a common paginator exists.
Other resource families
The client also exposesagents (including tasks, teams, workspaces and memories), tasks, flows, apps, hooks, webhooks, skills, modules, devices, db.tables, db.rows, and mlops. See the API reference for their methods and return types. Some CLI operations have no equivalent SDK method.
Many resource methods return Pydantic models with attribute access, optional fields, and support for additional server fields. Canvas pages and some other endpoints return mappings instead: use page.get("title"), not page.title. Raw download methods return RawResponse with status_code, body bytes, headers, and content_type. Low-level request_json(), request_raw(), and request_multipart() are available when you already know the API contract; they do not infer resource payload schemas.