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.

Authorized server-side requestbash
# 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.

Example error responsejson
{
  "ok": false,
  "error": {
    "code": "OPERATION_DISABLED",
    "message": "This operation is not currently enabled."
  },
  "requestId": "<request-id>"
}

Understand errors and uncertain outcomes