Workroomly / DevelopersBuild with your business context
Browse developer guides · Errors & troubleshooting

Developer guide

Errors & troubleshooting

Resolve Workroomly API authentication, scope, event, OData and MCP failures using actual error contracts.

On this page

Capture the right evidence

Check both the HTTP status and the response body. Save X-Request-ID when present, the endpoint, time and a redacted description of the request. Do not paste keys, OAuth tokens or customer records into logs or support messages.

Public Query/Search/Events and OData errors use this envelope. For example, a permission failure returns:

{
  "error": {
    "code": "external_access_permission_denied",
    "message": "The API key does not allow this operation."
  }
}

Public validation messages can be intentionally general. Use the authenticated Query/Search/Event Explorer to inspect current fields and valid workroom choices. Their signed-in management responses do not necessarily have the same shape as external responses.

API credentials and permissions

HTTP / code What it means Next action
401 · external_access_authentication_failed Missing, malformed or invalid credential. Send the full key as Bearer; check for whitespace, a copied prefix or the wrong environment.
403 · external_access_permission_denied The credential cannot perform this request. Check activity/revocation, module permission, Data Access subspace grants and Developer-tools entitlement.
403 · data_access_key_read_only A Data Access key attempted to send an event. Use an explicitly scoped Integration key for the intended business operation.
403 · data_transfer_exhausted The workroom has exhausted its external Data Transfer allowance. Review usage in Billing/Data Access; add allowance or wait for reset. Repeated retries will not restore access.
503 · external_access_billing_unavailable The service cannot resolve required external-access billing. Retry later and contact support with the request ID if it persists.

Revoked or inactive keys are rejected with 403, not always 401. A key from another workroom cannot be repointed with X-Workroom-ID; create/use the intended workroom’s credential. The ordinary app login token is not an external API key.

Invalid requests and rate limits

HTTP / code What to check
422 · external_access_validation_failed Query/Search fields, filter operators/value types, resource names and required scope keys; or an invalid event envelope/business payload.
409 on Event Ingress The same API key/idempotency key was used for a different normalized payload. The current public wrapper uses external_access_validation_failed for this conflict too.
429 · external_access_throttled Reduce concurrency and request frequency; use bounded exponential backoff with jitter.
500 · external_access_server_error Retry a read or the exact same idempotent event submission with a bounded policy; retain the request ID.

Do not assume a Retry-After header exists. A 422 may mean a space UUID was supplied where a stable crm_space_key was needed. Copy the request scope from Query Explorer. An empty result is not necessarily an error: check the key’s workroom, subspace, filters, archive state and dataset visibility rules.

Events accepted but no record appears

HTTP 202 only acknowledges queuing. Find the returned event_id in Settings → Developers → Event Activity, in the same workroom as the key. Inspect pending, processing, succeeded, failed or dead_letter, then open the detail view to read the result.

A permanent business validation failure enters dead_letter. Transient/unexpected processing failures are retried up to five times. An owner/admin can replay an eligible failed/dead-letter event after resolving its cause. Do not create a new idempotency key to force another copy of the same business operation.

For Flow+ outgoing HTTP calls, inspect the workflow’s run history and destination response. Check configured authentication, public destination reachability, body mapping and the actual method’s retry behavior. The Events API does not provide an outgoing subscription-delivery log or generic webhook replay endpoint.

OData query and client failures

HTTP / code Resolution
400 · odata_option_unsupported Remove unsupported options such as $expand, $apply or $search and custom query parameters.
400 · odata_invalid_filter Use an exposed filterable field, supported operator/function and correctly typed literal.
400 · odata_invalid_select / odata_invalid_orderby Check allowed property names and ordering fields; remove duplicate or unknown columns.
400 · odata_invalid_skiptoken Restart the query. The continuation may be expired, changed, or tied to a different key/grant.
400 · odata_skip_limit_exceeded Use returned nextLink URLs instead of a direct offset above 10,000.
404 · odata_entity_set_not_found Discover the exact entity-set spelling at the service root.
404 · odata_entity_not_found Check the canonical UUID, key workroom/scopes and whether the record is still visible.
403 · odata_permission_denied The key does not permit the requested dataset.
405 · odata_read_only Use GET for analytics; perform supported business changes through an Integration event or authorized MCP tool.
429 · external_access_throttled Reduce refresh/request frequency.
429 · odata_concurrency_exceeded Reduce concurrent requests in this workroom.
503 · odata_capacity_unavailable / odata_throttle_capacity_unavailable Capacity controls are temporarily unavailable. Retry later.
504 · odata_query_timeout Narrow filters/columns and reduce the requested work before retrying.

If an analytics client repeatedly prompts for credentials, use Basic with a Data Access key as the password, and replace cached credentials after rotation. Integration keys cannot authenticate OData. Start from the service root and inspect metadata before adding filters. Power BI setup and refresh notes distinguish desktop import from online refresh.

MCP connection and execution failures

Use https://mcp.workroomly.com/mcp with a client that supports Streamable HTTP and OAuth. Allow the browser sign-in window to open, then sign in to Workroomly and authorize the connection. Use the remote server URL in your client’s configuration; an API-key header cannot replace OAuth consent.

If a tool is missing, check the connection’s read/write scopes, current membership and chosen product/subspaces. Some deployments use searched discovery. Reconnect to change granted permissions; do not substitute another workroom ID to bypass the grant.

Tool execution errors contain code, message, request_id, retryable and details. For permission_denied, inspect the grant and current native role. For validation_failed, inspect the arguments and discovered schema. invalid_backend_response means the service could not validate a backend result; retain the request ID for support. The MCP framework may report malformed tool input separately.

For a revision conflict, retrieve the current record and review changes before issuing a new mutation. After a network timeout, retain the original idempotency key and arguments. A pending approval is a business result, not a failed connection. Consult MCP results and safety guidance before retrying writes.

Need help with your integration?

Keep the request ID, endpoint and time of the failure. Remove credentials and private records before contacting Workroomly.