---
title: "CAD - execute compound (parallel) operations"
method: POST
path: "/api/v1/cad/compound"
tags: ["CAD Operations"]
---

# CAD - execute compound (parallel) operations

`POST /api/v1/cad/compound`

Runs multiple independent operations in parallel.

## Request body

- CompoundExecuteBody — Execute multiple independent Bitbybit CAD operations in parallel. Each item runs as a separate sub-task and can be polled individually.
  - `parallel` true, required — Must be true - signals that items should be processed concurrently
  - `items` CompoundItem[], required — List of independent CAD operations to execute in parallel. Each item becomes a sub-task.
    - `operation` string, required — Fully-qualified CAD operation identifier. Supports OCCT, Manifold, JSCAD, and vector/math operations.
    - `params` unknown
    - `inputFiles` InputFileItem[] — References to previously uploaded files to be used as inputs for this operation
      - `fileId` string, required — ID of a previously uploaded file (from POST /files/upload)
      - `role` string, required — Role identifier for the file (e.g. 'step-model', 'coordinates-csv')
    - `outputFormats` string[] — Per-item output format overrides. If omitted, the task produces raw result data.

## Response `202`

Compound task accepted

- CompoundTaskAcceptedResponse — HTTP 202 response when a compound (parallel) task is accepted
  - `ok` true, required
  - `data` CompoundTaskCreatedResult, required — Returned when a compound (parallel) task is accepted. Contains initial status for all sub-tasks.
    - `taskId` string, required — Parent compound task ID for tracking overall progress
    - `kind` 'compound', required
    - `subTaskCount` integer, required — Total number of sub-tasks created (one per item in the request)
    - `statusUrl` string, required — Relative URL to poll the parent task status
    - `subTasks` SubTaskSummary[], required
      - `taskId` string, required — Unique identifier for this sub-task (can be polled individually)
      - `index` integer, required — Zero-based position of this sub-task within the compound
      - `status` 'waiting' | 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled' | 'expired', required — Task lifecycle state: waiting (pending dependencies), queued (in queue), processing (actively computing), completed (result available), failed (error occurred), cancelled (user-cancelled), expired (result TTL exceeded)
      - `progress` number, nullable, required — Completion percentage (0–100) or null if not yet started
      - `computeMs` number, nullable, required — Actual compute time in milliseconds (null until completed)
      - `error` string, nullable, required — Error message if sub-task failed, null otherwise
      - `downloadFormats` string[], required — Available output format keys (e.g. ['glb', 'stpz']) for downloading results

## Other responses

- `400` — Validation error
- `500` — Server error

## Changes

- **2026-05-04** `43c3bc84d7c1` — 1 breaking, 1 info
  - removed the success response with the status `200`
  - added the success response with the status `202`
- **2026-04-30** `bef883f8a334` — 1 info
  - endpoint added
- **2026-04-17** `5eb4ed0f33c7` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/bitbybit-dev/apis/bitbybit-cad-cloud-api/changes/api/v1/cad/compound/post.md)

---

[API](https://skmtc.dev/bitbybit-dev/apis/bitbybit-cad-cloud-api.md) · [All operations](https://skmtc.dev/bitbybit-dev/apis/bitbybit-cad-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/bitbybit-dev/bitbybit-cad-cloud-api/revisions/1135d4473bc2/schema)
