How to read an error response
Different Hexel services return errors in different shapes. Knowing the format helps you parse the problem immediately.- Compute
- Data Platform
- Orchestration
- Tool Gateway
invalid_request (400), vm_not_found / not_found / skill_not_found (404), quota_exceeded (429), vm_unavailable / capacity_exhausted (503).Authentication
401 Unauthorized on every request
- Confirm your API key or client credentials are correct and not expired.
- Verify the credential is set:
HEXEL_API_KEY, orHEXEL_CLIENT_ID+HEXEL_CLIENT_SECRET. - Access tokens last 15 minutes. If you exchange them manually with curl, re-exchange after expiry. The SDKs refresh automatically.
403 Permission Denied
- Your credential is valid but lacks the required permission. Check the role assigned to the service user. Permissions follow the pattern
data-platform:<resource>:<action>ororchestrator:task:write.
- Each credential is scoped to a workspace and environment. Use the credential for the environment you intend to operate in.
Compute
Instance never reachesRunning
- Verify your image implements the agent contract:
GET /healthreturning{"status": "ok"}andGET /.well-known/agent.json. - Check logs for startup errors.
- For private registries, confirm pull credentials are correct.
- Deploy is only available via the REST API (
POST /compute/v1/agents/{agent_id}/instances) or thehexelCLI (hexel compute instance deploy <agent-id>). There is noinstance.deploy()in the SDKs.
Failed
- Inspect logs for the cause, fix the image or configuration, then redeploy with
client.compute.instance.redeploy()orhexel compute instance redeploy.
503 capacity_exhausted on sandbox or instance creation
- The requested tier has no available capacity. There is no auto-fallback to another tier. Wait and retry, or use a different tier if your workload allows it.
429 quota_exceeded on sandbox allocation
- You’ve hit the
ConcurrentSandboxeslimit. Release idle sandboxes or request a quota increase via Support.
Data Platform
RESOURCE.NOT_FOUND (404)
- The knowledge store, memory store, or datasource ID does not exist in the current environment. Verify the ID and that your credential targets the correct environment.
VALIDATION (400)
- A request parameter is invalid (e.g.,
chunk_sizeout of range, missing required field). Check the error message for the specific field.
- Tune
chunk_size,chunk_overlap, andscore_threshold. Keep stores focused on one domain. See Knowledge Stores.
- Confirm the source has a sync schedule and check Syncs for failed runs.
Orchestration
Task stuck inplan_review
- The plan needs approval. Review it via Approvals; pending approvals expire after 24 hours.
- Stream or replay the task to see where it failed. Task streams emit
task.submitted→task.state→task.error→task.failedevents with the error detail in the payload.
429 Too Many Requests on task submission
- Orchestration is limited to 100 requests per organization per minute. Batch submissions or implement a queue with backoff.
Tool Gateway
Tool call fails with an authorization error- Confirm the provider account is connected and the agent is bound to the toolkit.
- Check that the tool is not excluded by a workspace group allow-list.
- Use asynchronous execution and poll the call result. See Executing Tools.
Getting help faster
If a problem persists after the steps above:- Capture the exact error response (including
error_codeandrequest_idwhere present). - Note the
environment_id,workspace_id, and resource identifier (agent, instance, task, sandbox, or store). - Check Logs for the failing resource at the time of failure.
- Reach out through Support with those details.
Related pages
Authentication
Credential setup and tokens.
Logs
Find the root cause.
Error Handling
SDK retries and errors.
Support
Get more help.

