Pull workspace

Apply a reviewed sync from the other workspace into this workspace along a direct fork edge. Requires Admin access to both workspaces. Creates unmatched deployed workflows, overwrites mapped target drafts, and archives mapped targets whose sources were deleted or archived. Undeployed sources alone do not archive targets. Billing-enabled deployments require Enterprise. Billing-disabled deployments require forking to be enabled by deployment feature configuration, such as FORKING_ENABLED.

Send confirm: true, the fingerprint from a preview with identical choices, and a stable request ID. The example hash is illustrative. Changed or unresolved plans return 409 without applying. Identical retries return the committed operation; changed inputs with that ID return 409. Copies and deployment activation can finish after the transaction commits. Poll Get workspace operation before treating the target as ready. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

POST/api/v2/workspaces/{workspaceId}/fork/pull
X-API-Key<token>

Your Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.

In: header

Request examples use an API key. For OAuth, replace the X-API-Key header with Authorization: Bearer YOUR_ACCESS_TOKEN.

curl -X POST "https://www.sim.ai/api/v2/workspaces/string/fork/pull" \  -H "X-API-Key: YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "otherWorkspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94",    "requestId": "pull-support-2026-10-13",    "previewFingerprint": "c7d158e8cbc5137a2d0a4fc37ddaeb51a3b9757485679a6ad82a7de3fdac4e3a",    "confirm": true  }'
{
  "data": {
    "operationId": "e4f8d2b6-9a1c-4e3d-8b7f-5c0a2d9e6f13",
    "requestId": "pull-support-2026-10-13",
    "workspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94",
    "kind": "workspace_pull",
    "applied": true,
    "status": "processing",
    "resourceIds": [
      "destination_workflow_id"
    ],
    "issues": []
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "CONFLICT",
    "message": "The request conflicts with current resource state"
  }
}
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "Request body is too large"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}

Path parameters

workspaceId*string

Explicit current workspace scope.

Length1 <= length <= 128

Request body

application/json

Confirmed other-to-current choices, actual preview fingerprint, and stable request ID.

TypeScript definitions

Use the request body type in TypeScript.

Response body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json