Endpoint
GET https://authentica.api.miko.co.nz/v1/certificates
Authorization: Bearer auth_live_...
Results are ordered by when each certificate last changed, oldest first, so you can page through everything once and then ask only for what changed. Sample certificates created while you set up the app are never returned.
Query parameters
All are optional and can be combined.
| Parameter | Description |
|---|---|
email | Certificates this person currently owns. Includes certificates transferred to them and leaves out ones they transferred away. Not case-sensitive. |
order | An order name such as #1001, or a numeric Shopify order ID. |
serial | One certificate by its serial number. |
status | active, revoked, expired or all (default). |
updated_since | An ISO 8601 time. Only certificates that changed after it, such as a new owner or a revocation. |
limit | Results per page, 1 to 100. Default 50. |
cursor | The next_cursor value from the previous response, to get the next page. |
Example response
{
"certificates": [
{
"id": "cm1x8k2p40001",
"serial": "00001",
"status": "active",
"product": { "id": "8123456789012", "title": "DROP 001", "variant": "P / Branco", "sku": "D001-P-BR" },
"edition": { "number": 1, "total": 999, "formatted": "001/999" },
"order": { "id": "6012345678901", "name": "#1001" },
"owner": { "name": "Maria Silva", "email": "[email protected]" },
"originalBuyer": { "name": "Maria Silva", "email": "[email protected]" },
"issuedAt": "2026-10-05T03:05:41.000Z",
"updatedAt": "2026-10-05T03:05:42.000Z",
"expiresAt": null,
"revokedAt": null,
"revokedReason": null,
"verifyUrl": "https://your-store.myshopify.com/apps/authentica/c/Ab3dEf..."
}
],
"next_cursor": null
}
The certificate object
| Field | Description |
|---|---|
id | Stable unique ID. Use it as the key when you store certificates. |
serial | The certificate number printed on the certificate. |
status | active, revoked (refunded, cancelled or revoked by you) or expired (past its valid-until date). |
product | Shopify product ID, title, variant (such as size and colour) and SKU, as they were when the certificate was issued. |
edition | Edition number and size, plus formatted in the style chosen in Settings (for example 001/999). null when editions are off. |
order | The Shopify order ID and name. Both are null for certificates issued by hand. |
owner | The current owner, after any transfers. |
originalBuyer | Who the certificate was first issued to. |
issuedAt / updatedAt | When it was issued, and when anything about it last changed. |
expiresAt | Valid-until date, or null if it never expires. |
revokedAt / revokedReason | Set when the certificate is revoked, for example refunded or order cancelled. |
verifyUrl | The public verification page. Link your "View certificate" button here. It follows your Verification links setting and opens in the verification page language you chose. |
Paging through everything
First page
Call/v1/certificates?limit=100.Next pages
Whilenext_cursoris notnull, call again with&cursor=set to it.Stay current
Store the newestupdatedAtyou have seen. Later, call withupdated_sinceset to it to get only what changed.
Errors
Errors return JSON with an error code and a readable message.
| HTTP | error | What to do |
|---|---|---|
| 401 | unauthorized | The key is missing or no longer valid. Check the header, or create a new key in Settings. |
| 403 | plan_required | The store is not on the Pro plan. Upgrade in Plans; the existing key starts working again straight away. |
| 400 | bad_request | A parameter is not valid. message says which one. |
| 429 | rate_limited | More than 120 requests in a minute. Wait a moment and retry, and cache results where you can. |
Related articles