HTTP error handling

The HTTP connector surfaces enriched error data that helps you identify, manage, and resolve issues when a request fails. It displays the HTTP status, a standardized error message, and structured response details such as headers and body. These details improve clarity and support automation. This feature currently applies to the HTTP connector.

How to view the error message

The connector raises an error when the Send request action receives a non-2xx response.

The job report's Error tab displays the following:

  • A structured error message
  • HTTP response status
  • Response headers
  • Response body (when applicable)

Each value appears in a dedicated field. You can use these in Monitor blocks, logs, or other error-handling logic.

HTTP connector error datapills for Monitor and On error blocks.HTTP connector error datapills for Monitor and On error blocks.

Error structure

The HTTP connector includes the following fields in job errors:

FieldDescription
error_type_idStable identifier for the error type. For example: err.http.response.client_error.not_found.
error_typeDisplay name based on HTTP status. For example: 404 Not Found.
error_idUnique identifier for the error instance.
error_messageHigh-level message. For example, HTTP 500 error.
http_response.codeNumeric HTTP status code. For example: 404.
http_response.status_textHTTP status text. For example: Not Found.
http_response.headersHTTP response headers.
http_response.bodyHTTP response body as a string.

AVOID PARSING ERROR TEXT

Avoid parsing error_message or error_type values for automation. These fields are display values and may change.

Use error_type_id or http_response.code for reliable programmatic checks. The error_type_id field provides a stable identifier aligned with Workato’s error taxonomy.

HTTP error categories

The HTTP connector raises an error for non-2xx responses. This includes 3xx HTTP redirection errors, 4xx client errors, and 5xx server errors.

HTTP errors returned by the connector follow structured error_type_id patterns based on HTTP status code classes. This structured catalog of HTTP error type IDs is currently supported only by the HTTP connector.

HTTP status classerror_type_id prefixDescription
3xxerr.http.response.redirection.*Redirection responses, such as 301 Moved Permanently, 302 Found, or 304 Not Modified.
4xxerr.http.response.client_error.*Client-side errors, such as 400 Bad Request, 401 Unauthorized, 403 Forbidden, or 404 Not Found.
5xxerr.http.response.server_error.*Server-side errors, such as 500 Internal Server Error, 502 Bad Gateway, or 503 Service Unavailable.

You can use error_type_id prefixes in Monitor or On error blocks to group related HTTP failures.

The Retry succeeds column indicates whether the same request may succeed if the recipe retries the request without modifying the parameters. This applies to the following tables in this section.

HTTP redirection error type IDs

The HTTP connector returns the following error_type_id values for HTTP 3xx responses:

HTTP statuserror_type_idRetry succeeds
300 Multiple Choiceserr.http.response.redirection.multiple_choicesNo
301 Moved Permanentlyerr.http.response.redirection.moved_permanentlyNo
302 Founderr.http.response.redirection.foundNo
303 See Othererr.http.response.redirection.see_otherNo
304 Not Modifiederr.http.response.redirection.not_modifiedNo
305 Use Proxyerr.http.response.redirection.use_proxyNo
306 Unusederr.http.response.redirection.unusedNo
307 Temporary Redirecterr.http.response.redirection.temporary_redirectNo
308 Permanent Redirecterr.http.response.redirection.permanent_redirectNo

HTTP client error type IDs

The HTTP connector returns the following error_type_id values for HTTP 4xx responses:

