> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scanova.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List bulk operations

> GET /bulk-operation/

Lists tracking records for the account's bulk operations, on the **Management API** host (`api.scanova.io`), authenticated with your raw Management API key.

```
GET https://api.scanova.io/bulk-operation/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
```

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.scanova.io/bulk-operation/" \
    -H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
      {
        "operation_id": "bo-8f3a1c",
        "name": "September event QR batch",
        "count": 500,
        "operation_type": "generate",
        "operation_type_display": "Generate",
        "status": "completed",
        "created": "2026-09-08T09:00:00Z",
        "result_file": "https://cdn.scanova.io/bulk/bo-8f3a1c/result.xlsx",
        "progress": 100,
        "error_message": null,
        "log_file": "https://cdn.scanova.io/bulk/bo-8f3a1c/log.csv",
        "failed_count": 0,
        "folder": null,
        "created_by": "Jane Doe",
        "qr_category": "website-url"
      }
    ]
  }
  ```
</ResponseExample>

This is the endpoint every async bulk endpoint tells you to poll. `status` moves from `new` to `completed`, `partially_completed`, or `failed`; `progress` is a 0–100 completion percentage. Once `status` isn't `new`, `result_file` and `log_file` (when relevant) hold download URLs.

Scope: the account's own operations, plus — for team accounts — operations created by any shared user, unless the call is made via account impersonation, in which case scope narrows to just the impersonated user.

## Related

* [Get bulk operation stats](/api-reference/management-api/bulk-operation/stats) — aggregate counts over this same list.
* [Rename a bulk operation](/api-reference/management-api/bulk-operation/rename) — relabel an entry here.
* [Management API overview](/api-reference/management-api/overview) — the auth scheme and quota rules that apply to this endpoint.


## OpenAPI

````yaml api-reference/openapi/management-api.json GET /bulk-operation/
openapi: 3.1.0
info:
  title: Scanova Management API (v2)
  description: >-
    The complete Scanova Management API — every endpoint available at
    api.scanova.io (QR codes, folders, tags, leads, forms, analytics, plans,
    shared users & roles), plus the token-creation and usage-stats endpoints
    used to authenticate against it. Every path and request/response shape below
    was verified live against a real API key and the actual running backend
    (Phase 7, 2026-08-16) — not guessed from reading urls.py alone.
  version: 2.0.0
servers:
  - url: https://api.scanova.io
    description: Management API — QR/folder/tag/lead/form/analytics/plans endpoints
security:
  - apiKeyAuth: []
paths:
  /bulk-operation/:
    get:
      summary: List bulk operations
      description: >-
        Tracking records for the account's own bulk operations, plus (for team
        accounts) operations created by shared users — unless called via account
        impersonation, which scopes strictly to the impersonated user. Poll this
        endpoint to watch `status` (`new` →
        `completed`/`partially_completed`/`failed`) and `progress` for an
        in-flight job.
      operationId: listBulkOperations
      responses:
        '200':
          description: Paginated list of bulk operations.
          content:
            application/json:
              example:
                count: 1
                next: null
                previous: null
                results:
                  - operation_id: bo-8f3a1c
                    name: September event QR batch
                    count: 500
                    operation_type: generate
                    operation_type_display: Generate
                    status: completed
                    created: '2026-09-08T09:00:00Z'
                    result_file: https://cdn.scanova.io/bulk/bo-8f3a1c/result.xlsx
                    progress: 100
                    error_message: null
                    log_file: https://cdn.scanova.io/bulk/bo-8f3a1c/log.csv
                    failed_count: 0
                    folder: null
                    created_by: Jane Doe
                    qr_category: website-url
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Send your Management API key as the raw value of the Authorization
        header — no "Bearer " or "Token " prefix, and no other characters.
        Example: `Authorization: 401f7ac837da42b97f613d789819ff93537bee6a`. A
        header containing more than one space-separated part is rejected
        outright. Requests also require the request's Host header to be the
        management API host (e.g. api.scanova.io) — the same key sent to the
        regular API host will not authenticate.

````