The URL
Take the provider’s endpoint, drop its base URL, and put the rest afterhttps://proxy.bundleup.io:
Which part counts as the “base URL” depends on the provider. Some, like Slack above, include a path segment (
/api) in the base. Each provider’s page on bundleup.io/integrations shows the base URL BundleUp uses. The query string is passed through unchanged.
Methods
Any HTTP method works.GET, HEAD and OPTIONS are retried on transient failures; other methods are sent once.
Headers
Response headers come back from the provider unchanged, including its own rate-limit headers.
Bodies
Bodies are forwarded byte for byte. JSON, form-encoded, multipart and binary uploads all work; setContent-Type the way the provider expects.
Responses are streamed back to you without being read or buffered by BundleUp, so large downloads and streamed responses work too:
GraphQL providers
For providers whose API is GraphQL,POST your query to the path the provider documents:
POSTs, so they aren’t retried automatically.
Errors
There are two kinds of error, and you can tell them apart by the body:- BundleUp errors happen before the provider is called. The body is BundleUp’s JSON with a
code, such asconnection_invalid,connection_refresh_failedorrate_limit. See the errors reference. - Provider errors are passed through as-is: the provider’s status code, headers and body. Handle them as the provider’s documentation describes.
408when the provider didn’t answer within 20 seconds (10 seconds on a retry).502when BundleUp couldn’t reach the provider at all.
Request timed out, Error fetching proxied request) rather than JSON.

