Recurrences
Standing agreements (återkommande avtal): a customer, a template job and an iCalendar rule. Closepact writes the jobs ahead of time every night, once per date, and they can be generated on demand.
Recurring jobs are included from the Väx tier of booking (booking.recurring). Below it, writing an agreement answers 402, existing agreements stay readable, and no jobs are generated from them.
List recurrences
/recurrencesStanding agreements ordered by start date. due_before answers "which agreements produce work before this date" from next_run_on. Cursor-paginated: pass next_cursor as cursor.
curl 'https://api.closepact.com/v1/api/recurrences' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY"{
"data": [
{
"id": "01a15c30-6f70-7364-b5c6-d7e82f354189",
"sub_entity_id": null,
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"customer": {
"id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"name": "Brf Linden",
"customer_number": "10231"
},
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "06:30",
"duration_minutes": 120
},
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"next_run_on": "2026-11-30",
"status": "active",
"lead_time_days": 21,
"last_generated_at": "2026-11-02T03:00:12+00:00",
"created_at": "2026-10-20T10:12:00+00:00",
"updated_at": "2026-11-02T03:00:12+00:00"
}
],
"path": "https://api.closepact.com/v1/api/recurrences",
"per_page": 50,
"next_cursor": null,
"next_page_url": null,
"prev_cursor": null,
"prev_page_url": null
}Query parameters
qstringSearch in the customer name (case-insensitive, substring).
Example
Lindenfilter[status]stringOnly these statuses. Repeat as
filter[status][]=active&filter[status][]=pausedfor several.One of
activepausedcompletedExample
activefilter[account_id]string(uuid)Only this customer's agreements.
due_beforestring(date)Only agreements whose
next_run_onis on or before this date. Calendar date,YYYY-MM-DD.Example
2026-12-01limitintegerItems per page, 1–200.
Default
501–200cursorstringOpaque cursor from
meta.next_cursorormeta.prev_cursorof the previous page.
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
A page of a cursor-paginated list. Pass
next_cursorascursorto fetch the next page; it is null on the last page.dataarray of objectsrequiredidstring(uuid)requiredThe recurrence id.
sub_entity_idstring(uuid)nullablerequiredThe office (sub-entity) it belongs to, and every job it writes; or null.
account_idstring(uuid)requiredThe customer.
customerobjectnullablerequiredThe customer, or null where not loaded (the
recurrenceinside a generate result).rrulestringrequirediCalendar recurrence rule (RFC 5545), limited to
FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU, no positions),COUNTandUNTIL. Weeks start on Monday.templateobjectrequiredWhat each generated job looks like. Only these keys exist; any other key is refused with 422 (a misspelt
titelwould otherwise be dropped silently).starts_onstring(date)requiredFirst day of the agreement. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullablerequiredLast day, or null for open-ended. Calendar date,
YYYY-MM-DD.next_run_onstring(date)nullablerequiredThe next date the rule will write a job for, or null when it has run out. Calendar date,
YYYY-MM-DD.statusstringrequiredactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompletedlead_time_daysintegerrequiredHow far ahead jobs are written, in days (1–120).
last_generated_atstring(date-time)nullablerequiredWhen jobs were last generated, or null.
created_atstring(date-time)requiredISO 8601 date-time, in UTC.
updated_atstring(date-time)requiredISO 8601 date-time, in UTC.
pathstringrequiredThe list URL without query.
per_pageintegerrequiredItems per page.
next_cursorstringnullablerequiredCursor for the next page, or null.
next_page_urlstringnullablerequiredURL of the next page, or null.
prev_cursorstringnullablerequiredCursor for the previous page, or null.
prev_page_urlstringnullablerequiredURL of the previous page, or null.
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 429The key has made more requests this minute than its limit allows.Errors
Create a recurrence
/recurrencesCreates a standing agreement. Every night Closepact writes a work order (source recurrence, status booked, unassigned) for each date the rule produces from today up to lead_time_days ahead — never for dates in the past, and never twice for the same date. To see the jobs at once rather than tomorrow, call POST /recurrences/{recurrence}/generate.
The rule is checked when saved: an unsupported part is a 422 that names it. template.title is required. Ids in the body and the template must be your organization's.
curl -X POST 'https://api.closepact.com/v1/api/recurrences' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"lead_time_days": 21,
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "06:30",
"duration_minutes": 120
}
}'{
"data": {
"id": "01a15c30-6f70-7364-b5c6-d7e82f354189",
"sub_entity_id": null,
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"customer": {
"id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"name": "Brf Linden",
"customer_number": "10231"
},
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "06:30",
"duration_minutes": 120
},
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"next_run_on": "2026-11-02",
"status": "active",
"lead_time_days": 21,
"last_generated_at": null,
"created_at": "2026-10-20T10:12:00+00:00",
"updated_at": "2026-10-20T10:12:00+00:00"
}
}Request body
application/json · required
account_idstring(uuid)requiredThe customer. Must be one of your organization's.
sub_entity_idstring(uuid)nullableThe office (sub-entity) it belongs to. Must be one of yours.
rrulestringrequiredThe rule, e.g.
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO. A leadingRRULE:is accepted. Supported:FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU),COUNT,UNTIL(not both). Anything else is a 422 naming the part.at most 500 characters
templateobjectrequiredWhat each generated job looks like. Only these keys exist; any other key is refused with 422 (a misspelt
titelwould otherwise be dropped silently).starts_onstring(date)requiredFirst day. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullableLast day, or null; not before
starts_on. Calendar date,YYYY-MM-DD.lead_time_daysintegerHow far ahead to write jobs, 1–120 days. Default 14.
1–120
statusstringactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompleted
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
dataobjectrequiredA standing agreement (återkommande avtal) — "every other Monday, stairwell cleaning" — and the rule that writes its jobs.
idstring(uuid)requiredThe recurrence id.
sub_entity_idstring(uuid)nullablerequiredThe office (sub-entity) it belongs to, and every job it writes; or null.
account_idstring(uuid)requiredThe customer.
customerobjectnullablerequiredThe customer, or null where not loaded (the
recurrenceinside a generate result).rrulestringrequirediCalendar recurrence rule (RFC 5545), limited to
FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU, no positions),COUNTandUNTIL. Weeks start on Monday.templateobjectrequiredWhat each generated job looks like. Only these keys exist; any other key is refused with 422 (a misspelt
titelwould otherwise be dropped silently).starts_onstring(date)requiredFirst day of the agreement. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullablerequiredLast day, or null for open-ended. Calendar date,
YYYY-MM-DD.next_run_onstring(date)nullablerequiredThe next date the rule will write a job for, or null when it has run out. Calendar date,
YYYY-MM-DD.statusstringrequiredactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompletedlead_time_daysintegerrequiredHow far ahead jobs are written, in days (1–120).
last_generated_atstring(date-time)nullablerequiredWhen jobs were last generated, or null.
created_atstring(date-time)requiredISO 8601 date-time, in UTC.
updated_atstring(date-time)requiredISO 8601 date-time, in UTC.
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 422The request body or query failed validation.Errors
- 429The key has made more requests this minute than its limit allows.Errors
Get a recurrence
/recurrences/{recurrence}One standing agreement. The jobs it has written are work orders with source recurrence.
curl 'https://api.closepact.com/v1/api/recurrences/01a14f2c-7c1e-7d0b-9a3e-3f5b2c8d1e40' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY"{
"data": {
"id": "01a15c30-6f70-7364-b5c6-d7e82f354189",
"sub_entity_id": null,
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"customer": {
"id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"name": "Brf Linden",
"customer_number": "10231"
},
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "06:30",
"duration_minutes": 120
},
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"next_run_on": "2026-11-30",
"status": "active",
"lead_time_days": 21,
"last_generated_at": "2026-11-02T03:00:12+00:00",
"created_at": "2026-10-20T10:12:00+00:00",
"updated_at": "2026-11-02T03:00:12+00:00"
}
}Path parameters
recurrencestring(uuid)requiredThe recurrence id.
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
dataobjectrequiredA standing agreement (återkommande avtal) — "every other Monday, stairwell cleaning" — and the rule that writes its jobs.
idstring(uuid)requiredThe recurrence id.
sub_entity_idstring(uuid)nullablerequiredThe office (sub-entity) it belongs to, and every job it writes; or null.
account_idstring(uuid)requiredThe customer.
customerobjectnullablerequiredThe customer, or null where not loaded (the
recurrenceinside a generate result).rrulestringrequirediCalendar recurrence rule (RFC 5545), limited to
FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU, no positions),COUNTandUNTIL. Weeks start on Monday.templateobjectrequiredWhat each generated job looks like. Only these keys exist; any other key is refused with 422 (a misspelt
titelwould otherwise be dropped silently).starts_onstring(date)requiredFirst day of the agreement. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullablerequiredLast day, or null for open-ended. Calendar date,
YYYY-MM-DD.next_run_onstring(date)nullablerequiredThe next date the rule will write a job for, or null when it has run out. Calendar date,
YYYY-MM-DD.statusstringrequiredactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompletedlead_time_daysintegerrequiredHow far ahead jobs are written, in days (1–120).
last_generated_atstring(date-time)nullablerequiredWhen jobs were last generated, or null.
created_atstring(date-time)requiredISO 8601 date-time, in UTC.
updated_atstring(date-time)requiredISO 8601 date-time, in UTC.
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 404No such record in this organization.Errors
- 429The key has made more requests this minute than its limit allows.Errors
Update a recurrence
/recurrences/{recurrence}Changes the agreement. template is merged into the stored template: send only the keys to change, and a key set to null to remove it. Changing rrule, starts_on or ends_on recomputes next_run_on.
Jobs already written are left alone — they may be assigned or already worked on. Move or cancel the ones the change makes wrong; pause the agreement with status: paused.
curl -X PATCH 'https://api.closepact.com/v1/api/recurrences/01a14f2c-7c1e-7d0b-9a3e-3f5b2c8d1e40' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "paused",
"template": {
"start_time": "07:00"
}
}'{
"data": {
"id": "01a15c30-6f70-7364-b5c6-d7e82f354189",
"sub_entity_id": null,
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"customer": {
"id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"name": "Brf Linden",
"customer_number": "10231"
},
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "07:00",
"duration_minutes": 120
},
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"next_run_on": "2026-11-30",
"status": "paused",
"lead_time_days": 21,
"last_generated_at": "2026-11-02T03:00:12+00:00",
"created_at": "2026-10-20T10:12:00+00:00",
"updated_at": "2026-11-10T08:00:00+00:00"
}
}Path parameters
recurrencestring(uuid)requiredThe recurrence id.
Request body
application/json · required
account_idstring(uuid)The customer. Must be one of your organization's.
sub_entity_idstring(uuid)nullableThe office (sub-entity) it belongs to. Must be one of yours.
rrulestringThe rule, e.g.
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO. A leadingRRULE:is accepted. Supported:FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU),COUNT,UNTIL(not both). Anything else is a 422 naming the part.at most 500 characters
starts_onstring(date)First day. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullableLast day, or null; not before
starts_on. Calendar date,YYYY-MM-DD.lead_time_daysintegerHow far ahead to write jobs, 1–120 days. Default 14.
1–120
statusstringactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompletedtemplateobjectKeys to change in the template; the others are kept. Sending
nullremoves a key that may be empty (description,contact_id,service_address_id,agreed_price_cents,rot_rut_share,estimated_minutes). The result must still have atitle.
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
dataobjectrequiredA standing agreement (återkommande avtal) — "every other Monday, stairwell cleaning" — and the rule that writes its jobs.
idstring(uuid)requiredThe recurrence id.
sub_entity_idstring(uuid)nullablerequiredThe office (sub-entity) it belongs to, and every job it writes; or null.
account_idstring(uuid)requiredThe customer.
customerobjectnullablerequiredThe customer, or null where not loaded (the
recurrenceinside a generate result).rrulestringrequirediCalendar recurrence rule (RFC 5545), limited to
FREQ=DAILY|WEEKLY|MONTHLY,INTERVAL,BYDAY(MO…SU, no positions),COUNTandUNTIL. Weeks start on Monday.templateobjectrequiredWhat each generated job looks like. Only these keys exist; any other key is refused with 422 (a misspelt
titelwould otherwise be dropped silently).starts_onstring(date)requiredFirst day of the agreement. Calendar date,
YYYY-MM-DD.ends_onstring(date)nullablerequiredLast day, or null for open-ended. Calendar date,
YYYY-MM-DD.next_run_onstring(date)nullablerequiredThe next date the rule will write a job for, or null when it has run out. Calendar date,
YYYY-MM-DD.statusstringrequiredactiveagreements write jobs;pausedones wait (a customer away for the summer);completedones have run out — set by the generator when the rule produces no more dates, or by you.One of
activepausedcompletedlead_time_daysintegerrequiredHow far ahead jobs are written, in days (1–120).
last_generated_atstring(date-time)nullablerequiredWhen jobs were last generated, or null.
created_atstring(date-time)requiredISO 8601 date-time, in UTC.
updated_atstring(date-time)requiredISO 8601 date-time, in UTC.
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 404No such record in this organization.Errors
- 422The request body or query failed validation.Errors
- 429The key has made more requests this minute than its limit allows.Errors
Delete a recurrence
/recurrences/{recurrence}Deletes the agreement. The jobs it wrote are kept, so work done under it can still be invoiced; they simply stop pointing at it. To stop an agreement for a while, pause it instead.
curl -X DELETE 'https://api.closepact.com/v1/api/recurrences/01a14f2c-7c1e-7d0b-9a3e-3f5b2c8d1e40' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY"{
"deleted": true
}Path parameters
recurrencestring(uuid)requiredThe recurrence id.
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
deletedbooleanrequiredOne of
true
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 404No such record in this organization.Errors
- 429The key has made more requests this minute than its limit allows.Errors
Generate jobs now
/recurrences/{recurrence}/generateRuns the nightly generator for this agreement now: writes a work order for every date from today to the horizon (today + lead_time_days, or ends_on if earlier) that does not have one yet, at most 200 per run. Safe to repeat — dates that already have a job, including ones deleted on purpose, are counted as skipped, never written twice.
With dry_run=true nothing is written: dates shows what would be considered and created is 0. A run updates last_generated_at and next_run_on, and marks the agreement completed when its rule has no dates left. Only an active agreement can be generated (409 otherwise).
curl -X POST 'https://api.closepact.com/v1/api/recurrences/01a14f2c-7c1e-7d0b-9a3e-3f5b2c8d1e40/generate' \
-H "Authorization: Bearer $CLOSEPACT_API_KEY"{
"data": {
"created": 2,
"skipped": 0,
"horizon": "2026-11-23",
"dates": [
"2026-11-02",
"2026-11-16"
],
"work_orders": [
{
"id": "01a15c31-7081-7475-86d7-e8f9304652a1",
"order_number": "1051",
"title": "Trappstädning – Brf Linden, Storgatan 12",
"occurrence_date": "2026-11-02",
"planned_start": "2026-11-02T05:30:00+00:00"
},
{
"id": "01a15c31-7082-7586-97e8-f90a415763b2",
"order_number": "1052",
"title": "Trappstädning – Brf Linden, Storgatan 12",
"occurrence_date": "2026-11-16",
"planned_start": "2026-11-16T05:30:00+00:00"
}
],
"recurrence": {
"id": "01a15c30-6f70-7364-b5c6-d7e82f354189",
"sub_entity_id": null,
"account_id": "01a15c02-4e1a-7b3c-9d2e-5f60a7b8c901",
"customer": null,
"rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=MO",
"template": {
"title": "Trappstädning – Brf Linden, Storgatan 12",
"service_address_id": "01a15c02-4e1c-7d5e-9f40-7182c9daeb23",
"price_model": "fixed",
"agreed_price_cents": 145000,
"start_time": "06:30",
"duration_minutes": 120
},
"starts_on": "2026-11-02",
"ends_on": "2027-06-28",
"next_run_on": "2026-11-30",
"status": "active",
"lead_time_days": 21,
"last_generated_at": "2026-11-02T08:14:00+00:00",
"created_at": "2026-10-20T10:12:00+00:00",
"updated_at": "2026-11-02T08:14:00+00:00"
}
}
}Path parameters
recurrencestring(uuid)requiredThe recurrence id.
Query parameters
dry_runbooleantrueto see the dates without writing anything. May also be sent in the body.Default
false
Responses
Headers
X-RateLimit-Limit— Requests this key may make per minute.X-RateLimit-Remaining— Requests left in the current minute.
dataobjectrequiredThe result of running the generator for one agreement.
createdintegerrequiredJobs written by this run. 0 for a dry run.
skippedintegerrequiredDates that already had a job (written by an earlier run, or deleted on purpose).
horizonstring(date)requiredThe last date this run looked at: today plus
lead_time_days, orends_onif earlier. Calendar date,YYYY-MM-DD.datesarray of strings(date)requiredEvery date from today to the horizon the rule produces (at most 200), whether written now or before.
work_ordersarray of objectsrequiredThe jobs written by this run.
recurrenceobjectrequiredA standing agreement (återkommande avtal) — "every other Monday, stairwell cleaning" — and the rule that writes its jobs.
- 401No key, or the key is invalid, revoked or expired, or its creator no longer has access.Errors
- 402The organization has not bought the module this endpoint belongs to, or it has lapsed to read-only, or its tier does not include what the operation needs:Errors
featurenames the capability (the operation'sx-feature) andrequired_tierthe cheapest tier that grants it. Every operation answers this with"feature": "core.api"when no module the organization holds is on a tier that includes the API. - 403The key lacks the scope, or the member it acts as lacks the permission or holds no seat in the module (Errors
module_seat_required— an administrator assigns seats under Settings → Users), or the organization is suspended. - 404No such record in this organization.Errors
- 422The request body or query failed validation.Errors
- 429The key has made more requests this minute than its limit allows.Errors