Normalized services
A normalized service goes one step beyond AutoSwap: the service type defines named operations with a fixed input and output shape, and every provider attaches an adapter that maps that shape onto its own API. You integrate once and APISwaps picks the provider per call.
Base URL
GET https://apiswaps.com/api/gw/v1/services/<type-slug>/<operation>?field=valuePOST https://apiswaps.com/api/gw/v1/services/<type-slug>/<operation> (JSON body)Whether an operation is GET or POST, and which fields it takes and returns, is listed under Normalized API on the type page. Only declared input fields are forwarded; required ones are checked before any provider is called (400 invalid_input otherwise).
Example
curl "https://apiswaps.com/api/gw/v1/services/geocoding/geocode?query=Berlin%20Hbf" \ -H "Authorization: Bearer sk-as-YOUR_KEY"Provider selection and failover
The same rules as AutoSwap apply: X-AutoSwap-Strategy (cheapest · fastest · reliable, or the type's default), circuit breaker, up to three providers per call, and the X-AutoSwap-Listing / X-AutoSwap-Attempts response headers. A provider that answers but whose answer cannot be normalized is skipped as well; if nobody can serve the call you get 502 adapter_error or 503 no_provider_available.
Errors
| Status | error.type | Meaning |
|---|---|---|
| 400 | invalid_input | a required field is missing or has the wrong type |
| 4xx | provider_error | the chosen provider rejected the call; status, provider and a message excerpt are included |
| 502 | adapter_error | the provider answered but the response could not be mapped |
| 503 | no_provider_available | no provider with a working adapter can take the call right now |