openapi: 3.0.3 info: title: FXRates Convert Latest Rates API description: 'FXRatesAPI is a foreign exchange rates REST API serving real-time and historical currency exchange rates for 185+ fiat currencies plus major cryptocurrencies and precious metals. All endpoints return JSON over HTTPS from the base host https://api.fxratesapi.com. A limited tier is usable without an API key; a paid API key (passed as the api_key query parameter or an Authorization Bearer header) raises quotas, increases update frequency, and unlocks base-currency switching. Endpoint paths, methods, and parameters below are grounded in live probes of the API on 2026-07-12. Response schemas are modeled from the observed JSON payloads rather than a provider-published machine-readable schema, and only parameters confirmed during probing are asserted; additional optional parameters may exist.' version: '1.0' contact: name: FXRatesAPI url: https://fxratesapi.com termsOfService: https://fxratesapi.com/legal/terms-conditions servers: - url: https://api.fxratesapi.com description: FXRatesAPI production security: - {} - apiKeyQuery: [] - bearerAuth: [] tags: - name: Latest Rates description: Most recent exchange rates for a base currency. paths: /latest: get: operationId: getLatestRates tags: - Latest Rates summary: Get the latest exchange rates description: Returns the most recent exchange rates for the requested base currency. Confirmed to respond with HTTP 200 without an API key for a limited tier. parameters: - name: base in: query required: false description: Base currency code (ISO 4217). Defaults to USD. schema: type: string default: USD example: EUR - name: currencies in: query required: false description: Comma-separated list of currency codes to return. Defaults to all supported currencies. schema: type: string example: USD,GBP - name: api_key in: query required: false description: Optional API key. May also be supplied via the Authorization Bearer header. schema: type: string responses: '200': description: Latest exchange rates. content: application/json: schema: $ref: '#/components/schemas/RatesResponse' '400': $ref: '#/components/responses/Error' components: schemas: RatesResponse: type: object description: Modeled from observed /latest and /historical JSON payloads. properties: success: type: boolean example: true terms: type: string example: https://fxratesapi.com/legal/terms-conditions privacy: type: string example: https://fxratesapi.com/legal/privacy-policy timestamp: type: integer description: Unix timestamp of the rate snapshot. example: 1783883940 date: type: string format: date-time example: '2026-07-12T19:19:00.000Z' base: type: string example: USD rates: type: object description: Map of currency code to exchange rate against the base. additionalProperties: type: number example: EUR: 0.8761481387 GBP: 0.7461771444 ErrorResponse: type: object description: Modeled from observed error payloads. FXRatesAPI returns success=false with either a nested error object ({message}) or a flat error string plus a description field, depending on the endpoint and failure mode. properties: success: type: boolean example: false error: oneOf: - type: string example: missing_from_currency - type: object properties: message: type: string example: Endpoint Not Found description: type: string example: The from currency is required for the convert endpoint. responses: Error: description: Error response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: apiKeyQuery: type: apiKey in: query name: api_key description: API key passed as the api_key query parameter. bearerAuth: type: http scheme: bearer description: 'API key passed as an Authorization: Bearer header.'