SautiDesk
SautiDesk API
Team and licences

Create a workspace

POST
/v1/desk/workspaces

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
AuthorizationBearer <token>

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"}
FieldTypeDescription
workspacerequiredobject
idrequiredstring
slugrequiredstring
namerequiredstringA name for it.
countryrequiredstring
currencyrequiredstringThe 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_atrequiredstring
keyrequiredobject
idrequiredstring
namerequiredstringA name for it.
scoperequiredstringThe most the key may do: desk.read, desk.write, desk.supervise or desk.admin.
fingerprintrequiredstring
created_atrequiredstring
last_used_atrequiredstring | null
issued_byany
idrequiredstring
namerequiredstringA name for it.
issued_by_keyany
idrequiredstring
namerequiredstringA 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"  }'