MailcrateDocs
Workspace

Update the workspace

PUT
/public/workspace

Patch semantics despite the verb: an omitted field is left alone and null clears it. Accepts postalAddress, frequencyCap and sendWindow; everything else on the workspace is read-only here, and unknown fields are rejected.

frequencyCap is { maxSends: 1-50, windowHours: 1-720 }: at most maxSends marketing emails to one contact in a rolling window, counted across campaigns, journeys and API sends. Transactional mail is never counted or blocked. A campaign skips a contact at the cap (a suppressed delivery with reason frequency-cap), a journey step waits until there is room, and a marketing-lane API send answers 200 with a suppressed delivery.

sendWindow is { days: [0-6, Sunday = 0], start: "HH:mm", end: "HH:mm", timezone }, with end after start. It is copied onto campaign drafts created afterwards, where it becomes the campaign's own setting; changing it does not move existing campaigns.

Requires the workspace:write scope.

Authorization

ApiKey
headerAuthorization<token>

Api-Key mc_... — a workspace API key.

Request Body

application/json
  1. body
postalAddress?|null
frequencyCap?|null
sendWindow?|null

Response Body

application/json
  1. response
id*string
name*string
postalAddress*|null
usage*
sendingStatus*
review*
frequencyCap*|null
sendWindow*|null
Example Request
curl -X PUT 'https://api.mailcrate.io/public/workspace' \  -H 'Authorization: Api-Key <api_key>' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "string",  "name": "string",  "postalAddress": {},  "usage": {},  "sendingStatus": {    "state": "active",    "reason": "bounce-rate",    "pausedAt": "2019-08-24T14:15:22Z"  },  "review": {    "sendingQuotaExempt": true,    "firstLargeCampaignApproved": true,    "threshold": 0  },  "frequencyCap": {},  "sendWindow": {}}