Documentation
Your first deliberate request
Clear inputs, careful request identity, and honest outcomes. The essentials for building with this gateway.
1. Confirm the operation is enabled
Open the API page and check the operation’s current availability and price. Only enabled operations can be called.
2. Create a narrow key
Create a key in Dashboard → API keys and select currency:latest for this example. Copy the returned secret once into a server-side secret manager. The gateway cannot show it again.
Gateway method and input locations
Call the public gateway with POST and a JSON object. Imported OpenAPI operations use { path?, query?, headers?, body? }; include only the documented locations. headers inside this JSON is validated input data, not browser request headers or a place for credentials. Currency keeps its existing flat JSON input; do not wrap its fields in body.
3. Keep request identity with the intent
Use one Idempotency-Key for one unchanged request. Persist it in your application with the input fingerprint before sending. Do not regenerate it simply because a connection timed out.
# Server-side only. Set ATLAS_API_KEY in your secret manager.
# Set ATLAS_API_ORIGIN to your configured deployment origin.
# Every gateway operation is called with POST.
# Only operations shown as enabled on the API page can be called.
# Generate once per intent; retain the same value on status checks.
REQUEST_ID="$(uuidgen)"
curl --request POST 'https://apigate.vercel.app/api/v1/currency/latest' \
--header "Content-Type: application/json" \
--header "x-api-key: $ATLAS_API_KEY" \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"base":"EUR","symbols":"USD,GBP"}'4. Read the envelope, not only the HTTP status
Check ok before consuming data. Successful live gateway responses include meta.requestId, decimal-string meta.chargedCreditUnits and source attribution. Keep the request ID for support; do not log API keys. Credits are integer credit units behind a decimal string with at most two decimal places, not a currency conversion rate.
{
"ok": false,
"error": {
"code": "OPERATION_DISABLED",
"message": "This operation is not currently enabled."
},
"requestId": "<request-id>"
}