---
title: "Update a subaccount"
method: PUT
path: "/subaccounts/{subaccount_id}"
---

# Update a subaccount

`PUT /subaccounts/{subaccount_id}`

## Path parameters

- `subaccount_id` string, required — Subaccount ID.

## Headers

- `Authorization` string, required

## Request body

- object
  - `subaccount_name` string — The name for the new subaccount. This should be a unique identifier that distinguishes it from other subaccounts within the main account.
  - `invite_user_email` string — This is the email address of the user you wish to invite to the subaccount. When this optional parameter is filled in, a "sign in" link will be generated and sent back in the response. The user can use this link to sign in and set up their account.
  - `pricing_tiers_attach` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaPricingTiersAttachItems[] — Pricing tier IDs that this subaccount can choose from when selecting a subscription plan.
    - `pricing_tier_id` string, required — The ID of the Synthflow pricing tier.
  - `pricing_tiers_detach` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaPricingTiersDetachItems[] — Pricing tiers will be removed from this subaccount and will no longer be available for selection when choosing a subscription plan.
    - `pricing_tier_id` string, required — The ID of the Synthflow pricing tier.
  - `import_subscription` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaImportSubscription — This section is used when you want to import an existing Stripe subscription for the subaccount
    - `stripe_subscription_id` string — The ID of the existing Stripe subscription you want to import. This is typically used when the subaccount already has a subscription set up in Stripe, and you want to link it to their Synthflow account.
    - `synthflow_price_id` string — The ID of the Synthflow pricing tier that corresponds to the imported Stripe subscription. This allows you to map the external Stripe subscription to an equivalent plan within Synthflow.
  - `twilio_account_sid` string — This is the Twilio SID of the subaccount.
  - `twilio_auth_token` string — This is the Twilio Token of the subaccount.
  - `concurrency` integer — The maximum calls the subaccount can handle at once.
  - `max_agents` integer, nullable — The maximum number of agents the subaccount is allowed to create. Null if no limit is set.
  - `max_minutes` integer, nullable — The maximum number of minutes allocated to this subaccount. Null if no limit is set.
  - `max_workflow_runs` integer, nullable — The maximum number of workflow runs allocated to this subaccount. Null if no limit is set.
  - `minutes_used` integer — The minutes already consumed by this subaccount. Set it to `0` to reset usage, for example at the start of a customer's billing cycle.
  - `grant_permissions` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaGrantPermissionsItems[] — Permissions to grant to the subaccount. Duplicate values are not allowed, and any value also present in `revoke_permissions` is rejected by the API.
  - `revoke_permissions` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaRevokePermissionsItems[] — Permissions to revoke from the subaccount. Duplicate values are not allowed, and any value also present in `grant_permissions` is rejected by the API.
  - `operation_type` 'import' | 'return' — The type of operation to perform. You can import objects from the parent workspace to a subaccount or return objects from a subaccount in some cases.
  - `products` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaProducts — Objects to be imported to or returned from the subaccount_id
    - `phone_numbers` SubaccountsSubaccountIdPutRequestBodyContentApplicationJsonSchemaProductsPhoneNumbersItems[] — The list of numbers to be imported to or returned from the subaccount_id
      - `number` string — The E.164 formatted phone number

## Response `200`

200

- UpdateSubaccountResponse200
  - `status` string
  - `response` SubaccountsSubaccountIdPutResponsesContentApplicationJsonSchemaResponse
    - `subaccount_id` string — Subaccount ID.
    - `api_key` string
    - `user_email` string
    - `sign_in_link` string

## Other responses

- `400` — 400
- `401` — Missing or invalid API credentials.
- `500` — The request could not be completed. Read `detail.description` for the reason, then retry the same request.
- `502` — The upstream service returned a body this API could not read. The write may or may not have been applied, so re-read the subaccount before retrying.

## Changes

- **2026-09-02** `a0a428a2afbe` — 3 info
  - added the non-success response with the status `401`
  - added the non-success response with the status `500`
  - added the non-success response with the status `502`
- **2026-08-22** `292b6010eb31` — 1 warning, 1 info
  - the `minutes_used` request property's min was set to `0.00`
  - api tag `` removed
- **2026-08-17** `f04f8c465268` — 1 info
  - added the new optional request property `minutes_used`

[Change history](https://skmtc.dev/synthflow/apis/platform-api/changes/subaccounts/:subaccount_id/put.md)

---

[API](https://skmtc.dev/synthflow/apis/platform-api.md) · [All operations](https://skmtc.dev/synthflow/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/synthflow/platform-api/revisions/a0a428a2afbe/schema)
