exchangerate-dev Official API

The Official API from exchangerate-dev — 15 operation(s) for official.

Operations 15

GET /v1/official/evidence/{lookup_id} Evidence #
GET /v1/official Countries #
GET /v1/official/changes Changes #
GET /v1/official/{country} Country #
GET /v1/official/{country}/{rate_type} Table Info #
GET /v1/official/{country}/{rate_type}/rate/{base}/{quote} Rate #
GET /v1/official/{country}/{rate_type}/convert/{base}/{quote}/{amount} Convert #
POST /v1/official/{country}/{rate_type}/convert Convert Batch #
GET /v1/official/{country}/{rate_type}/period/{month} Period #
POST /v1/official/{country}/{rate_type}/gain-loss Gain Loss #
GET /v1/official/{country}/{rate_type}/rates.xlsx Rates #
GET /v1/official/{country}/{rate_type}/rates.csv Rates #
GET /v1/official/{country}/{rate_type}/rates Rates #
GET /v1/official/{country}/{rate_type}/publications Publications #
GET /v1/official/{country}/{rate_type}/publications/{publication_id} Publication #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/exchangerate-dev:exchangerate-dev-official-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

exchangerate-dev-official-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: exchangerate.dev Official API
  description: 'Live indicative foreign-exchange rates for developers. Explicit `source` and `market_session` labels on every response — live intraday (~60s) on trading days for all currencies, with ECB daily fallback in the 144-currency catalog (10296 unique pairs). Free tier: 5,000 calls/month, no card. Live rates 15 minutes delayed. MCP server: https://api.exchangerate.dev/v1/mcp/ · Docs: https://exchangerate.dev/docs'
  contact:
    url: https://exchangerate.dev/docs
  version: '1.0'
tags:
- name: Official
paths:
  /v1/official/evidence/{lookup_id}:
    get:
      summary: Evidence
      operationId: evidence_v1_official_evidence__lookup_id__get
      parameters:
      - name: lookup_id
        in: path
        required: true
        schema:
          type: string
          title: Lookup Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Evidence V1 Official Evidence  Lookup Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official:
    get:
      summary: Countries
      operationId: countries_v1_official_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Countries V1 Official Get
      tags:
      - Official
  /v1/official/changes:
    get:
      summary: Changes
      description: 'New and corrected publications since a time, oldest first: the feed webhooks are built

        on. Poll with the last item''s `at` as the next `since`.'
      operationId: changes_v1_official_changes_get
      parameters:
      - name: since
        in: query
        required: true
        schema:
          type: string
          title: Since
      - name: country
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Country
      - name: type
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Type
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 100
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Changes V1 Official Changes Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}:
    get:
      summary: Country
      operationId: country_v1_official__country__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Country V1 Official  Country  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}:
    get:
      summary: Table Info
      operationId: table_info_v1_official__country___rate_type__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Table Info V1 Official  Country   Rate Type  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/rate/{base}/{quote}:
    get:
      summary: Rate
      operationId: rate_v1_official__country___rate_type__rate__base___quote__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: base
        in: path
        required: true
        schema:
          type: string
          title: Base
      - name: quote
        in: path
        required: true
        schema:
          type: string
          title: Quote
      - name: date
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - name: expand
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Expand
      - name: direction
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Direction
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Rate V1 Official  Country   Rate Type  Rate  Base   Quote  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/convert/{base}/{quote}/{amount}:
    get:
      summary: Convert
      operationId: convert_v1_official__country___rate_type__convert__base___quote___amount__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: base
        in: path
        required: true
        schema:
          type: string
          title: Base
      - name: quote
        in: path
        required: true
        schema:
          type: string
          title: Quote
      - name: amount
        in: path
        required: true
        schema:
          type: string
          title: Amount
      - name: date
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - name: expand
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Expand
      - name: direction
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Direction
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Convert V1 Official  Country   Rate Type  Convert  Base   Quote   Amount  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/convert:
    post:
      summary: Convert Batch
      description: 'Invoice lines, each with its own date (up to MAX_BATCH_PAIRS). A line that cannot be

        answered carries its error instead of failing the batch.'
      operationId: convert_batch_v1_official__country___rate_type__convert_post
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertBatch'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Convert Batch V1 Official  Country   Rate Type  Convert Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/period/{month}:
    get:
      summary: Period
      description: 'Accounting pack (IAS 21): closing rate and average for a calendar month.'
      operationId: period_v1_official__country___rate_type__period__month__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: month
        in: path
        required: true
        schema:
          type: string
          title: Month
      - name: quotes
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quotes
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Period V1 Official  Country   Rate Type  Period  Month  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/gain-loss:
    post:
      summary: Gain Loss
      description: 'Realised FX gain or loss on a foreign-currency item between booking and settlement,

        both valued at this table''s official rate (home currency per unit).'
      operationId: gain_loss_v1_official__country___rate_type__gain_loss_post
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GainLoss'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Gain Loss V1 Official  Country   Rate Type  Gain Loss Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/rates.xlsx:
    get:
      summary: Rates
      operationId: rates_v1_official__country___rate_type__rates_xlsx_get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: date
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - name: from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: From
      - name: to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: To
      - name: quotes
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quotes
      - name: expand
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Expand
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Rates V1 Official  Country   Rate Type  Rates Xlsx Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/rates.csv:
    get:
      summary: Rates
      operationId: rates_v1_official__country___rate_type__rates_csv_get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: date
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - name: from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: From
      - name: to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: To
      - name: quotes
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quotes
      - name: expand
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Expand
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Rates V1 Official  Country   Rate Type  Rates Csv Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/rates:
    get:
      summary: Rates
      operationId: rates_v1_official__country___rate_type__rates_get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: date
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - name: from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: From
      - name: to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: To
      - name: quotes
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quotes
      - name: expand
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Expand
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Rates V1 Official  Country   Rate Type  Rates Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/publications:
    get:
      summary: Publications
      operationId: publications_v1_official__country___rate_type__publications_get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: from
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: From
      - name: to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: To
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Publications V1 Official  Country   Rate Type  Publications Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
  /v1/official/{country}/{rate_type}/publications/{publication_id}:
    get:
      summary: Publication
      operationId: publication_v1_official__country___rate_type__publications__publication_id__get
      parameters:
      - name: country
        in: path
        required: true
        schema:
          type: string
          title: Country
      - name: rate_type
        in: path
        required: true
        schema:
          type: string
          title: Rate Type
      - name: publication_id
        in: path
        required: true
        schema:
          type: string
          title: Publication Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Publication V1 Official  Country   Rate Type  Publications  Publication Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Official
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ConvertLine:
      properties:
        base:
          type: string
          title: Base
        quote:
          type: string
          title: Quote
        amount:
          anyOf:
          - type: number
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
        date:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
        direction:
          anyOf:
          - type: string
          - type: 'null'
          title: Direction
      type: object
      required:
      - base
      - quote
      - amount
      title: ConvertLine
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    GainLoss:
      properties:
        currency:
          type: string
          title: Currency
        amount:
          anyOf:
          - type: number
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
        booked_on:
          type: string
          title: Booked On
        settled_on:
          type: string
          title: Settled On
        kind:
          type: string
          title: Kind
          default: receivable
      type: object
      required:
      - currency
      - amount
      - booked_on
      - settled_on
      title: GainLoss
    ConvertBatch:
      properties:
        lines:
          items:
            $ref: '#/components/schemas/ConvertLine'
          type: array
          title: Lines
      type: object
      required:
      - lines
      title: ConvertBatch