Create a workspace
Creates a new workspace with its own wallet in the currency of the country_code given, and no phone number yet. Takes name and company_name. The response includes an admin key for the new workspace, shown once, used to buy it a number and set it up.
Requires: desk.admin scope, workspace owner or admin.
Authorization
bearerAuth A SautiDesk API key. An owner or admin makes it under Settings in SautiDesk for a named person and picks the scopes. The key is shown once. Send it as Authorization: Bearer <key>. It acts as that person and as nobody else.
In: header
Request Body
application/json
Response
Created
Example
{ "workspace": { "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37", "slug": "support", "name": "Amina Wanjiru", "country": "KE", "currency": "KES", "created_at": "2026-10-14T08:30:00Z" }, "key": { "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37", "name": "Amina Wanjiru", "scope": "example", "fingerprint": "example", "created_at": "2026-10-14T08:30:00Z", "last_used_at": "2026-10-14T08:30:00Z", "issued_by": { "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37", "name": "Amina Wanjiru" }, "issued_by_key": { "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37", "name": "Amina Wanjiru" }, "scopes": [ "example" ] }, "secret": "example-secret"}workspacerequiredobjectidrequiredstringslugrequiredstringnamerequiredstringA name for it.countryrequiredstringcurrencyrequiredstringThe currency code of the money in this report, for example KES. Write money figures with it. Left out when the report has no money.created_atrequiredstringkeyrequiredobjectidrequiredstringnamerequiredstringA name for it.scoperequiredstringThe most the key may do: desk.read, desk.write, desk.supervise or desk.admin.fingerprintrequiredstringcreated_atrequiredstringlast_used_atrequiredstring | nullissued_byanyidrequiredstringnamerequiredstringA name for it.issued_by_keyanyidrequiredstringnamerequiredstringA name for it.scopesstring[]The most the key may do: a list of desk.read, desk.write, desk.supervise and desk.admin.secretrequiredstringA secret your server uses to check the message really came from SautiDesk.curl -X POST "https://api.sautidesk.com/v1/desk/workspaces" \ -H "Content-Type: application/json" \ -d '{ "company_name": "Acme Uganda", "country_code": "UG" }'