Common Errors
1. unexpected keyword argument on job submission
Error message:
TypeError: __init__() got an unexpected keyword argument 'noise_model'Cause: The worker passes all params fields to the script executor, but the script function does not accept that parameter. This happens when job parameters include optional fields (e.g., noise_model, extract_state_vector) that the target script does not expect.
Fix: The worker should filter parameters before passing them to the script. If you are writing a custom script, ensure your function signature accepts **kwargs or explicitly lists all expected parameters.
2. Sandbox import restriction in Temporal workflow
Error message:
RestrictedWorkflowAccessError: Cannot import module 'marqov' from within a workflowCause: Temporal’s workflow sandbox prevents importing arbitrary modules in workflow code. The marqov package cannot be imported inside a @workflow function or the JobWorkflow class.
Fix: All marqov-dependent logic must live in @task functions (Temporal activities), not in workflows. The workflow module receives pre-serialized JSON inputs only. See Script Debugging for details.
3. Circuit serialization failure
Error message:
TypeError: Object of type Circuit is not JSON serializableCause: Attempting to pass a marqov.Circuit object through Temporal’s JSON serializer. Temporal requires all workflow/activity inputs to be JSON-serializable.
Fix: Use circuit.to_dict() before passing circuits through Temporal, and Circuit.from_dict(data) to reconstruct on the other side.
4. Rate limit exceeded (429)
Error message:
{ "error": "Rate limit exceeded. 0/10 requests remaining. Try again in 45 seconds." }Cause: Too many requests in the rate limit window. Each endpoint has its own limit (see REST API Reference).
Fix: Wait for the duration specified in the Retry-After response header. Rate limiting uses Upstash Redis with a sliding window algorithm. If Redis is unreachable, rate limiting fails open (requests are allowed).
5. Budget exceeded (402)
Error message:
{
"error": "Monthly budget exceeded",
"estimated_cost": 0.30,
"current_spend": 99.85,
"budget": 100.00,
"remaining_budget": 0.15
}Cause: The estimated cost of the job would exceed the team’s daily or monthly budget.
Fix: Wait for the budget period to reset, or contact an admin to increase the team budget. Default limits are $100/day and $1,000/month per team.
6. Authentication failure (401)
Error message:
{ "error": "Unauthorized" }Cause: No valid Supabase session cookie present. The user is not logged in or the session has expired.
Fix: Log in again. If the error occurs on API calls from the frontend, ensure the Supabase client is initialized correctly and createClient() is called with the request context.
7. Worker timeout (502)
Error message:
{ "error": "Could not reach execution service. Please try again." }Cause: The platform could not reach the worker within the 90-second timeout, or the worker is down.
Fix:
- Check that the worker is running and healthy (
GET /healthreturns 200). - Check
WORKER_URLis configured correctly. - Check ECS service status if running on AWS.
- For long-running jobs, consider using
execution_mode: "temporal"instead ofdirect.
8. Temporal connection refused
Error message:
ConnectionRefusedError: [Errno 111] Connection refusedor
Failed to connect to Temporal at localhost:7233Cause: The Temporal server is not running or not reachable at the configured address.
Fix:
- Local: Start Temporal with
docker-compose up -dfromdocker/. - Production: Verify
TEMPORAL_ADDRESSandTEMPORAL_API_KEYare correct. Check network connectivity to Temporal Cloud.
9. Language detection failed (422)
Error message:
{
"error": "Could not detect quantum framework. Supported: Qiskit, Cirq, PennyLane, OpenQASM, Marqov. Select a language manually or add an import statement."
}Cause: The playground endpoint with language: "auto" could not determine the quantum framework from the code. This happens when code lacks recognizable import statements (e.g., from qiskit import ...).
Fix: Either add an import statement to the code, or explicitly set the language field to qiskit, cirq, pennylane, openqasm, or marqov.
10. Team suspended (403)
Error message:
{ "error": "Team is suspended. Contact support for assistance." }Cause: The team has been suspended by a platform admin. Suspended teams can read resources but cannot create or modify them.
Fix: Contact a platform admin to have the suspension lifted. The suspended_at timestamp on the teams table controls this.
11. S3 destination not configured
Error message:
ValueError: s3_destination_folder or s3_bucket+s3_prefix required for AWS device executionCause: An AWS Braket device was invoked without S3 configuration for storing results.
Fix: Ensure BRAKET_S3_BUCKET and BRAKET_S3_PREFIX environment variables are set, or pass s3_bucket and s3_prefix in the device params.
12. QASM parse error with pi expressions
Error message:
ValueError: could not convert string to float: 'pi/4'Cause: The QASM parser attempted to use parseFloat on a pi expression (e.g., rx(pi/4)). The browser simulator’s QASM parser must handle pi as a mathematical constant.
Fix: This is a platform bug if encountered in the browser simulator. Use the server-side execution mode as a workaround, or simplify QASM to use decimal values (e.g., rx(0.7853981633974483) instead of rx(pi/4)).
13. Monaco editor broken (no line numbers, visible textarea)
Cause: Monaco editor workers failed to load due to Cross-Origin-Embedder-Policy (COEP) headers. The default @monaco-editor/react configuration loads workers from a CDN, which is blocked by COEP.
Fix: Monaco must be bundled locally. The platform configuration in playground-editor.tsx already does this. If the issue recurs, check that import * as monaco from "monaco-editor" and loader.config({ monaco }) are present, and that window.MonacoEnvironment.getWorker is configured for same-origin workers.