- Dedicated model inference and GPU clusters are no longer in the
betanamespace. /v1is dropped from the base URL.whoamireturns a typed identity.- Deprecated APIs and import paths have been removed.
together package as the Python SDK and renames its commands to match.
Upgrade the SDKs and CLI with uv or npm:
Dedicated model inference out of the beta namespace
Dedicated model inference resources moved to the top level of the client, and their CLI commands moved out of tg beta:
Method names, parameters, and CLI flags didn’t change, except that in Python,
endpoints.adapters.retrieve(), update(), and delete() no longer take the adapter_model_id cross-check parameter. Pass the attachment ID (dad_...) alone.
The types moved too. In Python, import them from together.types instead of together.types.beta (for example, together.types.Endpoint). In TypeScript, the Beta.Endpoints and Beta.Models type namespaces are now top level.
GPU clusters out of the beta namespace
The client.beta.clusters and tg beta clusters aliases are gone. Use the top-level names, which have worked since Python SDK 2.40.0, TypeScript SDK 0.58.0, and CLI 2.40.0, so you can switch before you upgrade:
Two cluster parameters are also gone:
- Autoscaling flag:
clusters.create()no longer takesauto_scaled. Useauto_scalewithauto_scale_max_gpus. - Remediation ID:
clusters.remediations.create()no longer takesremediation_id, andtg clusters remediations createno longer takes--remediation-id. The service assigns the ID, so read it from the response.
Removed v1 dedicated endpoint methods
In 2.x, the top-levelclient.endpoints and client.models methods and the tg endpoints and tg models commands called the v1 dedicated endpoints API. In 3.0, the same names call dedicated model inference. These v1 methods are gone from the Python SDK:
endpoints.create(),list(),retrieve(),update(), anddelete()with v1 arguments.endpoints.list_hardware()andendpoints.list_avzones().endpoints.adapters.add(),remove(), andlist(endpoint_id).models.list(dedicated=...),models.upload(), andmodels.uploads.status().
endpoints.listHardware() and endpoints.listAvzones().
The CLI removes these commands and flags:
tg endpoints create,start,stop,hardware,availability-zones, andadapters.tg models list --typeandtg models upload --model-name --model-source.
tg endpoints list, retrieve, update, and delete still exist, but they now manage dedicated model inference resources and take its arguments.
client.models.list() now lists the models in your project instead of the serverless catalog. For the serverless catalog, see Serverless models.
To move a v1 endpoint to dedicated model inference, see Migrate from v1. To list, stop, or delete v1 endpoints that are still running, call the v1 REST API.
Base URL without /v1
If you set base_url, baseURL, or TOGETHER_BASE_URL, drop the trailing /v1. Each method’s path now carries its own API version (/v1/chat/completions, /v2/projects/..., /v3/whoami). The SDK doesn’t strip /v1 from the base URL, so a base URL that still ends in /v1 sends requests to /v1/v1/....
https://api.together.ai/v1 or https://api-inference.together.ai/v1.
The default base URL is https://api.together.ai, except for chat completions requests, which now go to https://api-inference.together.ai by default. When you set a base URL other than the default, every method uses it.
whoami returns a typed identity
client.whoami() calls GET /v3/whoami. The response has a type field and nested project and organization objects instead of flat fields. For example, project_id is now project.id, and project_slug is now project.slug. Which fields are present depends on the credential:
Only project-scoped credentials carry a
project, so check type before you read it. The check also lets type checkers narrow the response:
whoami() for the project ID, set TOGETHER_PROJECT_ID, or pass project_id to Together() in Python or projectID to new Together() in TypeScript. Project-scoped methods use this project ID when you don’t pass one.
Removed aliases and import paths
- Organization usage: Both SDKs add
client.organization.usage.costs.list(). In TypeScript,client.organizationreplaces the emptyclient.beta.organizationnamespace. In Python, the types moved fromtogether.types.beta.organizationtotogether.types.organization. - Post-training imports: The
together.lib.beta.rlandtogether.lib.post_trainingimport paths are gone. Import fromtogether.post_training. - Python errors and constants: The
together.errorandtogether.constantsmodules are gone. Import exceptions such asRateLimitErrorfromtogether. - Python v1 type aliases:
together.typesno longer exportsChatCompletion,ChatCompletionChunk,ChatCompletionUsage,ChatCompletionResponse,CompletionResponse,UsageData,ListEndpoint,ImageRequest, orImageResponse. Import the generated types from their submodules instead, such asChatCompletionfromtogether.types.chat.
Removed APIs and parameters
- Legacy function calling: Chat completions no longer accept assistant messages with
function_callor messages with thefunctionrole, and responses no longer includefunction_call. In TypeScript, the chat completion runner’sfinalFunctionCall()is gone too. Usetoolsand messages with thetoolrole, as in Function calling. - Video keyframes and references:
videos.create()no longer takes top-levelframe_imagesorreference_images. Pass them insidemedia, as in Reference images and keyframes. - Code interpreter:
client.code_interpreterin Python andclient.codeInterpreterin TypeScript are gone, along with the API they called. - Fine-tuning delete:
fine_tuning.delete()no longer takesforce. - TypeScript fine-tuning inputs:
fineTuning.create()no longer takes a top-leveltrain_on_inputs. Pass it insidetraining_method. The Python SDK still accepts the keyword. - FP4 preparation inputs:
adapter_object_idandadapter_revision_idare gone from theinputsofpost_training.prepare_for_fp4_inference.create()andestimate_cost(). Usemodel_object_idandmodel_revision_id. - File processing status: File responses no longer include
processed. Readprocessing_status. - TypeScript file checks:
client.files.upload()no longer takes a thirdcheckargument. Pass only the file path and the purpose. The SDK no longer checks file contents before uploading, but the server still validates them. The Python SDK keepscheck.
Getting help
- Browse the SDK source in the together-py and together-typescript repos.
- For code written against the v1 Python SDK, start with the Python SDK v2 migration.
- Report issues on Discord or contact support.