Skip to Content

Items

List Items

GET /api/v1/items

Returns a paginated list of all items in the workspace.

Query Parameters

ParameterTypeDefaultDescription
statusstring–Filter by status: OK, WARNING, CRITICAL, EXPIRED
categorystring–Filter by category (see below)
limitinteger100Items per page (1–500)
offsetinteger0Number of items to skip

Categories

SSL, DOMAIN, LICENSE, CONTRACT, WARRANTY, SUBSCRIPTION, INSPECTION, VEHICLE_SERVICE, OTHER

Response

{ "data": [ { "id": "clx...", "name": "example.com SSL", "category": "SSL", "type": "AUTO", "domain": "example.com", "vehicleMake": null, "expiresAt": "2026-06-15T00:00:00.000Z", "notes": null, "status": "OK", "lastChecked": "2026-03-11T08:00:00.000Z", "createdAt": "2025-01-10T12:00:00.000Z", "updatedAt": "2026-03-11T08:00:00.000Z", "assignedTo": { "id": "usr...", "name": "Jana", "email": "jana@example.com" } } ], "total": 42, "limit": 100, "offset": 0 }

Example

# Retrieve all items with warning status curl -H "Authorization: Bearer eg_your_key" \ "https://app.expirly.io/api/v1/items?status=WARNING&limit=50"

Create Item

POST /api/v1/items

Creates a new item in the workspace. Items created via the API are always of type MANUAL.

Request Body

FieldTypeRequiredDescription
namestringYesItem name (1–100 characters)
categorystringYesOne of the categories listed above
expiresAtstringYesExpiration date in YYYY-MM-DD format (max. 30 years in the future)
domainstringNoAssociated domain (max. 253 characters)
vehicleMakestringNoVehicle make (max. 100 characters)
notesstringNoFree-text notes (max. 5,000 characters)

Example

curl -X POST \ -H "Authorization: Bearer eg_your_key" \ -H "Content-Type: application/json" \ -d '{ "name": "Wildcard SSL *.example.com", "category": "SSL", "expiresAt": "2027-01-15", "domain": "example.com" }' \ https://app.expirly.io/api/v1/items

Response

Returns the created item with status 201 Created.


Retrieve Item

GET /api/v1/items/:id

Returns a single item including reminders and the assigned person.

Response

{ "id": "clx...", "name": "example.com SSL", "category": "SSL", "type": "AUTO", "domain": "example.com", "expiresAt": "2026-06-15T00:00:00.000Z", "status": "OK", "reminders": [ { "id": "rem...", "daysBefore": 30, "channel": "EMAIL", "sentAt": null }, { "id": "rem...", "daysBefore": 7, "channel": "SLACK", "sentAt": "2026-06-08T07:00:00.000Z" } ], "assignedTo": { "id": "usr...", "name": "Jana", "email": "jana@example.com" } }

Update Item

PATCH /api/v1/items/:id

Updates one or more fields of an existing item. At least one field must be provided.

Request Body

All fields are optional, but at least one must be present:

FieldTypeDescription
namestringItem name (1–100 characters)
categorystringCategory
expiresAtstringExpiration date (YYYY-MM-DD)
domainstring | nullAssociated domain
vehicleMakestring | nullVehicle make
notesstring | nullFree-text notes

When expiresAt is updated, the status is automatically recalculated.

Example

curl -X PATCH \ -H "Authorization: Bearer eg_your_key" \ -H "Content-Type: application/json" \ -d '{ "expiresAt": "2027-06-15", "notes": "Extended by one year" }' \ https://app.expirly.io/api/v1/items/clx123abc

Delete Item

DELETE /api/v1/items/:id

Permanently deletes an item and all associated reminders.

Returns 204 No Content on success.

curl -X DELETE \ -H "Authorization: Bearer eg_your_key" \ https://app.expirly.io/api/v1/items/clx123abc
Last updated on