CurrencyAPI Range API

Time-series exchange rates for a datetime range.

OpenAPI Specification

currencyapi-range-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Currency Convert Range API
  description: CurrencyAPI (currencyapi.com, an Everapi product) is a foreign exchange rate and currency conversion REST API. A single versioned surface at https://api.currencyapi.com/v3 provides the latest exchange rates, historical end-of-day rates back to 1999, time-series ranges with day/hour/quarter-hour/ minute accuracy, value conversion, currency metadata, and account quota status. All endpoints are GET requests authenticated with an API key passed either as an "apikey" HTTP header (recommended) or an "apikey" query parameter. Only successful calls count against your quota; the status endpoint is never counted.
  version: '3.0'
  contact:
    name: CurrencyAPI
    url: https://currencyapi.com
  termsOfService: https://currencyapi.com/terms
servers:
- url: https://api.currencyapi.com/v3
  description: Production
security:
- apiKeyHeader: []
- apiKeyQuery: []
tags:
- name: Range
  description: Time-series exchange rates for a datetime range.
paths:
  /range:
    get:
      operationId: getRangeExchangeRates
      tags:
      - Range
      summary: Range (time-series) exchange rates
      description: Returns exchange rate data for a datetime range in a single call. Accuracy constraints - day covers up to 366 days of history; hour allows a maximum 7-day range up to 3 months back; quarter_hour allows a maximum 24-hour range up to 7 days back; minute allows a maximum 6-hour range up to 7 days back.
      parameters:
      - name: datetime_start
        in: query
        required: true
        description: 'ISO8601 datetime for the start of the range (format: 2022-12-01T00:00:00Z).'
        schema:
          type: string
          format: date-time
          example: '2022-12-01T00:00:00Z'
      - name: datetime_end
        in: query
        required: true
        description: 'ISO8601 datetime for the end of the range (format: 2022-12-31T23:59:59Z).'
        schema:
          type: string
          format: date-time
          example: '2022-12-31T23:59:59Z'
      - name: accuracy
        in: query
        required: false
        description: Accuracy of the time-series data points.
        schema:
          type: string
          enum:
          - day
          - hour
          - quarter_hour
          - minute
          default: day
      - $ref: '#/components/parameters/baseCurrency'
      - $ref: '#/components/parameters/currencies'
      - $ref: '#/components/parameters/type'
      responses:
        '200':
          description: Time-series exchange rate data points.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RangeResponse'
              example:
                data:
                - datetime: '2022-01-01T23:59:59Z'
                  currencies:
                    AED:
                      code: AED
                      value: 3.67306
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Rate:
      type: object
      properties:
        code:
          type: string
          description: ISO currency code.
          example: EUR
        value:
          type: number
          description: Exchange rate value relative to the base currency.
          example: 0.91234
    Error:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    RangeResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              datetime:
                type: string
                format: date-time
              currencies:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/Rate'
  responses:
    RateLimited:
      description: Monthly quota or per-minute rate limit exceeded. Inspect the X-RateLimit-Limit-Quota-Minute, X-RateLimit-Limit-Quota-Month, X-RateLimit-Remaining-Quota-Minute, and X-RateLimit-Remaining-Quota-Month response headers to monitor consumption.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: Validation error - incorrect or missing parameters. Failed requests do not count against your quota.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Invalid or missing API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    currencies:
      name: currencies
      in: query
      required: false
      description: A list of comma-separated currency codes you want to receive (e.g. EUR,USD,CAD). Defaults to all available currencies.
      schema:
        type: string
        example: EUR,USD,CAD
    type:
      name: type
      in: query
      required: false
      description: The type of currency you want to get. Defaults to all types.
      schema:
        type: string
        enum:
        - fiat
        - metal
        - crypto
    baseCurrency:
      name: base_currency
      in: query
      required: false
      description: The base currency to which all results are behaving relative to. Defaults to USD.
      schema:
        type: string
        default: USD
        example: USD
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      in: header
      name: apikey
      description: API key passed as an HTTP header (recommended).
    apiKeyQuery:
      type: apiKey
      in: query
      name: apikey
      description: API key passed as a query parameter (may expose the key in access logs).