List expiry types with usage counts
post
https://api.expiryedge.com/v1/getExpiryTypesWithStatsany role60/min
Request
curl -X POST 'https://api.expiryedge.com/v1/getExpiryTypesWithStats' \
-H "Authorization: Bearer $EXPIRYEDGE_API_KEY"Response
[
{
"id": "et_5Gm1rT",
"name": "Business License",
"expiry_count": 12,
"created_at": "2026-03-02T10:15:00.000Z",
"email_template_id": "tmpl_7Qw2",
"email_template_name": "Friendly license reminder",
"email_template_missing": false,
"email_template_active": true
},
{
"id": "et_2Kd9wB",
"name": "Insurance",
"expiry_count": 7,
"created_at": "2026-03-02T10:16:00.000Z",
"email_template_id": null,
"email_template_name": null,
"email_template_missing": false,
"email_template_active": false
}
]Returns every expiry type of the organization (unbounded) with its expiry count and email template override.
200
Expiry types with counts.
idstringread-onlynamestringexpiry_countintegerread-onlyNumber of expiries whosetypeequals this name.created_atstringUTC timestamp, ISO 8601. Every v1 response uses this form, never a raw Firestore Timestamp ({_seconds, _nanoseconds}).format: date-timeemail_template_idstring | nullemail_template_namestring | nullread-onlyemail_template_missingbooleanread-onlyTrue when the referenced template no longer exists (reminders use the default).email_template_activebooleanread-onlyTrue when the override is set, exists, and the plan allows it.
400 | The request is missing required fields or contains invalid values. |
401 | Missing, expired or invalid bearer token. |
429 | Too many requests for this endpoint from your IP. Wait Retry-After seconds. |
