Create a compliance project

posthttps://api.expiryedge.com/v1/createComplianceProject
editor or admin60/minIdempotency-KeyAny method
Request
curl -X POST 'https://api.expiryedge.com/v1/createComplianceProject' \
  -H "Authorization: Bearer $EXPIRYEDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "Northwind Dental - 2026 License Renewals",
  "clientId": "cc_7Rt2vQ",
  "status": "In Progress",
  "startDate": "2026-09-01",
  "dueDate": "2026-10-15",
  "description": "Collect and renew all state dental licenses.",
  "owner": "Priya Shah",
  "customFields": {
    "board": "State Board of Dentistry"
  }
}'
Response
{
  "message": "Project created successfully.",
  "project": {
    "id": "cp_3Mn8wX",
    "name": "Northwind Dental - 2026 License Renewals",
    "clientId": "cc_7Rt2vQ",
    "status": "In Progress",
    "startDate": "2026-09-01",
    "dueDate": "2026-10-15",
    "description": "Collect and renew all state dental licenses.",
    "owner": "Priya Shah",
    "customFields": {
      "board": "State Board of Dentistry"
    },
    "isArchived": false,
    "archivedAt": null,
    "organization_id": "org_northwind",
    "user_id": "u_71bXq",
    "createdAt": "2026-09-27T14:05:00.000Z",
    "updatedAt": "2026-09-27T14:05:00.000Z"
  }
}

Returns 400 when clientId is missing or not a client in your organization.

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
    Required on create; cannot be blank on update.
  • clientIdstringrequired
    Compliance client id in your organization. Required on create.
  • statusstring
    Any other value is stored as Not Started.
    AllowedNot StartedIn ProgressOn HoldCompletedCancelled
  • startDatestring
    Stored as sent (not validated); the web app sends YYYY-MM-DD. Empty string when unset.
  • dueDatestring
    Stored as sent (not validated); the web app sends YYYY-MM-DD. Empty string when unset.
  • descriptionstring
  • ownerstring
    Free-text owner name.
  • customFieldsmap of string
    Free-form key/value pairs. Keys are trimmed; values are stored as strings.

Returns

201
Created.
  • messagestring
  • projectobject
    A project belonging to a compliance client.

Errors

400
The request is missing required fields or contains invalid values.
401
Missing, expired or invalid bearer token.
403
Authenticated, but your role or organization does not allow this action.
409
A request with the same Idempotency-Key is still being processed. Retry after Retry-After seconds.
422
The Idempotency-Key was already used with a different request body.
429
Too many requests for this endpoint from your IP. Wait Retry-After seconds.
500
Unexpected server error. Retry later; quote requestId to support.