Mavenlink Exchange Tables API

This object allows you to view or edit foreign currency exchange rates, depending on your [Foreign Exchange Access Group Set](https://mavenlink.zendesk.com/hc/en-us/articles/360047485453) permissions. If you are not a member of an Access Group with Foreign Exchange (FX) permissions, an account administrator will need to add you to one. If you are an account admin that needs FX permissions, you can add yourself to an Access Group with the FX permissions you require.

Business capability
Foreign Exchange Management BC-210.40

Operations 6

GET /foreign_exchange/exchange_tables Fetching a list of Exchange Tables #
POST /foreign_exchange/exchange_tables Creating a new Exchange Table #
GET /foreign_exchange/exchange_tables/{id} Fetching a single Exchange Table #
PUT /foreign_exchange/exchange_tables/{id} Updating an existing Exchange Table #
POST /foreign_exchange/exchange_tables/{id}/rates Import Exchange Rates #
GET /foreign_exchange/exchange_tables/{id}/rates Fetching a list of Exchange Rates #

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/mavenlink-exchange-tables-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

mavenlink-exchange-tables-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Kantata OX API Documentation Exchange Tables API
  description: Kantata OX's API provides access to the majority of Kantata OX's data model.
  termsOfService: https://www.kantata.com/terms-of-use
  contact:
    name: Kantata OX Support
    url: https://knowledge.kantata.com/hc/en-us
  license:
    name: COPYRIGHT © 2026 Kantata, Inc.
    url: https://www.kantata.com/terms-of-use
  x-logo:
    url: https://theme.zdassets.com/theme_assets/56104/04e93064d309f75d054b8cee885d1ea51e9be8f7.png
    backgroundColor: '#FFFFFF'
    altText: Kantata OX API Documentation
    href: https://developer.kantata.com
servers:
- url: https://api.mavenlink.com/api/v1
tags:
- name: Exchange Tables
  description: 'This object allows you to view or edit foreign currency exchange rates, depending on your Foreign Exchange Access Group Set

    permissions. If you are not a member of an Access Group with Foreign Exchange (FX) permissions, an account administrator will need to add you to one.

    If you are an account admin that needs FX permissions, you can add yourself to an Access Group with the FX permissions you require.'
paths:
  /foreign_exchange/exchange_tables:
    get:
      summary: Fetching a list of Exchange Tables
      description: Returns a list of exchange tables associated with your account, and their default settings details.
      operationId: Get Exchange Tables
      tags:
      - Exchange Tables
      responses:
        '200':
          description: A list of Exchange Tables have been retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int32
                    description: Number of exchange tables in the response.
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        format: int32
                        description: Number of exchange tables in the response.
                      page_count:
                        type: integer
                        format: int32
                        description: Number of pagination pages available.
                      page_number:
                        type: integer
                        format: int32
                        description: Current pagination page.
                      page_size:
                        type: integer
                        format: int32
                        description: Number of elements in a pagination page.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        id:
                          type: string
                          description: The ID of the exchange table.
                  exchange_tables:
                    type: object
                    properties:
                      id:
                        type: object
                        properties:
                          id:
                            type: string
                            description: The ID of the exchange table.
                          name:
                            type: string
                            description: The name of the exchange table.
                          account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions across your entire account.
                          insights_account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions in Insights reports.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
    post:
      summary: Creating a new Exchange Table
      description: Creates a new exchange table.
      operationId: Create Exchange Table
      tags:
      - Exchange Tables
      parameters:
      - in: query
        name: name
        required: true
        description: Give a name for your new exchange table.
        schema:
          type: string
      - in: query
        name: account_default
        required: false
        description: "If `true`, sets the exchange table to be the default\n            for currency conversions across your entire account.\n            This includes currency conversions in Insights reports, unless you set a different table\n            as the `insights_account_default`."
        schema:
          type: boolean
      - in: query
        name: insights_account_default
        required: false
        description: "If `true`, sets the exchange table to be\n            the default for currency conversions in Insights reports.\n            The `insights_account_default` exchange table must have 400 or fewer currency pairs\n            in order for exchange rates information to display in Insights reports."
        schema:
          type: boolean
      responses:
        '200':
          description: Exchange Table has been created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int32
                    description: Number of exchange tables in the response.
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        format: int32
                        description: Number of exchange tables in the response.
                      page_count:
                        type: integer
                        format: int32
                        description: Number of pagination pages available.
                      page_number:
                        type: integer
                        format: int32
                        description: Current pagination page.
                      page_size:
                        type: integer
                        format: int32
                        description: Number of elements in a pagination page.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        id:
                          type: string
                          description: The ID of the exchange table.
                  exchange_tables:
                    type: object
                    properties:
                      id:
                        type: object
                        properties:
                          id:
                            type: string
                            description: The ID of the exchange table.
                          name:
                            type: string
                            description: The name of the exchange table.
                          account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions across your entire account.
                          insights_account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions in Insights reports.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
  /foreign_exchange/exchange_tables/{id}:
    get:
      summary: Fetching a single Exchange Table
      description: Returns default settings details for a specified exchange table.
      operationId: Get Exchange Table
      tags:
      - Exchange Tables
      parameters:
      - in: path
        name: id
        required: true
        description: The ID of the Model.
        schema:
          type: integer
      responses:
        '200':
          description: The Exchange Table has been retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The ID of the exchange table.
                      name:
                        type: string
                        description: The name of the exchange table.
                      account_default:
                        type: boolean
                        description: If true, this is set as the default exchange table for currency conversions across your entire account.
                      insights_account_default:
                        type: boolean
                        description: If true, this is set as the default exchange table for currency conversions in Insights reports.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
    put:
      summary: Updating an existing Exchange Table
      description: Updates the name and/or default settings for a specified exchange table.
      operationId: Update Exchange Table
      tags:
      - Exchange Tables
      parameters:
      - in: path
        name: id
        required: true
        description: The ID of the Model.
        schema:
          type: integer
      - in: query
        name: account_default
        required: false
        description: "If `true`, sets the exchange table to be the default\n            for currency conversions across your entire account.\n            This includes currency conversions in Insights reports, unless you set a different table\n            as the `insights_account_default`."
        schema:
          type: boolean
      - in: query
        name: insights_account_default
        required: false
        description: "If `true`, sets the exchange table to be\n            the default for currency conversions in Insights reports.\n            The `insights_account_default` exchange table must have 400 or fewer currency pairs\n            in order for exchange rates information to display in Insights reports."
        schema:
          type: boolean
      - in: query
        name: name
        required: false
        description: Update the name of the exchange table.
        schema:
          type: string
      responses:
        '200':
          description: Exchange Table has been updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int32
                    description: Number of exchange tables in the response.
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        format: int32
                        description: Number of exchange tables in the response.
                      page_count:
                        type: integer
                        format: int32
                        description: Number of pagination pages available.
                      page_number:
                        type: integer
                        format: int32
                        description: Current pagination page.
                      page_size:
                        type: integer
                        format: int32
                        description: Number of elements in a pagination page.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        id:
                          type: string
                          description: The ID of the exchange table.
                  exchange_tables:
                    type: object
                    properties:
                      id:
                        type: object
                        properties:
                          id:
                            type: string
                            description: The ID of the exchange table.
                          name:
                            type: string
                            description: The name of the exchange table.
                          account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions across your entire account.
                          insights_account_default:
                            type: boolean
                            description: If true, this is set as the default exchange table for currency conversions in Insights reports.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
  /foreign_exchange/exchange_tables/{id}/rates:
    post:
      summary: Import Exchange Rates
      description: Add or update exchange rates for a specified exchange table by importing rates as a .csv file, or in a JSON array of hashes.
      operationId: Import Exchange Tables
      tags:
      - Exchange Tables
      parameters:
      - in: query
        name: csv_file
        required: true
        description: 'A CSV file with the following headers: **Source Currency**, **Target Currency**, **Exchange Rate**, and **Effective Date**.


          For more details on how to format your CSV file, please see the [Knowledge Base](https://mavenlink.zendesk.com/hc/en-us/articles/360047982574).


          Alternatively, you can provide exchanges rates via the `exchange_rates` parameter. If both `csv_file` and `exchange_rates` are provided, `csv_file` will override `exchange_rates`.'
        style: form
        explode: false
        schema:
          type: string
      - in: path
        name: id
        required: true
        description: The ID of the Model.
        schema:
          type: integer
      responses:
        '200':
          description: Exchange Table has been created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int32
                    description: Number of exchange tables in the response.
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        format: int32
                        description: Number of exchange tables in the response.
                      page_count:
                        type: integer
                        format: int32
                        description: Number of pagination pages available.
                      page_number:
                        type: integer
                        format: int32
                        description: Current pagination page.
                      page_size:
                        type: integer
                        format: int32
                        description: Number of elements in a pagination page.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        id:
                          type: string
                          description: The ID of the exchange table.
                  exchange_rates:
                    type: object
                    properties:
                      id:
                        type: object
                        properties:
                          id:
                            type: integer
                            format: int32
                            description: The ID of the exchange rate.
                          exchange_table_id:
                            type: integer
                            format: int32
                            description: The ID of the exchange table.
                          source_currency:
                            type: string
                            description: The currency you are converting from.
                          target_currency:
                            type: string
                            description: The currency you are converting to.
                          effective_date:
                            type: string
                            format: date
                            description: The date the exchange rate takes effect.
                          rate:
                            type: string
                            description: "The rate of the exchange from source to target currency. For example, a rate of 1.53 for a USD (source) to AUD (target) conversion\n                  would mean 1USD = 1.53AUD."
                          source_currency_symbol:
                            type: string
                            description: The symbol for the source currency.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                exchange_rates:
                  type: array
                  description: An array of hashes represents an entire exchange rate table, while each hash represents a row in the table. Each row (hash) contains four (4) fields that make up a currency conversion, organized by columns in a table. These fields are source currency, target currency, effective date, and exchange rate of each currency conversion. Add hashes to define a new currency exchange, or modify the fields of existing hashes to update those currency conversions.
                  items:
                    type: object
                    properties:
                      source_currency:
                        type: string
                        description: The currency you are converting from.
                      target_currency:
                        type: string
                        description: The currency you are converting to.
                      effective_date:
                        type: string
                        format: date
                        description: The date the exchange rate takes effect. The date must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.
                      exchange_rate:
                        type: string
                        description: The rate of the exchange from source to target currency. For example, a rate of 1.53 for a USD (source) to AUD (target) conversion would mean 1USD = 1.53AUD.
        required: true
    get:
      summary: Fetching a list of Exchange Rates
      description: Returns all current exchange rates for a specified exchange table, unless filter parameters have been applied..
      operationId: Get Exchange Rates
      tags:
      - Exchange Tables
      parameters:
      - in: path
        name: id
        required: true
        description: The ID of the Model.
        schema:
          type: integer
      - in: query
        name: date
        required: false
        description: Filter for rates by the date the exchange rate takes effect. The date must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.
        schema:
          type: string
          format: date
      - in: query
        name: page
        required: false
        schema:
          type: integer
          format: int32
      - in: query
        name: per_page
        required: false
        schema:
          type: integer
          format: int32
      - in: query
        name: source_currency
        required: false
        description: Filter for rates with the specified source currency (in [ISO code](https://mavenlink.zendesk.com/hc/en-us/articles/360041576473-Supported-Currency-ISO-Codes) format). The source currency is the currency you are converting from.
        schema:
          type: string
      - in: query
        name: target_currency
        required: false
        description: Filter for rates with the specified target currency (in [ISO code](https://mavenlink.zendesk.com/hc/en-us/articles/360041576473-Supported-Currency-ISO-Codes) format). The target currency is the currency you are converting to.
        schema:
          type: string
      responses:
        '200':
          description: A list of Exchange Tables have been retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int32
                    description: Number of exchange tables in the response.
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        format: int32
                        description: Number of exchange tables in the response.
                      page_count:
                        type: integer
                        format: int32
                        description: Number of pagination pages available.
                      page_number:
                        type: integer
                        format: int32
                        description: Current pagination page.
                      page_size:
                        type: integer
                        format: int32
                        description: Number of elements in a pagination page.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        id:
                          type: string
                          description: The ID of the exchange table.
                  exchange_rates:
                    type: object
                    properties:
                      id:
                        type: object
                        properties:
                          id:
                            type: integer
                            format: int32
                            description: The ID of the exchange rate.
                          exchange_table_id:
                            type: integer
                            format: int32
                            description: The ID of the exchange table.
                          source_currency:
                            type: string
                            description: The currency you are converting from.
                          target_currency:
                            type: string
                            description: The currency you are converting to.
                          effective_date:
                            type: string
                            format: date
                            description: The date the exchange rate takes effect.
                          rate:
                            type: string
                            description: "The rate of the exchange from source to target currency. For example, a rate of 1.53 for a USD (source) to AUD (target) conversion\n                  would mean 1USD = 1.53AUD."
                          source_currency_symbol:
                            type: string
                            description: The symbol for the source currency.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '403':
          description: Forbidden request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '404':
          description: Page Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
components:
  schemas:
    Errors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    Error:
      type: object
      properties:
        type:
          type: string
        message:
          type: string
  securitySchemes:
    BearerToken:
      type: apiKey
      name: Bearer
      in: header
    OauthSecurity:
      type: oauth2
      flows:
        authorizationCode:
          scopes: {}
          authorizationUrl: https://app.mavenlink.com/oauth/authorize
          tokenUrl: https://app.mavenlink.com/oauth/token
x-tagGroups:
- name: '# Subscribed Events'
  tags:
  - Event Types
  - Events
- name: Account Locations
  tags:
  - Account Locations
- name: Account Settings & Members
  tags:
  - Access Group Memberships
  - Account Colors
  - Account Invitations
  - Account Memberships
  - Backup Approver Associations
  - Billable Utilizations
  - Cost Rates
  - Custom Branding
  - Organization Memberships
  - Organizations
  - Roles
  - Skill Categories
  - Skill Memberships
  - Skills
  - Task Status Sets
  - Task Statuses
  - User Group Memberships
  - Users
- name: Currencies
  tags:
  - Currencies
- name: Custom Fields
  tags:
  - Custom Field Choices
  - Custom Field Sets
  - Custom Field Values
  - Custom Fields
- name: Data Exporter
  tags:
  - Data Export Schema
  - Data Exports
- name: Estimates
  tags:
  - Estimate Scenario Resource Allocations
  - Estimate Scenario Resources
  - Estimate Scenarios
  - Estimates
- name: Expense Budgets
  tags:
  - Expense Budgets
- name: Expense Tracking
  tags:
  - Attachments
  - Expense Categories
  - Expense Report Submissions
  - Expenses
  - Vendors
- name: External References
  tags:
  - External References
- name: Financials
  tags:
  - Billing Milestones
  - Revenue Recognition Methods
- name: Foreign Exchange
  tags:
  - Exchange Tables
- name: Insights & Analytics
  tags:
  - Insights Access Group Memberships
  - Insights Dynamic Dashboards
  - Insights Report Exports
  - Insights Reports
- name: Invoices
  tags:
  - Client Invoice Defaults
  - External Payments
  - Invoices
  - Workspace Invoice Preferences
- name: Personal Settings
  tags:
  - Users
- name: Posts & Replies
  tags:
  - Attachments
  - Posts
  - User File Associations
- name: Project Snapshots
  tags:
  - Project Snapshots
- name: Project Templates
  tags:
  - Project Template Additional Tabs
  - Project Template Assignments
  - Project Template Expense Budgets
  - Project Templates
- name: Projects
  tags:
  - Partici

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavenlink/refs/heads/main/openapi/mavenlink-exchange-tables-api-openapi.yml