Troubleshooting Guide
Last updated: 2026-04-06 · 8 min read
API Errors
401 Unauthorized — "api key required"
Pass your API key in the request header. Use X-API-Key: ps_your_key or Authorization: Bearer ps_your_key.
403 Forbidden — email not yet verified
Click the verification link in your welcome email. Haven't received it? Use POST /api/resend-verification with your email, or check spam. The link expires after 72 hours.
400 Bad Request — invalid BPMN
Every BPMN process must have at least one End Event. Open your model in Camunda Modeler, fix the validation errors shown in the lower panel, then re-export and redeploy.
Common causes: missing End Event, unconnected sequence flows, missing task type on Service Tasks (add zeebe:taskDefinition type="...").
429 Too Many Requests — rate limit exceeded
Check the X-RateLimit-Reset header for when the window resets (Unix timestamp). Implement exponential backoff in your worker. Default limit: 300 requests/minute per IP.
Stuck Process Instances
Instance stuck at a Service Task indefinitely
The instance is waiting for a worker to pick up the job. Check:
- Your worker is running and polling the correct
type— must match thezeebe:taskDefinition typein your BPMN. - The worker is using the correct API key.
- Poll
GET /api/v1/jobs/activatewith the correct type and check the response — if it returns an empty jobs array, the type doesn't match.
If the job is returned, your worker logic is the issue. If it returns {"jobs":[]}, check the task type name matches exactly (case-sensitive).
Instance stuck at a User Task
User tasks require a human to claim and complete them. Use the Tasklist UI at /tasklist or call:
DMN / Decision Table Issues
DMN evaluation returns null / no matching row
With FIRST hit policy, if no row matches the inputs, the decision returns null. Check:
- Input column values are the correct type (number vs string —
600≠"600") - Range syntax uses
..not-— use[600..750] - Add a catch-all row (empty input cells) at the bottom as a default
Webhook Issues
Webhook not delivered / delivery showing 0 attempts
Check:
- Webhook is registered and enabled —
GET /api/webhooks - Your endpoint is publicly reachable (localhost URLs will fail in production)
- Your endpoint returns HTTP 2xx — any other status triggers a retry
- Check delivery logs at
GET /api/webhooks/logs
Use POST /api/webhooks/test to fire a synthetic payload to all registered endpoints.
Credit Issues
Insufficient credits error when starting an instance
Top up via the Wallet page. If you believe your balance is incorrect, check GET /api/usage for the full ledger and contact support@priostack.com with your X-Request-ID.
Debug Mode (A-0583)
Every API response includes an X-Request-ID header. Include this in support requests — it lets us correlate your request in server logs.
X-Request-ID from an error response when contacting support. Example: X-Request-ID: 3f8a2b1c9d4e5f6a