Create a contact group

Preview
posthttps://api.expiryedge.com/v2/contact-groups
editor or admin60/minIdempotency-Key
Request
curl -X POST 'https://api.expiryedge.com/v2/contact-groups' \
  -H "Authorization: Bearer $EXPIRYEDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "Licensing Boards",
  "color": "#1976d2"
}'
Response
{
  "id": "gro_123",
  "organization_id": "org_123",
  "name": "Example name",
  "color": "#1E88E5",
  "sort_order": 1,
  "created_by": "string",
  "created_at": "2026-09-27T14:05:00.000Z",
  "updated_at": "2026-09-27T14:05:00.000Z"
}

Names are unique per organization, ignoring case (409 GROUP_EXISTS).

Headers

  • Idempotency-Keystring
    Optional client-generated key (1-255 characters of letters, digits, - _ : .).
    pattern: ^[A-Za-z0-9_\-:.]{1,255}$

Body parameters

application/json
  • namestringrequired
    max length: 100
  • colorstring
    pattern: ^#[0-9a-fA-F]{6}$
  • sort_orderinteger

Returns

201
Created.
  • idstring
  • organization_idstring
  • namestring
  • colorstring
  • sort_orderinteger
  • created_bystring | null
  • created_atstring
    UTC timestamp, ISO 8601. Every v1 response uses this form, never a raw Firestore Timestamp ({_seconds, _nanoseconds}).
    format: date-time
  • updated_atstring
    UTC timestamp, ISO 8601. Every v1 response uses this form, never a raw Firestore Timestamp ({_seconds, _nanoseconds}).
    format: date-time

Errors

400
Invalid parameters or body (VALIDATION_FAILED; details names the fields).
401
Missing, invalid or expired token (UNAUTHORIZED).
403
Your role can't do this, or your account has no organization (FORBIDDEN).
405
Wrong HTTP method for this path; the Allow header lists the valid ones.
409
State or uniqueness conflict: EMAIL_EXISTS (contacts), GROUP_EXISTS (contact groups), CONFLICT (folder name taken), FOLDER_NOT_EMPTY, CLIENT_HAS_PROJECTS, TOO_MANY_ATTACHMENTS, INVALID_STATE (collection request cancel/resend), or IDEMPOTENCY_IN_PROGRESS (same Idempotency-Key still running; see Retry-After).
422
The Idempotency-Key was already used with a different body (IDEMPOTENCY_KEY_REUSED).
429
Too many requests for this endpoint from your IP. Wait Retry-After seconds.