auma.dev API

Base URL https://auma.dev. All responses are JSON; every GET is cacheable and CORS-enabled. Machine-readable contract at /openapi.json.

/fx

Daily fiat and crypto exchange rates (340+ currencies), from the open fawazahmed0/currency-api dataset.

get/v1/fx/latest

Latest rates for a base currency

Rates to convert one unit of `base` into every other currency (or only `symbols`). Codes are uppercase; crypto codes such as BTC and ETH are included. Refreshed hourly, the dataset itself updates daily.

ParameterInDescription
basequeryBase currency code. Default: EUR.
symbolsqueryComma-separated list of codes to return. Unknown codes yield 404.
request
curl 'https://auma.dev/v1/fx/latest?base=EUR&symbols=USD,GBP,BTC'
response 200
{
  "base": "EUR",
  "date": "2026-09-16",
  "count": 3,
  "rates": {
    "USD": 1.154,
    "GBP": 0.86,
    "BTC": 0.0000152
  },
  "source": {
    "name": "fawazahmed0/currency-api",
    "url": "https://github.com/fawazahmed0/currency-api",
    "license": "CC0-1.0"
  }
}
get/v1/fx/currencies

Supported currencies

Every code the rates endpoint understands, with its display name.

request
curl 'https://auma.dev/v1/fx/currencies'
response 200
{
  "count": 340,
  "currencies": [
    {
      "code": "BTC",
      "name": "Bitcoin"
    },
    {
      "code": "EUR",
      "name": "Euro"
    }
  ]
}
get/v1/fx/currencies/{code}.json

Upstream-compatible rates document

Byte-for-byte mirror of the `@fawazahmed0/currency-api` wire format (`{ "date": ..., "eur": { "usd": 1.15 } }`). Also available: `/v1/fx/currencies/{code}.min.json`, `/v1/fx/currencies.json`, `/v1/fx/currencies.min.json`. Clients already written against that dataset only need to change their base URL to `https://auma.dev/v1/fx/`.

ParameterInDescription
code*pathLowercase base currency code.
request
curl 'https://auma.dev/v1/fx/currencies/eur.json'
response 200
Upstream document

/it

Italian identifiers: codice fiscale, partita IVA, IBAN. Pure computation, no data leaves the request.

get/v1/it/codice-fiscale/validate

Validate and decode a codice fiscale

Checks length, format and the check character, then decodes sex, birth date (century inferred from the two-digit year), and the Belfiore code of the birth place. Omocodia substitutions are recognised and reversed in `canonical`. Eleven-digit codes of companies and entities are validated with the partita IVA checksum.

ParameterInDescription
cf*queryThe code, case and spaces do not matter.
request
curl 'https://auma.dev/v1/it/codice-fiscale/validate?cf=RSSMRA85T10A562S'
response 200
{
  "valid": true,
  "kind": "person",
  "normalized": "RSSMRA85T10A562S",
  "omocodia": false,
  "sex": "M",
  "birthDate": "1985-12-10",
  "birthYearTwoDigits": 85,
  "belfiore": "A562",
  "canonical": "RSSMRA85T10A562S"
}
post/v1/it/codice-fiscale/calculate

Calculate a codice fiscale

Computes the code from personal data using the official algorithm. `belfiore` is the codice catastale of the birth place (H501 for Roma, F205 for Milano). The result is the *expected* code: the Agenzia delle Entrate may have assigned a different one in case of omocodia.

request
curl -X POST https://auma.dev/v1/it/codice-fiscale/calculate \
  -H 'Content-Type: application/json' \
  -d '{"firstName":"Mario","lastName":"Rossi","sex":"M","birthDate":"1985-12-10","belfiore":"A562"}'
response 200
{
  "codiceFiscale": "RSSMRA85T10A562S"
}
get/v1/it/partita-iva/validate

Validate a partita IVA

Eleven digits with the Luhn-style check digit. An `IT` prefix, spaces and dots are ignored. `office` is the code of the issuing office (digits 8–10). VIES lookup is not performed.

ParameterInDescription
piva*queryThe number to check.
request
curl 'https://auma.dev/v1/it/partita-iva/validate?piva=IT06363391001'
response 200
{
  "valid": true,
  "normalized": "06363391001",
  "office": "100"
}
get/v1/it/iban/validate

Validate an IBAN

ISO 7064 mod 97-10 checksum plus the country length from the IBAN registry (unknown countries are checked by checksum only). Italian and San Marino IBANs are also split into CIN, ABI, CAB and account, and the domestic CIN check letter is verified.

ParameterInDescription
iban*queryThe IBAN, spaces allowed.
request
curl 'https://auma.dev/v1/it/iban/validate?iban=IT60%20X054%202811%201010%200000%200123%20456'
response 200
{
  "valid": true,
  "normalized": "IT60X0542811101000000123456",
  "formatted": "IT60 X054 2811 1010 0000 0123 456",
  "country": "IT",
  "countryKnown": true,
  "checkDigits": "60",
  "bban": "X0542811101000000123456",
  "it": {
    "cin": "X",
    "cinValid": true,
    "abi": "05428",
    "cab": "11101",
    "account": "000000123456"
  }
}

/apps

Remote configuration for the Aumatex iOS apps.

get/v1/apps/{app}/config

Remote configuration for an Aumatex app

Minimum and latest version, kill switch, announcement and feature flags for `moneys`, `koinvert`, `globetrail`, `keyring`. Edited in the repository, served through the CDN.

ParameterInDescription
app*pathApp identifier.
request
curl 'https://auma.dev/v1/apps/koinvert/config'
response 200
{
  "app": "koinvert",
  "name": "Koinvert",
  "platform": "ios",
  "bundleId": "aumadev.Koinvert",
  "minimumVersion": "1.0.0",
  "latestVersion": "1.2.2",
  "storeUrl": "https://apps.apple.com/app/koinvert/id6760571482",
  "killSwitch": {
    "enabled": false,
    "message": null
  },
  "announcement": null,
  "flags": {},
  "updatedAt": "2026-09-16",
  "servedAt": "2026-09-16T12:00:00.000Z"
}

/platform

Service metadata.

get/v1/health

Service health

Version, deployed commit and serving region.

request
curl 'https://auma.dev/v1/health'
response 200
{
  "status": "ok",
  "service": "auma.dev",
  "version": "1.0.0",
  "commit": "abc1234",
  "region": "fra1",
  "time": "2026-09-16T12:00:00.000Z"
}

Errors

Errors use the HTTP status and a stable code. Validation failures list the offending fields in details. Note that validators answer 200 with valid: false when the input is well-formed but wrong: 4xx is for malformed requests.

response 400
{
  "error": {
    "code": "invalid_request",
    "message": "Request validation failed",
    "details": [
      {
        "path": "cf",
        "message": "cf is required"
      }
    ]
  }
}
400 invalid_requestA parameter or body field failed validation.
400 invalid_jsonThe request body is not valid JSON.
404 not_found / unknown_*Unknown currency, app, link or resource.
502 upstream_unavailableThe rates provider did not answer; retry later.