HTTP statuserror_type_idRetry succeeds
400 Bad Requesterr.http.response.client_error.bad_requestNo
401 Unauthorizederr.http.response.client_error.unauthorizedNo
402 Payment Requirederr.http.response.client_error.payment_requiredNo
403 Forbiddenerr.http.response.client_error.forbiddenNo
404 Not Founderr.http.response.client_error.not_foundNo
405 Method Not Allowederr.http.response.client_error.method_not_allowedNo
406 Not Acceptableerr.http.response.client_error.not_acceptableNo
407 Proxy Authentication Requirederr.http.response.client_error.proxy_authentication_requiredNo
408 Request Timeouterr.http.response.client_error.request_timeoutYes
409 Conflicterr.http.response.client_error.conflictNo
410 Goneerr.http.response.client_error.goneNo
411 Length Requirederr.http.response.client_error.length_requiredNo
412 Precondition Failederr.http.response.client_error.precondition_failedNo
413 Content Too Largeerr.http.response.client_error.content_too_largeNo
414 URI Too Longerr.http.response.client_error.uri_too_longNo
415 Unsupported Media Typeerr.http.response.client_error.unsupported_media_typeNo
416 Range Not Satisfiableerr.http.response.client_error.range_not_satisfiableNo
417 Expectation Failederr.http.response.client_error.expectation_failedNo
418 I'm a teapoterr.http.response.client_error.i_m_a_teapotNo
421 Misdirected Requesterr.http.response.client_error.misdirected_requestNo
422 Unprocessable Contenterr.http.response.client_error.unprocessable_contentNo
423 Lockederr.http.response.client_error.lockedYes
424 Failed Dependencyerr.http.response.client_error.failed_dependencyNo
425 Too Earlyerr.http.response.client_error.too_earlyYes
426 Upgrade Requirederr.http.response.client_error.upgrade_requiredNo
428 Precondition Requirederr.http.response.client_error.precondition_requiredNo
429 Too Many Requestserr.http.response.client_error.too_many_requestsYes
431 Request Header Fields Too Largeerr.http.response.client_error.request_header_fields_too_largeNo
451 Unavailable For Legal Reasonserr.http.response.client_error.unavailable_for_legal_reasonsNo

HTTP server error type IDs

The HTTP connector returns the following error_type_id values for HTTP 5xx responses:

HTTP statuserror_type_idRetry succeeds
500 Internal Server Errorerr.http.response.server_error.internal_server_errorYes
501 Not Implementederr.http.response.server_error.not_implementedNo
502 Bad Gatewayerr.http.response.server_error.bad_gatewayYes
503 Service Unavailableerr.http.response.server_error.service_unavailableYes
504 Gateway Timeouterr.http.response.server_error.gateway_timeoutYes
505 HTTP Version Not Supportederr.http.response.server_error.http_version_not_supportedNo
506 Variant Also Negotiateserr.http.response.server_error.variant_also_negotiatesNo
507 Insufficient Storageerr.http.response.server_error.insufficient_storageYes
508 Loop Detectederr.http.response.server_error.loop_detectedNo
510 Not Extendederr.http.response.server_error.not_extendedNo
511 Network Authentication Requirederr.http.response.server_error.network_authentication_requiredNo

Successful HTTP response codes treated as errors

The HTTP connector may treat certain successful HTTP responses as errors for backward compatibility.

These responses use successful HTTP status codes but may still surface as errors in the HTTP connector.

HTTP statuserror_type_id
208 Already Reportederr.http.response.successful.already_reported
226 IM Usederr.http.response.successful.im_used

Unsupported RFC HTTP response codes

The HTTP connector may return fallback error_type_id values when it receives an HTTP status code that doesn't map to a supported RFC-defined response code. These identifiers represent unsupported or non-standard HTTP response codes:

Categoryerror_type_id
Informational (1xx)err.http.response.unsupported_rfc.informational
Successful (2xx)err.http.response.unsupported_rfc.successful
Redirection (3xx)err.http.response.unsupported_rfc.redirection
Client error (4xx)err.http.response.unsupported_rfc.client_error
Server error (5xx)err.http.response.unsupported_rfc.server_error
Generalerr.http.response.unsupported_rfc.general

Structured HTTP error output

The HTTP connector returns a structured error object you can use for debugging, filtering, and automation. This object includes fields such as the HTTP status code, response body, headers, and a machine-readable error type ID. For example:

json
{
  "error_type_id": "err.http.response.client_error.not_found",
  "error_type": "Not Found",
  "error_id": "ad6a...b3c",
  "error_message": "HTTP 404 error",
  "http_response": {
    "code": 404,
    "status_text": "Not Found",
    "body": "{\"error\": \"Resource not found\"}",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

You can access this structured error data through the following:

  • Job reports
  • Monitor blocks (error datapills)
  • On error blocks (error datapills)

Workato recommends using error_type_id for automation. This field is stable and supports reliable programmatic checks.

Best practices for error handling

Use error_type_id and http_response fields in Monitor or On error blocks to build reliable recipes:

  • Catch and handle specific errors using error_type_id
  • Retry requests based on HTTP status codes or response headers
  • Send structured error data to logs or alerting systems

These fields eliminate the need for string parsing or fragile pattern matching.

Last updated: