Skip to content

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

Parameters for List the account's schedules
Name In Type Required Description
licenseId query string No Return only this license's schedules.

Responses

200. The schedules.

Headers of the 200 response to List the account's schedules
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 200 response to List the account's schedules, ScheduleList
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.

Example refusal
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

Request
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.

Response, 200
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

Parameters for Get a schedule
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.

Headers of the 200 response to Get a schedule
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 200 response to Get a schedule, Schedule
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.

Example refusal
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

Request
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.

Response, 200
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

Parameters for Create or update a schedule
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.

Request body for Create or update a schedule
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.

Headers of the 200 response to Create or update a schedule
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 200 response to Create or update a schedule, Schedule
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.

Headers of the 400 response to Create or update a schedule
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 400 response to Create or update a schedule, ErrorResponse
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.

Example refusal
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

Request
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.

Response, 200
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

Parameters for Delete a schedule
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.

Headers of the 204 response to Delete a schedule
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.

Headers of the 400 response to Delete a schedule
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 400 response to Delete a schedule, ErrorResponse
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.

Example refusal
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

Request
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.

Response, 204
HTTP/1.1 204 No Content
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc

What's next