Introduction to Atrium
The MX Atrium API supports over 48,000 data connections to thousands of financial institutions. It provides secure access to your users’ accounts and transactions with industry-leading cleansing, categorization, and classification. Atrium is designed according to resource-oriented REST architecture and responds with JSON bodies and HTTP response codes. Use Atrium’s development environment, vestibule.mx.com, to quickly get up and running. The development environment limits are 100 users and access to the top 15 institutions.Getting Started
To get started right away with some of the most common tasks and frequently used features of Atrium, you can check out our detailed developer guide. Our developer guide also explains our test endpoints and test credentials to help you get off the ground as soon as possible. We’ve also provided wrapper libraries in several languages. Visit the appropriate GitHub page below. C# Go Java Node PHP Python RubyAggregation and Data Availability
Aggregation is how Atrium is able to gather financial data from multiple sources and then deliver it to you. It is the core feature of the Atrium API. MX automatically aggregates certain members in the background every 24 hours. Specifically, we aggregate all members whoseconnection_status is either CONNECTED, CREATED, or UPDATED — unless the member has been disabled.
You may aggregate a member via the aggregate member endpoint to get the most up-to-date information on accounts and transactions. When you aggregate a member with this endpoint, MX will not initiate a background aggregation within the next 20-hour period.
Aggregation Limits
The default minimum time between aggregation events is 10,800 seconds (3 hours), though this limit can vary by institution. Aggregating within this limit will not return an error, however; the response will simply contain the current state of themember, including the latest connection_status. Certain codepaths may also bypass this limit — for instance, updating a member’s credentials.
The MX Bank test institution has no aggregation limits.
Data Availability
Be aware that aggregation is not guaranteed to return all relevant information or even every data point on a given resource. For instance, aggregation may return thebalance of an account, but return a null value for the apr and day_payment_is_due fields. This is to be expected in all resources and all aggregations.
API Architecture and Resource Structure
Atrium is designed around the REST architecture and uses predictable, resource-oriented URLs. Requests are made with HTTP methods and HTTP response codes indicate the success or failure of those requests. Atrium has five broad groups of resources, each with their own attributes and endpoints:Authentication and Security
Atrium API requests must be HTTPS with encryption TLSv1.2 or higher or else they will fail. All requests are authenticated with tokens in request headers:MX-API-Key and MX-Client-ID. The production and development environments require separate tokens. Development tokens are granted automatically during the signup process; These can be found on your profile page.
Because these tokens grant access to all of your data, you must keep them secret and keep them safe. Do not share them in public areas, use them in client-side code, or otherwise use them in a way that may compromise their security. In some instances, requests that require authentication will return 404 Not Found, instead of 401 Unauthorized. This is to prevent leaking private information.
Base URL
Production EnvironmentCaching
Certain Atrium resources are subject to change at any time; for instance, institutions and institution credentials. For this reason, MX discourages partners from caching lists of resources. If caching is necessary, MX recommends refreshing a cached list at least daily.Character Encoding
Requests to Atrium must use characters encoded with the UTF-8 standard.Data Encoding
MX Technologies is committed to providing high-quality data to accommodate a wide range of scenarios. Due to the financial nature of our data, sometimes special characters such as', <, >, ", and = will be found in string
fields. For example, an account might be identified as Mortgage Loan <= 15 Years. We strongly recommend that clients
sanitize and/or encode the output of our API, such as HTML encoding prior to rendering in a web view.
Data Format
JSON structured data is returned in all responses, including some errors.Dates and Times
Dates and times are always given in ISO 8601 format. Fields which end in_on are given without a timestamp: 2018-07-18
Fields which end in _at are given with a timestamp: 2015-04-13T12:01:23-06:00.
Errors
Atrium uses conventional HTTP response codes to indicate the success or failure of a request, with supplementary error messaging as needed within response bodies.Example
Identifiers and Metadata
Atrium gives you two special — but optional — fields which you can define for any resource created with the API:identifier and metadata. These fields make it easier to customize and integrate Atrium with your systems.
For instance, you may need to make certain that some resources are created only once. In these situations, you can give an unique identifier to resources created with Atrium. Atrium will return a 409 Conflict error if a resource is created with an identifier that already exists.
You might also use the metadata field to store custom data about a resource. For example, you could store a user’s username for your system, their sign-up date, the date and time of their last logon in your system, or all of these.
Example
metadata Request
identifier Request
identifier Conflict Response
IP Address Whitelisting
All IP addresses which will make calls to Atrium’s production environment must be whitelisted first. A403 Forbidden error will be returned for non-whitelisted addresses. The vestibule environment does not require any whitelisting.
You can whitelist IP addresses on your account profile.
Limits
User and member limits
The development environment limits developers to 100 users and access to the top 15 institutions. Nouser may have more than 25 members in either the development or production environments.
Aggregation throttling
Standard aggregation jobs are throttled, and a new standard agg can only be started after the throttle period has elapsed. The default throttle period is three hours (10,800 seconds), though this limit can vary from one institution to another. However, premium agg-type jobs won’t start the throttle period (extended history, identification, verification, statements, balance check). In other words, running a standard agg will always start the throttle period and prevent a new standard agg. Running any other type of job will not start the throttle period. Premium aggregation-type jobs are never throttled. That is, you can run an account verification right after a standard agg (or balance request, or verification etc.). However, because standard aggs are throttled, you should generally use theinclude_transactions parameter on premium jobs if standard data is also required; this will prevent delays.
Throttled jobs will not return an error; the response will return with 202 Accepted and will contain the current state of the member, including the latest connection_status.
Jobs for members that have experienced credential-related errors won’t be throttled (connection_status: REJECTED, PREVENTED, UPDATED).
Balance jobs are limited to 5 requests every 2 hours.
There is no throttling of any kind when using the MX Bank test institution.
Numbers and Number Formats
Number limits are described by their precision and scale. Precision refers to the total number of digits. Scale refers to the number of digits to the right of the decimal. For example, 538.46’s precision,scale is 5,2. Percentages are in decimal format without the percentage sign. For example, 2.99% is written2.99.
Pagination
All endpoints which return lists are paginated. These endpoints also support two query parameters which specify the number of records per page and the page to be returned. Each response will include apagination object specifying information on the total number of entries and the current page.
Example Pagination object
Query parameters
Pagination fields
Testing
The developer guide explains how to test your setup using our test endpoints and test credentials.Versioning
We always try to make API changes backwards-compatible. However, when we make breaking changes to Atrium, we’ll increment the version number. The current version is v1. Versions are specified in a request’sAccept header. All requests will access the current version unless a different version is specified with the request, so it’s best to always specify the API version. The current Accept header is application/vnd.mx.atrium.v1+json.
Deleting Objects
When you delete an object on MX, associated child objects are also removed automatically:- Deleting a member removes all linked accounts, transactions, and holdings.
- Deleting a user removes all connected members (and their accounts, transactions, and holdings).
- Members in a
PENDINGstate are immediately purged upon deletion by MX and cannot be recovered. - Members in other states are soft-deleted and potentially recoverable through MX support before permanent purging.

