Operations reference
The state and the result of work the API started.
Every route below follows the conventions in Work with the BI Pixie API. You can also download the OpenAPI document.
List operations #
GET /v1/operations
Returns the operations of the caller's account, newest first. Operations older than 7 days are not listed. The list shows each operation as it was last seen. The state of an operation is brought up to date when it is asked for by id.
- Scope
- BIPixie.Read.All
- Plan
- Every plan
- Counts against
- Asking about an operation, 500 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | string | No | Return only operations with this status. One of NotStarted, Running, Succeeded, Failed, Cancelled. |
maxResults | query | integer | No | The largest number of operations to return in one page. |
continuationToken | query | string | No | The token the previous page answered with. |
Responses
200. One page of operations.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
| Field | Type | Always present | Description |
|---|---|---|---|
value | array of OperationState | Yes | |
id | string (uuid) | Yes | |
status | string | Yes | NotStarted, Running, Succeeded and Failed are the statuses of a Fabric long-running operation. Cancelled is an addition. More statuses can be added over time. One of NotStarted, Running, Succeeded, Failed, Cancelled. |
operationType | string or null | No | |
createdTimeUtc | string (date-time) | Yes | |
lastUpdatedTimeUtc | string (date-time) | Yes | |
percentComplete | integer or null | Yes | How far along the operation is. Null while an operation is running and does not report its progress. |
resource | object | No | The item the operation works on. |
workspaceId | string or null | No | |
itemId | string or null | No | |
itemType | string or null | No | |
allowanceImpact | one of AllowanceImpact, null | No | What this operation spent from the plan's allowances. Null when nothing is known yet. A field is present only when its value is known. |
error | one of OperationError, null | No | Why the operation failed. Null unless the status is Failed. |
continuationToken | string | No | |
continuationUri | string (uri) | 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/operations" 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": [
{
"id": "3f4bc9c2-b27e-49df-9de1-a78801b93655",
"status": "NotStarted",
"operationType": "AssessSemanticModel",
"createdTimeUtc": "2026-06-03T14:12:00Z",
"lastUpdatedTimeUtc": "2026-09-14T09:42:17Z",
"percentComplete": 78,
"resource": {
"workspaceId": "e17c1b59-7a2e-491e-acdd-11434854bbb0",
"itemId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"itemType": "SemanticModel"
},
"allowanceImpact": null,
"error": null
}
],
"continuationToken": "eyJza2lwIjoxMDB9",
"continuationUri": "https://api.bipixie.com/v1/operations?continuationToken=eyJza2lwIjoxMDB9"
} Get the state of an operation #
GET /v1/operations/{operationId}
Returns the current state of an operation. While the operation is running, the Location header is this address and Retry-After says how long to wait before asking again. Once the operation has succeeded, Location is the address of its result. An operation that belongs to another account answers 404.
- Scope
- BIPixie.Read.All
- Plan
- Every plan
- Counts against
- Asking about an operation, 500 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
operationId | path | string (uuid) | Yes | The id from the x-ms-operation-id header of the call that started the work, which its body also carries as operationId. |
Responses
200. The state of the operation.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
x-ms-operation-id | The id of the operation. |
Location | Where to ask next. Absent when the operation failed or was cancelled. |
Retry-After | Seconds to wait before asking again. Present while the operation runs. |
| Field | Type | Always present | Description |
|---|---|---|---|
id | string (uuid) | Yes | |
status | string | Yes | NotStarted, Running, Succeeded and Failed are the statuses of a Fabric long-running operation. Cancelled is an addition. More statuses can be added over time. One of NotStarted, Running, Succeeded, Failed, Cancelled. |
operationType | string or null | No | |
createdTimeUtc | string (date-time) | Yes | |
lastUpdatedTimeUtc | string (date-time) | Yes | |
percentComplete | integer or null | Yes | How far along the operation is. Null while an operation is running and does not report its progress. |
resource | object | No | The item the operation works on. |
workspaceId | string or null | No | |
itemId | string or null | No | |
itemType | string or null | No | |
allowanceImpact | one of AllowanceImpact, null | No | What this operation spent from the plan's allowances. Null when nothing is known yet. A field is present only when its value is known. |
error | one of OperationError, null | No | Why the operation failed. Null unless the status is Failed. |
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/operations/$OPERATION_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
x-ms-operation-id: cd57b041-e44a-4dda-a4ff-02935ffb8c04
Location: https://api.bipixie.com/v1/operations/cd57b041-e44a-4dda-a4ff-02935ffb8c04/result
Retry-After: 5
{
"id": "3f4bc9c2-b27e-49df-9de1-a78801b93655",
"status": "NotStarted",
"operationType": "AssessSemanticModel",
"createdTimeUtc": "2026-06-03T14:12:00Z",
"lastUpdatedTimeUtc": "2026-09-14T09:42:17Z",
"percentComplete": 78,
"resource": {
"workspaceId": "e17c1b59-7a2e-491e-acdd-11434854bbb0",
"itemId": "d972b3f5-a2fa-47ec-94ff-0403a4d159fa",
"itemType": "SemanticModel"
},
"allowanceImpact": null,
"error": null
} Get the result of an operation #
GET /v1/operations/{operationId}/result
Returns what an operation produced once its status is Succeeded. An operation that is still running answers 409 with errorCode OperationInProgress and a Retry-After header. An operation that failed or was cancelled answers 409 with errorCode OperationHasNoResult, and its state carries the reason.
- Scope
- BIPixie.Read.All
- Plan
- Every plan
- Counts against
- Asking about an operation, 500 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
operationId | path | string (uuid) | Yes | The id from the x-ms-operation-id header of the call that started the work, which its body also carries as operationId. |
Responses
200. The result. Its shape depends on the type of the operation. An operation of type AssessSemanticModel answers an Assessment; one of type AssessDataAgent answers a DataAgentAssessment; one of type AssessSemanticModels answers a BulkAssessment. One of type GenerateBenchmarkQuestions or SaveBenchmarkQuestions answers BenchmarkQuestions. One of type AddPixies or RemovePixies answers a PixiesResult for one report, or a PixiesBulkResult when it was started on a workspace over many reports. One of type RunAbTest answers an AbTestResult, the run's comparison.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
x-ms-operation-id | The id of the operation. |
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/operations/$OPERATION_ID/result" 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
x-ms-operation-id: cd57b041-e44a-4dda-a4ff-02935ffb8c04
{
"assessmentId": "63654520-134e-4565-8a3f-030a1ae0eba7",
"workspaceId": "e17c1b59-7a2e-491e-acdd-11434854bbb0",
"workspaceName": "Contoso Sales Analytics",
"semanticModelId": "f1fdc461-3ca1-4702-ae48-afc3522409fc",
"semanticModelName": "Contoso Sales",
"assessedAtUtc": "2026-09-14T09:30:05Z",
"score": 78,
"scoreDataAgent": 78,
"findingsCount": 12,
"usage": {
"applied": true,
"state": "available",
"reason": "Not available for this item.",
"windowDays": 28,
"trackedReportCount": 12,
"access": "Granted",
"permission": "ConsentRequired",
"message": "ConsentRequired",
"consentUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id=ebc40edd-1874-4e14-a1e5-e21b45f6286a&response_type=code"
},
"regime": {
"id": "3f4bc9c2-b27e-49df-9de1-a78801b93655",
"usageInScoring": true,
"comparableWithPrevious": true
},
"stored": {
"location": "BIPixie",
"reason": "Not available for this item.",
"deliveryPending": true
},
"document": {
"schemaVersion": 3
}
} Cancel a benchmark run or an A/B run #
POST /v1/operations/{operationId}/cancel
Stops a benchmark run or an A/B run and answers as Fabric's own job cancel does, 202 with the operation to ask about. The operation then reads Cancelled, and asking for its result answers 409 with errorCode OperationHasNoResult. A run that finished before the stop was honoured keeps its result, and a run that had asked nothing yet is not counted. For an A/B run, the side that was asking is stopped, and the run's cancel, read with getAbRun, says which side it was and whether the run counted; an A/B run waiting for its owner's read is stopped at once, side B never starts, and side B's run is given back. Cancelling an operation that has already ended changes nothing and answers 202. Only a benchmark run or an A/B run can be cancelled: any other operation still running answers 409 with errorCode OperationInProgress. An operation that belongs to another account answers 404.
- Scope
- BIPixie.ReadWrite.All
- Plan
- Every plan
- Counts against
- Calls that start work, 30 a minute
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
operationId | path | string (uuid) | Yes | The id from the x-ms-operation-id header of the call that started the work, which its body also carries as operationId. |
Responses
202. The cancel was accepted. The body carries the operation's id and address.
| Header | Description |
|---|---|
x-ms-request-id | The id of this request. Quote it to support. |
x-ms-operation-id | The id of the operation. |
Location | The address of the operation's state. |
Retry-After | Seconds to wait before asking for the operation's state. |
To follow the work this call started, see Follow a long-running operation.
| Field | Type | Always present | Description |
|---|---|---|---|
operationId | string (uuid) | Yes | The operation's id, which the operation's state and result take. |
location | string (uri) | Yes | Where to ask about the operation. |
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 POST \
-H "Authorization: Bearer $TOKEN" \
"https://api.bipixie.com/v1/operations/$OPERATION_ID/cancel" An example of what the call answers. The values are fictional.
HTTP/1.1 202 Accepted
Content-Type: application/json
x-ms-request-id: cbf21b6d-b661-4b52-88cb-d79712e504fc
x-ms-operation-id: cd57b041-e44a-4dda-a4ff-02935ffb8c04
Location: https://api.bipixie.com/v1/operations/cd57b041-e44a-4dda-a4ff-02935ffb8c04/result
Retry-After: 5
{
"operationId": "cd57b041-e44a-4dda-a4ff-02935ffb8c04",
"location": "https://api.bipixie.com/v1/operations/cd57b041-e44a-4dda-a4ff-02935ffb8c04/cancel"
}