Troubleshooting

The 20 most common issues encountered when using Priostack, with causes and step-by-step fixes.

Authentication and Authorization

ProblemCauseFix
401 Unauthorized on every request Missing or invalid X-API-Key header, or the key was rotated/deleted. Check your key in Console → Settings → API Keys. Ensure the header name is exactly X-API-Key (case-insensitive). Verify the environment variable is set: echo $PRIOSTACK_API_KEY.
403 Forbidden on admin endpoint Using a standard API key on an endpoint that requires the admin key. Admin endpoints (/api/admin/*) require the ADMIN_KEY. Check Console → Settings for your admin key. Do not use your regular API key for admin operations.

Credits and Billing

ProblemCauseFix
402 Payment Required when starting instance Credit balance is zero. Free credits refresh every month; the balance is shown in Console → Billing. Your balance is shown on the Console dashboard. Subscribe to the credits.low webhook to get notified before exhaustion.
Credits deducted but process didn't start The BPMN parsed successfully and a credit was charged, but a runtime error immediately created an incident (e.g., missing required variable). Check Console → Incidents for the new instance. Resolve the incident and re-trigger the process. Note: credits are not refunded for incidents.

Job Workers

ProblemCauseFix
Job not activating (long poll returns empty) The type in your activate request doesn't match the zeebe:taskDefinition type in the BPMN. Check the BPMN XML for the exact task type string. Types are case-sensitive. Use the Console to inspect the deployed process definition.
Job activated twice by different workers Your worker processed the job but failed to call complete before the job deadline expired. Ensure your processing time is shorter than the job deadline. Increase the deadline via zeebe:taskDefinition retries="3" or reduce processing time. Make your handler idempotent using the job key for deduplication.
Job stuck in "active" state Worker activated the job but crashed before completing or failing it. The job deadline will expire and the job will return to the queue (typically after 30 minutes). You can manually fail the job via the Console → Process Instance → Jobs panel to accelerate this.

Process Execution

ProblemCauseFix
Process instance stuck (no incident) Instance is waiting at a Message Catch Event, Timer, or User Task with no worker or user to advance it. Check Console → Process Instance to see the current element. For message waits: send the correlated message. For timers: check the timer definition. For user tasks: assign and complete via Tasklist.
BPMN parse error on deploy Invalid XML syntax, missing required attributes, or unsupported BPMN elements. Validate your BPMN in the Designer before deploying. Check the error response body for specific element IDs and missing attributes.
Process not starting (200 OK but instance never appears) Race condition in monitoring, or the instance completed immediately (e.g., no tasks). Check GET /v1/process-instances?state=COMPLETED — the instance may have completed instantly. Add a small delay before querying, or use webhooks for reliable notification.
Exclusive gateway: "no sequence flow with true condition" None of the outgoing sequence flow conditions evaluated to true, and no default flow was defined. Add a default flow (flow without a condition, marked with a slash in BPMN diagrams) to handle the catch-all case. Ensure all possible variable states are covered.

DMN and FEEL

ProblemCauseFix
DMN decision not found The decisionId in the Business Rule Task doesn't match the deployed DMN decision. Check the id attribute of the <decision> element in your DMN file. IDs are case-sensitive. Redeploy if necessary.
FEEL evaluation error: variable not found A FEEL expression references a variable that isn't set on the process instance at that point. Check the process flow to ensure the variable is set before the FEEL expression is evaluated. Use the FEEL Playground to test expressions with sample values.
DMN hit policy UNIQUE: multiple rules matched Two or more rules in the decision table match the input, but the hit policy requires exactly one match. Review your decision table rules — they should be mutually exclusive when using UNIQUE. Add more specific conditions or switch to FIRST hit policy.

Webhooks

ProblemCauseFix
Webhook not firing Webhook URL is not registered, or the endpoint is returning non-2xx status. Check Console → Settings → Webhooks for your registered URL. Check the delivery log for failed attempts. Ensure your endpoint returns 200 within 10 seconds.
Webhook signature verification failing Using a framework that parses the body before you can read it raw (Express with JSON middleware). Read the raw body bytes before any parsing. In Express, use express.raw() instead of express.json() for the webhook route.

Performance and Limits

ProblemCauseFix
429 Too Many Requests Exceeding 300 requests/minute per API key. Implement retry with backoff using the X-RateLimit-Reset header. Use long-polling for job activation (counts as 1 request per 30s). See Rate Limits.
Memory issues with large variable payloads Storing large binary data or large arrays in process variables. Store large data externally (S3, database) and pass only the reference (URL, ID) as a process variable. Keep individual variable values under 1 MB.
Slow process instance queries Querying thousands of instances without filtering. Add state filters (?state=ACTIVE) and pagination (?limit=50&offset=0) to instance queries. Use webhooks for real-time notifications instead of polling.
Still stuck? Check the FAQ, search the Community Forum, or open a support ticket from the Console. Include your X-Request-ID header value from the failed request.