Easy2257
API Reference

Certificate Revocation List

GET /api/v1/productions/revoked-certificates: daily revocation sync for stored certificates.

Advance your watermark from the top-level retrievedAt, not from a revocation's revokedAt. retrievedAt is the server time this response was built. The per-item revokedAt values belong to individual certificates and are always in the past, so a sync that stores one of those as its next since will re-read the same rows forever or skip rows that land between them.

nextCursor is an opaque page cursor, not a productionId. Pass it back verbatim as cursor. A reason starting removal_request: means take the content down; match on the prefix, because the id after it varies. Annual renewals are not revocations and no longer enter this list; entries recorded before that split carry type: supersession and their content stays up.

GET
/api/v1/productions/revoked-certificates

Authorization

BearerAuth
AuthorizationBearer <token>

Partner API key from partner.easy2257.com/api-keys. Only ez_live_ keys are accepted. A key beginning with ez_test_ is rejected with 403 and code TEST_MODE_UNAVAILABLE before any handler runs: there is no sandbox, and every handler writes production records, provisions real users, and sends real email. New partner accounts start with a test key, so create a live key before your first call.

In: header

Query Parameters

since?string

ISO 8601. Defaults to 30 days ago. Use the retrievedAt from your last successful sync.

Formatdate-time
limit?string

1 to 10000. Default 1000.

cursor?string

nextCursor from the previous page, passed back verbatim.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://easy2257.com/api/v1/productions/revoked-certificates"
{
  "retrievedAt": "2026-04-24T18:00:00Z",
  "revocations": [
    {
      "productionId": "cmd3p8w1k0002qz8h9j4r7v5s",
      "revokedAt": "2026-04-24T18:00:00Z",
      "reason": "removal_request:cmremreq0000000000000001",
      "type": "revocation"
    }
  ],
  "nextCursor": "0b4b8f4e-6a7c-4a1e-9f0e-2f1d7c3a5b9e"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}
{
  "error": "Too many requests. Please slow down.",
  "retryAfter": 14,
  "limit": 60,
  "remaining": 0,
  "reset": 1714000060000
}
{
  "error": "email, externalUserId, and callbackUrl are required",
  "code": "missing_parameter",
  "field": "contentType"
}