Identities

The addresses an account may send as, their signatures, and the account's mail settings.

Guides: Sending mail.

MethodPathOperationScope
GET/v1/accounts/{accountId}/identitiesList the addresses the account may send asread
POST/v1/accounts/{accountId}/identitiesAdd a custom identitywrite
PATCH/v1/accounts/{accountId}/identities/{identityId}Change an identity's signature or namewrite
DELETE/v1/accounts/{accountId}/identities/{identityId}Remove a custom identitywrite
GET/v1/accounts/{accountId}/mail-settingsGet the account's mail settingsread
PATCH/v1/accounts/{accountId}/mail-settingsUpdate the account's mail settingswrite
GET
/v1/accounts/{accountId}/identities

Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.

The account's own address, the provider's (Gmail send-as addresses with their Gmail signatures in one users.settings.sendAs request; Microsoft proxy addresses from /me) and custom ones. The provider's list is read when the cached one is a day old, or with refresh=true at most once a minute; a paused or disconnected account serves the cached list.

Required scope: read.

Path Parameters

accountId*string
Formatuuid

Query Parameters

refresh?boolean|

Response Body

OK

application/json
  1. response
items*array<>
refreshedAt*|null
Example Request
curl -X GET 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/identities'
Example Response
{  "items": [    {      "name": "Ada Lovelace",      "address": "ada@example.com",      "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",      "source": "primary",      "signature": {        "html": "string",        "text": "string"      },      "providerSignature": {        "html": "string",        "text": "string"      }    }  ],  "refreshedAt": "2026-05-04T09:30:00.000Z"}

Add a custom identity

POST
/v1/accounts/{accountId}/identities

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

For IMAP aliases, and Microsoft mailboxes the account has Send As permission on (Graph cannot list those). Sending as it is checked by the provider when the message goes out.

Required scope: write.

Path Parameters

accountId*string
Formatuuid

Request Body

application/json
  1. body
name?string
Lengthlength <= 256
address*string
Formatemail
Lengthlength <= 320
signature?

Response Body

OK

application/json
  1. response
name*string|null
address*string
id*string
Formatuuid
source*IdentitySource
Value in"primary""provider""custom"
signature*|null
providerSignature*|null
Example Request
curl -X POST 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/identities' \  -H 'Content-Type: application/json' \  -d '{  "address": "ada@example.com"}'
Example Response
{  "name": "Ada Lovelace",  "address": "ada@example.com",  "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",  "source": "primary",  "signature": {    "html": "string",    "text": "string"  },  "providerSignature": {    "html": "string",    "text": "string"  }}
PATCH
/v1/accounts/{accountId}/identities/{identityId}

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

signature: null removes ours (Gmail's own then applies again). Only custom identities take a name; the others carry the provider's.

Required scope: write.

Path Parameters

accountId*string
Formatuuid
identityId*string
Formatuuid

Request Body

application/json
  1. body
name?|null
signature?|null

Response Body

OK

application/json
  1. response
name*string|null
address*string
id*string
Formatuuid
source*IdentitySource
Value in"primary""provider""custom"
signature*|null
providerSignature*|null
Example Request
curl -X PATCH 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/identities/ad046281-ad6e-45b7-8cd5-4370649c73ce' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "name": "Ada Lovelace",  "address": "ada@example.com",  "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",  "source": "primary",  "signature": {    "html": "string",    "text": "string"  },  "providerSignature": {    "html": "string",    "text": "string"  }}

Remove a custom identity

DELETE
/v1/accounts/{accountId}/identities/{identityId}

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

Required scope: write.

Path Parameters

accountId*string
Formatuuid
identityId*string
Formatuuid

Response Body

OK

application/json
  1. response
Example Request
curl -X DELETE 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/identities/ad046281-ad6e-45b7-8cd5-4370649c73ce'
Example Response
null
GET
/v1/accounts/{accountId}/mail-settings

Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.

Required scope: read.

Path Parameters

accountId*string
Formatuuid

Response Body

OK

application/json
  1. response
signByDefault*boolean
Example Request
curl -X GET 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/mail-settings'
Example Response
{  "signByDefault": true}
PATCH
/v1/accounts/{accountId}/mail-settings

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

Required scope: write.

Path Parameters

accountId*string
Formatuuid

Request Body

application/json
  1. body
signByDefault?boolean

Response Body

OK

application/json
  1. response
signByDefault*boolean
Example Request
curl -X PATCH 'https://api.workwae.com/v1/accounts/6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b/mail-settings' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "signByDefault": true}