Schedules
The AI Readiness routes for schedules. The other areas are listed on the AI Readiness reference.
Every route below follows the conventions in Work with the BI Pixie API. You can also download the OpenAPI document.
List the account's schedules #
GET /v1/aiReadiness/schedules
Returns the schedules of every license the signed-in person may see, as the portal's Schedules page shows them: an account admin sees every active license's, a member their own. A schedule runs assessments on a cadence, of the semantic models and data agents it names, or of every tracked semantic model when it is the license's catch-all. Scheduled assessments are an Enterprise capability; another plan answers 403 FeatureNotInPlan. Requires the Enterprise plan.
- Scope
- BIPixie.Read.All
- Plan
- Every plan
- Counts against
- Calls that read, 300 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
licenseId | query | string | No | Return only this license's schedules. |
Responses
200. The schedules.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
value | array of Schedule | Yes | |
scheduleId | string | Yes | Chosen by the caller when the schedule is created; 1 to 40 characters of a-z, 0-9 and hyphens. |
licenseId | string | Yes | |
name | string or null | No | |
cadence | string | Yes | One of daily, weekly, biweekly, monthly. |
day | integer or null | No | The day of the week (0 is Monday) for a weekly or biweekly cadence, the day of the month for a monthly one; null for daily. |
hour | integer | Yes | The hour of the day the schedule runs, in its timezone. |
timezone | string | Yes | An IANA timezone name. |
paused | boolean | Yes | |
nextRunAtUtc | string or null (date-time) | No | |
lastRunAtUtc | string or null (date-time) | No | |
semanticModelIds | array of string | Yes | |
allTrackedSemanticModels | boolean | Yes | Whether the schedule is the license's catch-all, assessing every tracked semantic model, including ones added later, minus what another schedule names. At most one per license. |
dataAgentIds | array of string | Yes | |
lastResult | one of ScheduleLastResult, null | No |
Errors
Every refusal is an ErrorResponse with a stable errorCode. See Errors for what each HTTP status means and every code the API can return.
This is an example of a refusal. Every refusal has the same fields.
HTTP/1.1 404 Not Found
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"errorCode": "ItemNotFound",
"message": "No item with this id is visible to the signed-in person in this workspace, or it is not of the type the route takes.",
"isRetriable": false,
"moreDetails": [],
"relatedResource": {
"resourceId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"resourceType": "SemanticModel"
},
"parameters": [
{
"name": "itemId",
"value": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa"
}
],
"requestId": "cbf21b6d-b661-4b52-88cb-d79712e504fc"
} Example
curl -i -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.bipixie.com/v1/aiReadiness/schedules" An example of what the call answers. The values are fictional.
HTTP/1.1 200 OK
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"value": [
{
"scheduleId": "1617e773-d9ac-49ba-b2a7-eba9c9bef050",
"licenseId": "da8ba1ab-3ead-4748-9693-f27175096ee6",
"name": "Contoso Sales",
"cadence": "daily",
"day": 3,
"hour": 6,
"timezone": "UTC",
"paused": true,
"nextRunAtUtc": "2026-09-15T06:00:00Z",
"lastRunAtUtc": "2026-09-14T09:42:17Z",
"semanticModelIds": [
"f1fdc461-3ca1-4702-ae48-afc3522409fc"
],
"allTrackedSemanticModels": true,
"dataAgentIds": [
"05dd87d1-624f-4ffa-ab88-ee231a75a904"
],
"lastResult": null
}
]
} Get a schedule #
GET /v1/aiReadiness/schedules/{scheduleId}
Returns one schedule the signed-in person may see. Scheduled assessments are an Enterprise capability; another plan answers 403 FeatureNotInPlan. Requires the Enterprise plan.
- Scope
- BIPixie.Read.All
- Plan
- Every plan
- Counts against
- Calls that read, 300 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
scheduleId | path | string | Yes | The schedule's id, chosen by the caller when the schedule is created: 1 to 40 characters of a-z, 0-9 and hyphens, starting with a letter or a digit. It is read without regard to case. |
licenseId | query | string | No | The license the schedule belongs to; every license the person may see, when left out. |
Responses
200. The schedule.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
scheduleId | string | Yes | Chosen by the caller when the schedule is created; 1 to 40 characters of a-z, 0-9 and hyphens. |
licenseId | string | Yes | |
name | string or null | No | |
cadence | string | Yes | One of daily, weekly, biweekly, monthly. |
day | integer or null | No | The day of the week (0 is Monday) for a weekly or biweekly cadence, the day of the month for a monthly one; null for daily. |
hour | integer | Yes | The hour of the day the schedule runs, in its timezone. |
timezone | string | Yes | An IANA timezone name. |
paused | boolean | Yes | |
nextRunAtUtc | string or null (date-time) | No | |
lastRunAtUtc | string or null (date-time) | No | |
semanticModelIds | array of string | Yes | |
allTrackedSemanticModels | boolean | Yes | Whether the schedule is the license's catch-all, assessing every tracked semantic model, including ones added later, minus what another schedule names. At most one per license. |
dataAgentIds | array of string | Yes | |
lastResult | one of ScheduleLastResult, null | No |
Errors
Every refusal is an ErrorResponse with a stable errorCode. See Errors for what each HTTP status means and every code the API can return.
This is an example of a refusal. Every refusal has the same fields.
HTTP/1.1 404 Not Found
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"errorCode": "ItemNotFound",
"message": "No item with this id is visible to the signed-in person in this workspace, or it is not of the type the route takes.",
"isRetriable": false,
"moreDetails": [],
"relatedResource": {
"resourceId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"resourceType": "SemanticModel"
},
"parameters": [
{
"name": "itemId",
"value": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa"
}
],
"requestId": "cbf21b6d-b661-4b52-88cb-d79712e504fc"
} Example
curl -i -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.bipixie.com/v1/aiReadiness/schedules/$SCHEDULE_ID" An example of what the call answers. The values are fictional.
HTTP/1.1 200 OK
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"scheduleId": "1617e773-d9ac-49ba-b2a7-eba9c9bef050",
"licenseId": "da8ba1ab-3ead-4748-9693-f27175096ee6",
"name": "Contoso Sales",
"cadence": "daily",
"day": 3,
"hour": 6,
"timezone": "UTC",
"paused": true,
"nextRunAtUtc": "2026-09-15T06:00:00Z",
"lastRunAtUtc": "2026-09-14T09:42:17Z",
"semanticModelIds": [
"f1fdc461-3ca1-4702-ae48-afc3522409fc"
],
"allTrackedSemanticModels": true,
"dataAgentIds": [
"05dd87d1-624f-4ffa-ab88-ee231a75a904"
],
"lastResult": null
} Create or update a schedule #
PUT /v1/aiReadiness/schedules/{scheduleId}
Creates the schedule when the id is new, and updates it otherwise, with the rules the portal's editor has: a field left out keeps what is stored, a semantic model or data agent already on another schedule of the license is refused by that schedule's name (409 ScheduleConflict), one BI Pixie maintains is refused (400 OperationNotSupportedForItem), one belonging to another license is refused (409 ScheduleConflict), and a license holds at most 20 schedules. A member writes the license they act under; an account admin names any license with licenseId, else the primary. Requires the Enterprise plan.
- Scope
- BIPixie.ReadWrite.All
- Plan
- Enterprise
- Counts against
- Calls that start work, 30 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
scheduleId | path | string | Yes | The schedule's id, chosen by the caller when the schedule is created: 1 to 40 characters of a-z, 0-9 and hyphens, starting with a letter or a digit. It is read without regard to case. |
Request body
JSON, ScheduleRequest. The body is required.
| Field | Type | Required | Description |
|---|---|---|---|
licenseId | string | No | The license to hold the schedule, one of the account's active licenses the caller may manage: any for an account admin, their own for a member. Left out, a schedule already holding this id on one of those licenses is the one updated, and a new one is created on the caller's own; an id held on more than one license is refused until licenseId says which. |
name | string | No | |
cadence | string | No | One of daily, weekly, biweekly, monthly. |
day | integer or null | No | |
hour | integer | No | |
timezone | string | No | An IANA timezone name. Kept when left out on an existing schedule; UTC for a new one. |
semanticModelIds | array of string (uuid) | No | |
allTrackedSemanticModels | boolean | No | |
dataAgentIds | array of string (uuid) | No | |
paused | boolean | No |
Responses
200. The schedule as saved.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
scheduleId | string | Yes | Chosen by the caller when the schedule is created; 1 to 40 characters of a-z, 0-9 and hyphens. |
licenseId | string | Yes | |
name | string or null | No | |
cadence | string | Yes | One of daily, weekly, biweekly, monthly. |
day | integer or null | No | The day of the week (0 is Monday) for a weekly or biweekly cadence, the day of the month for a monthly one; null for daily. |
hour | integer | Yes | The hour of the day the schedule runs, in its timezone. |
timezone | string | Yes | An IANA timezone name. |
paused | boolean | Yes | |
nextRunAtUtc | string or null (date-time) | No | |
lastRunAtUtc | string or null (date-time) | No | |
semanticModelIds | array of string | Yes | |
allTrackedSemanticModels | boolean | Yes | Whether the schedule is the license's catch-all, assessing every tracked semantic model, including ones added later, minus what another schedule names. At most one per license. |
dataAgentIds | array of string | Yes | |
lastResult | one of ScheduleLastResult, null | No |
400. The request is not well formed, and nothing was started, changed or counted. errorCode is InvalidRequest, or InvalidPreview for a preview that is not available. A body member the operation does not document is refused this way, and the message names it and the documented member closest to it.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
errorCode | string | Yes | Each code keeps its meaning once published. New codes can be added over time, and a code is never reused. One of InvalidRequest, InvalidPreview, PayloadTooLarge, BenchmarkQuestionsMissing, OperationNotSupportedForItem, Unauthorized, TokenExpired, InsufficientScopes, AppOnlyTokenNotSupported, UserNotRegistered, AccountNotActive, AdminRoleRequired, FeatureNotInPlan, FeatureTurnedOff, LicenseNotYours, TrackedItemLimitReached, LicenseTrackedItemLimitReached, FabricConsentRequired, FabricAccessDenied, WorkspaceNotFound, ItemNotFound, AssessmentNotFound, RunNotFound, AbTestNotFound, OperationNotFound, ScheduleNotFound, AiProviderNotFound, AiCredentialNotFound, OperationInProgress, OperationHasNoResult, ResultNotReady, ScheduleConflict, AiProviderConflict, ItemChanged, CapacityPaused, OperationExpired, RegionNotReady, CapacityRequired, CapacityUnpaid, StoreNotConnected, RequestBlocked, AssessmentDailyLimitReached, BenchmarkRunsExhausted, OptimizationApplyDailyLimitReached, FirstLookLimitReached, BenchmarkBuildLimitReached, FabricUnavailable, StoreUnavailable, ThrottleStoreUnavailable, UnknownError. |
message | string | Yes | |
isRetriable | boolean | No | |
moreDetails | array of object | No | |
relatedResource | object or null | No | |
resourceId | string | No | |
resourceType | string | No | |
parameters | array of object | No | |
name | string | Yes | |
value | string | Yes | |
requestId | string (uuid) | Yes |
Errors
Every refusal is an ErrorResponse with a stable errorCode. See Errors for what each HTTP status means and every code the API can return.
This is an example of a refusal. Every refusal has the same fields.
HTTP/1.1 404 Not Found
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"errorCode": "ItemNotFound",
"message": "No item with this id is visible to the signed-in person in this workspace, or it is not of the type the route takes.",
"isRetriable": false,
"moreDetails": [],
"relatedResource": {
"resourceId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"resourceType": "SemanticModel"
},
"parameters": [
{
"name": "itemId",
"value": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa"
}
],
"requestId": "cbf21b6d-b661-4b52-88cb-d79712e504fc"
} Example
curl -i -X PUT \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Every tracked semantic model, each morning",
"cadence": "daily",
"hour": 6,
"timezone": "UTC",
"allTrackedSemanticModels": true
}' \
"https://api.bipixie.com/v1/aiReadiness/schedules/$SCHEDULE_ID" An example of what the call answers. The values are fictional.
HTTP/1.1 200 OK
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"scheduleId": "1617e773-d9ac-49ba-b2a7-eba9c9bef050",
"licenseId": "da8ba1ab-3ead-4748-9693-f27175096ee6",
"name": "Contoso Sales",
"cadence": "daily",
"day": 3,
"hour": 6,
"timezone": "UTC",
"paused": true,
"nextRunAtUtc": "2026-09-15T06:00:00Z",
"lastRunAtUtc": "2026-09-14T09:42:17Z",
"semanticModelIds": [
"f1fdc461-3ca1-4702-ae48-afc3522409fc"
],
"allTrackedSemanticModels": true,
"dataAgentIds": [
"05dd87d1-624f-4ffa-ab88-ee231a75a904"
],
"lastResult": null
} Delete a schedule #
DELETE /v1/aiReadiness/schedules/{scheduleId}
Deletes the schedule. The semantic models and data agents it assessed simply stop being assessed on a timer. Requires the Enterprise plan.
- Scope
- BIPixie.ReadWrite.All
- Plan
- Enterprise
- Counts against
- Calls that start work, 30 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
scheduleId | path | string | Yes | The schedule's id, chosen by the caller when the schedule is created: 1 to 40 characters of a-z, 0-9 and hyphens, starting with a letter or a digit. It is read without regard to case. |
licenseId | query | string | No | The license the schedule belongs to; the caller's own, when left out. |
Responses
204. Deleted.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
400. The request is not well formed, and nothing was started, changed or counted. errorCode is InvalidRequest, or InvalidPreview for a preview that is not available. A body member the operation does not document is refused this way, and the message names it and the documented member closest to it.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
errorCode | string | Yes | Each code keeps its meaning once published. New codes can be added over time, and a code is never reused. One of InvalidRequest, InvalidPreview, PayloadTooLarge, BenchmarkQuestionsMissing, OperationNotSupportedForItem, Unauthorized, TokenExpired, InsufficientScopes, AppOnlyTokenNotSupported, UserNotRegistered, AccountNotActive, AdminRoleRequired, FeatureNotInPlan, FeatureTurnedOff, LicenseNotYours, TrackedItemLimitReached, LicenseTrackedItemLimitReached, FabricConsentRequired, FabricAccessDenied, WorkspaceNotFound, ItemNotFound, AssessmentNotFound, RunNotFound, AbTestNotFound, OperationNotFound, ScheduleNotFound, AiProviderNotFound, AiCredentialNotFound, OperationInProgress, OperationHasNoResult, ResultNotReady, ScheduleConflict, AiProviderConflict, ItemChanged, CapacityPaused, OperationExpired, RegionNotReady, CapacityRequired, CapacityUnpaid, StoreNotConnected, RequestBlocked, AssessmentDailyLimitReached, BenchmarkRunsExhausted, OptimizationApplyDailyLimitReached, FirstLookLimitReached, BenchmarkBuildLimitReached, FabricUnavailable, StoreUnavailable, ThrottleStoreUnavailable, UnknownError. |
message | string | Yes | |
isRetriable | boolean | No | |
moreDetails | array of object | No | |
relatedResource | object or null | No | |
resourceId | string | No | |
resourceType | string | No | |
parameters | array of object | No | |
name | string | Yes | |
value | string | Yes | |
requestId | string (uuid) | Yes |
Errors
Every refusal is an ErrorResponse with a stable errorCode. See Errors for what each HTTP status means and every code the API can return.
This is an example of a refusal. Every refusal has the same fields.
HTTP/1.1 404 Not Found
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
{
"errorCode": "ItemNotFound",
"message": "No item with this id is visible to the signed-in person in this workspace, or it is not of the type the route takes.",
"isRetriable": false,
"moreDetails": [],
"relatedResource": {
"resourceId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"resourceType": "SemanticModel"
},
"parameters": [
{
"name": "itemId",
"value": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa"
}
],
"requestId": "cbf21b6d-b661-4b52-88cb-d79712e504fc"
} Example
curl -i -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.bipixie.com/v1/aiReadiness/schedules/$SCHEDULE_ID" An example of what the call answers. The values are fictional.
HTTP/1.1 204 No Content
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc