Skip to content

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

Parameters for List operations
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.

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

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/operations"

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": [
    {
      "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

Parameters for Get the state of an operation
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.

Headers of the 200 response to Get the state of an 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.
The 200 response to Get the state of an operation, OperationState
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.

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/operations/$OPERATION_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
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

Parameters for Get the result of an operation
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.

Headers of the 200 response to Get the result of an 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.

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/operations/$OPERATION_ID/result"

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

Parameters for Cancel a benchmark run or an A/B run
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.

Headers of the 202 response to Cancel a benchmark run or an A/B run
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.

The 202 response to Cancel a benchmark run or an A/B run, Accepted
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.

Headers of the 400 response to Cancel a benchmark run or an A/B run
Header Description
x-ms-request-id The id of this request. Quote it to support.
The 400 response to Cancel a benchmark run or an A/B run, 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 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.

Response, 202
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"
}

What's next