Schedules
Create and manage automated ingestion schedules. A schedule runs an ingestion job on a cron expression, automatically syncing data from a source into a dataset. All schedule endpoints live under the unprefixed /ingestion/schedules namespace.
All schedule, source, and dataset IDs are UUIDs.
Use the unprefixed /ingestion/schedules/... paths. The legacy /v1/ingestion/schedules/... prefix is deprecated, and /api/v1/... is not routed (404).
Schedule Object
| Field | Type | Description |
|---|---|---|
id | UUID | Unique schedule identifier |
org_id | UUID | Owning organization |
source_id | UUID | Source to ingest from |
dataset_id | UUID | Target dataset |
pipeline_id | UUID | null | Processing pipeline (defaults to the org default) |
cron | string | Cron expression |
timezone | string | IANA timezone the cron is evaluated in |
enabled | boolean | Whether the schedule is active |
next_run_at | string | null | ISO 8601 timestamp of the next run |
last_run_at | string | null | ISO 8601 timestamp of the last run |
resume_state | object | Incremental-sync resume state |
metadata | object | Arbitrary client metadata |
created_at | string | ISO 8601 timestamp |
updated_at | string | ISO 8601 timestamp |
List Schedules
GET /ingestion/schedules
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | Max results to return. Defaults to 50, max 200 | |
offset | integer | Pagination offset. Defaults to 0 |
- cURL
- Response
curl "https://api.vectoramp.com/ingestion/schedules?limit=50&offset=0" \
-H "X-API-Key: vsk_<64hex>"
{
"schedules": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"org_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"source_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"dataset_id": "550e8400-e29b-41d4-a716-446655440000",
"pipeline_id": null,
"cron": "0 */6 * * *",
"timezone": "America/New_York",
"enabled": true,
"next_run_at": "2026-04-25T18:00:00Z",
"last_run_at": null,
"resume_state": {},
"metadata": {},
"created_at": "2026-04-25T12:00:00Z",
"updated_at": "2026-04-25T12:00:00Z"
}
],
"total": 12,
"limit": 50,
"offset": 0
}
Get Schedule
GET /ingestion/schedules/:scheduleId
| Parameter | Type | In | Description |
|---|---|---|---|
scheduleId | UUID | path | Schedule identifier |
Returns a single schedule object.
curl https://api.vectoramp.com/ingestion/schedules/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
-H "X-API-Key: vsk_<64hex>"
Create Schedule
POST /ingestion/schedules
Request Body
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
source_id | UUID | ✅ | — | Source to ingest from |
dataset_id | UUID | ✅ | — | Target dataset |
cron | string | ✅ | — | Cron expression (e.g. 0 */6 * * *) |
pipeline_id | UUID | org default | Processing pipeline | |
timezone | string | UTC | IANA timezone the cron is evaluated in | |
enabled | boolean | true | Enable the schedule on creation | |
metadata | object | {} | Arbitrary metadata | |
resume_state | object | {} | Initial incremental-sync resume state |
- cURL
- Response 201
curl -X POST https://api.vectoramp.com/ingestion/schedules \
-H "X-API-Key: vsk_<64hex>" \
-H "Content-Type: application/json" \
-d '{
"source_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"dataset_id": "550e8400-e29b-41d4-a716-446655440000",
"cron": "0 */6 * * *",
"timezone": "America/New_York"
}'
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"org_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"source_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"dataset_id": "550e8400-e29b-41d4-a716-446655440000",
"pipeline_id": null,
"cron": "0 */6 * * *",
"timezone": "America/New_York",
"enabled": true,
"next_run_at": "2026-04-25T18:00:00Z",
"last_run_at": null,
"resume_state": {},
"metadata": {},
"created_at": "2026-04-25T12:00:00Z",
"updated_at": "2026-04-25T12:00:00Z"
}
Update Schedule
PATCH /ingestion/schedules/:scheduleId
All fields are optional; send only the fields you want to change.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
cron | string | Updated cron expression | |
timezone | string | Updated timezone | |
enabled | boolean | Enable or disable the schedule | |
metadata | object | Updated metadata | |
resume_state | object | Resume state for incremental syncs |
curl -X PATCH https://api.vectoramp.com/ingestion/schedules/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
-H "X-API-Key: vsk_<64hex>" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'
Returns the updated schedule object.
Delete Schedule
DELETE /ingestion/schedules/:scheduleId
Permanently deletes the schedule. Returns 204 No Content. Existing jobs that the schedule already started are not affected.
curl -X DELETE https://api.vectoramp.com/ingestion/schedules/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
-H "X-API-Key: vsk_<64hex>"
Trigger Schedule
POST /ingestion/schedules/:scheduleId/trigger
Manually trigger a schedule to run immediately, regardless of the cron expression. This starts a new ingestion job.
curl -X POST https://api.vectoramp.com/ingestion/schedules/b2c3d4e5-f6a7-8901-bcde-f12345678901/trigger \
-H "X-API-Key: vsk_<64hex>"