Errors, Execution States, and Limits

Interpret HTTP outcomes, response shapes, execution results and timing limits.

Use the HTTP response and execution result to understand whether a request was accepted, a report ran successfully or further investigation is needed.

HTTP outcomes

StatusWhat to do
200Read the selected operation’s response, including an empty body where documented.
400Inspect the rejection and correct the request.
401Check credentials, token extraction, bearer header and expiry.
403Check permissions for the operation and resource.
500Inspect details; input, database, permission and reporting failures can use this status.

An error body is not always JSON. Inspect status, content type and body presence before parsing. Keep the original error if body parsing fails. A 500 response is not automatically transient.

Error response examples

A message error can look like this illustrative response:

{"Message":"The request is invalid."}

Exception responses can also contain ExceptionMessage, ExceptionType or a stack trace. These fields are conditional. Store diagnostics securely and give end users a clear action without exposing raw infrastructure details.

Successful response shapes

OperationSuccessful representation
PingNumber 1.
IsSchedulerRunningBoolean.
GetConfigPathJSON string.
SingleSchedule/CloneInteger ID.
SingleSchedule/CreateObject containing UniqueId.
SingleSchedule/UpdateEmpty body.

Use each operation’s schema rather than forcing all responses into one wrapper object.

Execution acceptance and results

ExecuteScheduleAsync returns ExecutionId to acknowledge submission. ExecuteSchedule returns a result that must be inspected even with HTTP 200.

Keep the stored schedule ID, execution ID and process ID separate. For processes, retain the associated server name.

Execution states

GetExecutionStatus exposes an open string status:

State or categoryInterpretation
Waiting to start... or other waiting labelAwaiting execution; continue bounded monitoring.
ExecutingWork is active.
CompletedCheck ResultJson for success or failure.
Terminated by userInspect failure/cancellation details and partial output.
StaleInvestigate; an empty result is not success.
Unfamiliar valueRetain the original string and investigate without rejecting the entire response.

The table is not an exhaustive enum. An unset completion timestamp or missing result does not establish success.

Parse ResultJson separately

An illustrative execution response contains a JSON string:

{
  "ExecutionId": "EXAMPLE_EXECUTION_ID",
  "Status": "Completed",
  "ResultJson": "{\"Result\":true,\"ErrorMessage\":\"\",\"ErrorNumber\":0}"
}

After parsing the outer response, decode ResultJson:

{"Result":true,"ErrorMessage":"","ErrorNumber":0}

Require boolean Result: true for reported execution success. If it is false, missing or malformed, keep the evidence and follow monitoring and recovery. Then verify actual output as required by your workflow.

History uses a different representation: GetScheduleHistory can contain string results "true", "false" or null. The string "false" is nonempty; ordinary string truthiness is incorrect.

Error numbers

NumberMeaning and action
1041226Execution cleanup timeout; check activity and any delivered output before retrying.
-102562911User cancellation; inspect partial output because cancellation does not reverse delivery.

These are specific outcomes, not a complete catalogue. A cleanup failure can have status Completed with Result: false.

Timeouts and retention

WindowMeaning
Client request timeoutHow long your client waits for one HTTP response.
Client polling deadlineYour application’s monitoring policy; does not stop server work.
Execution cleanup timeoutDefault 36000 seconds, or ten hours; configuration can differ.
Completed queue selectionCompletion age under 120000 seconds, or 33 hours 20 minutes.
Failed-history selectionCalendar-day difference at most one day, not a rolling 24-hour period.

The timeout message can mention ten hours even when configuration differs. Queue selection is not a durable-retention guarantee or exact deletion schedule. Keep external records when needed.

Capacity and other limits

GetNumberOfFreeThreads reports current-server capacity in Result. The default is four, subject to configuration; values are clamped at zero. The result is a snapshot rather than a reservation.

Schedule concurrency, rendering processes and data-driver threads are separate controls. No unspecified maximum should be treated as unlimited Tableau throughput, payload size or output volume. Test representative workloads and use operation-specific constraints.

Recommended client handling

  1. Inspect HTTP status and the selected response type.
  2. Preserve the returned identifier immediately.
  3. Monitor an existing run with bounded polling.
  4. Parse nested result data and use the correct result type.
  5. Verify content and delivery.
  6. Check uncertain outcomes before repeating state-changing work, including state-changing GETs.

Use Troubleshoot API Integrations for symptom-specific checks.


Did this page help you?