Items
List Items
GET /api/v1/itemsReturns a paginated list of all items in the workspace.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | – | Filter by status: OK, WARNING, CRITICAL, EXPIRED |
category | string | – | Filter by category (see below) |
limit | integer | 100 | Items per page (1–500) |
offset | integer | 0 | Number 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/itemsCreates a new item in the workspace. Items created via the API are always of type MANUAL.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Item name (1–100 characters) |
category | string | Yes | One of the categories listed above |
expiresAt | string | Yes | Expiration date in YYYY-MM-DD format (max. 30 years in the future) |
domain | string | No | Associated domain (max. 253 characters) |
vehicleMake | string | No | Vehicle make (max. 100 characters) |
notes | string | No | Free-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/itemsResponse
Returns the created item with status 201 Created.
Retrieve Item
GET /api/v1/items/:idReturns 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/:idUpdates 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:
| Field | Type | Description |
|---|---|---|
name | string | Item name (1–100 characters) |
category | string | Category |
expiresAt | string | Expiration date (YYYY-MM-DD) |
domain | string | null | Associated domain |
vehicleMake | string | null | Vehicle make |
notes | string | null | Free-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/clx123abcDelete Item
DELETE /api/v1/items/:idPermanently 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/clx123abcLast updated on