502 bad gateway error
The HTTP 502 Bad Gateway server error response code indicates that the server, while functioning as a gateway or proxy, has received an invalid response from the upstream server.
The cause of 502 bad gateway error
The occurrence of a 502 error is often related to either
- Timeout: We support either 30 seconds or 120 seconds depends on the region.
- Exceeding the maximum payload size: We support either 1 MB or 6 MB for the payload size depends on the region.
Each region has its own specific maximum response size and timeout, please find out more the limitations in the API Reference.
Question: I'm using an endpoint that supports up to 1 MB payload, so why am I still getting a 502 error message even though my PDF is only 866 KB?
The PDF binary is encoded in base64 between our app function and the load balancer/APIGateway. Base64 encoding causes an overhead of 33–37% (33% due to the encoding itself, and up to 4% more due to inserted line breaks). If a file is about 866 KB and you are using an endpoint with a maximum payload size of 1 MB, it is likely to exceed the 1 MB limit.
Solutions of bad gateway error
There are four potential solutions to address the 502 error:
-
Use export_type: json: If are using export_type: file and getting a 502 error, please consider using the export_type: json. By using export_type: json, the generated PDFs can be stored in our CDN rather than directly returned as a response. This approach helps bypass the limitations imposed by response size restrictions.
-
Async PDF generation : if the PDF generation takes a long time(>30 seconds or more) please consider using our async API to generate PDFs asynchronously.
-
Switch to an alternative region: Another option is to switch to an alternative region that supports a higher maximum response size or longer timeout. This can be a suitable choice when the current region's response size or timeout limitations are consistently reached. You can find out the limitations of each region here.
-
JSON data payload exceeds the maximum allowed payload size: please use the load_data_from paramater to load your JSON data from an external URL.