POST
Stable
Create or update contact group
/v1/contacts/groups/upsert
Group slug is stable in V1; display name can be updated.
Request
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
name |
string | Yes | Group display name. | Beta users |
slug |
string | No | Stable group slug. | beta-users |
curl
curl -X POST 'https://api.emailsdone.dev/v1/contacts/groups/upsert' \
-H 'Authorization: Bearer ed_...' \
-H 'Content-Type: application/json' \
-d '{}'
Response
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
ok |
boolean | Yes | True when group was saved. | |
group |
object | Yes | Contact group. | |
{}
Errors
| Status | Code | Message |
|---|---|---|
| 400 | invalid_request |
Request body failed validation. |
| 401 | missing_api_key |
Authorization bearer token is missing. |
| 401 | invalid_api_key |
API key is invalid. |
| 403 | api_key_revoked |
API key has been revoked. |
| 404 | contact_not_found |
Contact was not found. |
| 405 | method_not_allowed |
Only POST is allowed. |
| 500 | internal |
Unexpected server error. |
Notes
- Contacts are tenant-level recipients for app email history, not CRM records.
- Existing environment API keys can access tenant contacts endpoints.