NAV
Examples

General

Introduction

Welcome to the Tink API reference! Tink makes technology that gives financial businesses and customers greater understanding and power over their money. We combine smart data collection and analytics to create rich insights that users can act on. We welcome developers to dive in and start making game-changing new apps, tools and sites using our simple API. This document explains how to work with our API and describes the data that you can access with it.

Before you start working with the Tink API, you must acquire the appropriate credentials as a 3rd-party API consumer in order to access the full set of functionality. These credentials provide different levels of permissions, which determines what type of information that can be shared with you. You can read more here.

Message formats

The Tink API is designed around REST at its core, and uses standard HTTP verbs and status codes to communicate requests and response statuses. For the JSON encoded data, properties use camel-case and enum-like string properties have capitalized property values.

String properties are encoded using UTF-8, and date long properties are represented by UNIX Epoch time in milliseconds.

Versioning

The Tink API is versioned using a version identifier in the endpoint URI. The current version of the API is v1 and we expect this to be the case for the foreseeable future. New properties and data models are continuously added to the v1 API, but it will remain backwards compatible with this specification until deprecated.

Please note that obsolete fields that are not listed in this documentation can be present on some of the responses received from the Tink API. These obsolete fields are artifacts of pre-production data models and any 3rd-party API consumer should account for the fact that unknown properties can be present.

Periods

A lot of the data served by the Tink API derived from the either transactional or otherwise date-based information, is in various forms periodized into pre-computed date-based buckets for easy access. Statistics are computed for YEARLY, MONTHLY and MONTHLY_ADJUSTED buckets, which represents different time periods.

As exemplified to the right, most of this is self explanatory, except for MONTHLY_ADJUSTED. The MONTHLY_ADJUSTED buckets adjust for the fact that in many markets, people relate to their financials based on when they receive their salary. Using Sweden as an example, salary is received on the 25th of each month, and using MONTHLY_ADJUSTED each month in Tink includes transactional data from an adjacent calendar month, covering the entire salary cycle.

The MONTHLY_ADJUSTED buckets also account for the fact that salaries are not expedited on non-business days, so if the 25th of a specific month happens to be a Saturday, the period is adjusted to start of on Friday the 24th of the same month instead.

Example

Resolution Period Start date End date
YEARLY 2015 2015-01-01 2015-12-31
MONTHLY 2015-04 2015-04-01 2015-04-31
MONTHLY_ADJUSTED 2015-04 2015-03-25 2015-04-24
DAILY 2015-04-01 2015-04-01 2015-04-01

Categories

The categories that are available for the user to categorize her transactions with, while structurally being a category tree, are available as a flat list of categories with parent/child relationships using their id and parent fields.

Category information is used for the pre-computed statistics, making aggregated spending and income data available for all the different nodes in the category tree. However, a transaction itself, can only be assigned to a leaf category.

Both the INCOME and EXPENSES categories represents users’ regular income and spending, while the TRANSFER categories are special in the sense that they represent transfers between accounts (potentially across banks), such as regular bank transfers, credit-card payments, mortgage amortizations and other transactions that should not add to the users’ actual spending.

User

The user model represents a unique Tink end-user and includes properties that defines the user, user profile information and user-modifiable settings. The user information can primarily be used whenever a Tink user signs up for a 3rd party service using her Tink account, or when user-modifiable settings, such as locale or currency, are needed in order to display or calculate the correct data in the 3rd party service.

Providers

The provider object is the representation used for financial institutes (banks, credit card institutes, etc.).

Capabilities

The provider of Handelsbanken

{
  "capabilities": ["CHECKING_ACCOUNTS", "SAVINGS_ACCOUNTS", "PAYMENTS"],
  "credentialsType": "MOBILE_BANKID",
  "currency": "SEK",
  "displayDescription": "Mobilt BankID",
  "displayName": "Handelsbanken",
  "fields": ["..."],
  "...": "...",
}

Provider capabilities are a guarantee that the logic to fetch this data has been implemented. The capabilities are available through all /api/v1/providers endpoints as the field capabilities in the JSON response. The available capabilities can be seen below.

Even though a capability is available, there could be cases where the data cannot be refreshed, i.e. there is a problem at the providers api.

Capability Description
CHECKING_ACCOUNTS Implemented logic to fetch checking accounts for this provider.
SAVINGS_ACCOUNTS Implemented logic to fetch savings accounts for this provider.
CREDIT_CARDS Implemented logic to fetch credit cards for this provider.
INVESTMENTS Implemented logic to fetch investments for this provider.
LOANS Implemented logic to fetch loans for this provider.
PAYMENTS Implemented logic to execute payments for this provider.

Credentials

The Provider of Handelsbanken

{
  "name": "handelsbanken-bankid",
  "status": "ENABLED",
  "credentialsType": "MOBILE_BANKID",
  "displayName": "Handelsbanken",
  "fields": [{
    "name": "username",
    "description": "Personnummer",
    "minLength": 12,
    "maxLength": 12,
    "optional": false,
    "...": "..."
  }]
}

POST /api/v1/credentials

{
  "providerName": "handelsbanken-bankid",
  "fields": {
    "username": "198709230000"
  }
}

The credentials object represents the user’s connection towards the Provider (most commonly a “bank connection”). The credentials, as it’s name implies, holds the information that is required when authenticating towards the Provider.

Adding Credentials to a User

When adding credentials to a User, one POSTs an object with providerName and the fields found on the corresponding Provider. In the handelsbanken-bankid example, there is only one required field. The fields parameter is a key/value map build up of field name as key and the value the user provided for this particular field.

When POSTing this object to /api/v1/credentials, it automatically starts a “refresh” of data towards the specified Provider.

Credentials Status

GET /api/v1/credentials/{id}

{
  "providerName": "handelsbanken-bankid",
  "fields": {
    "username": "198709230000"
  },
  "status": "AUTHENTICATING",
  "statusUpdated": 1500000000000,
  "updated": null
}

A simple example of a CredentialsController

module.exports = function(callbacks) {

  this.callbacks = callbacks;
  this.stopped = false;

  function onUpdatedCredentials(newCredentials) {

    if (this.stopped) {
      return;
    }

    this.credentials = newCredentials;

    switch(this.credentials.status) {
      case 'AWAITING_MOBILE_BANKID_AUTHENTICATION':
        this.callbacks.onAwaitingMobileBankId(this.credentials);
        break;
      case 'AWAITING_SUPPLEMENTAL_INFORMATION':
        this.callbacks.onAwaitingSupplementalInfo(this.credentials);
        break;
      case 'UPDATING':
        this.callbacks.onUpdating(this.credentials);
        break;
      case 'UPDATED':
        this.callbacks.onUpdated(this.credentials);
        break;
      case 'AUTHENTICATION_ERROR':
      case 'TEMPORARY_ERROR':
        this.callbacks.onError(this.credentials);
        break;
      default:
        //Do nothing
        break;
    }
  }

  function onCredentialsResponse(newCredentials) {
    var newStatusUpdated = newCredentials.statusUpdated;
    var prevStatusUpdated = this.credentials.statusUpdated;

    if ((!prevStatusUpdated && newStatusUpdated) || (newStatusUpdated > prevStatusUpdated)) {
      onUpdatedCredentials.call(this, newCredentials);
    }
  }

  this.startAuthentication = function(credentials) {
    this.stopped = false;
    this.credentials = credentials;

    this.intervalRef = setInterval(function() {
      // callback on onCredentialsResponse with new response
      CredentialsService.fetch(this.credentials.getId(), onCredentialsResponse);
    }.bind(this), 1000);
  };

  this.stop = function() {
    this.stopped = true;

    if (this.intervalRef) {
      clearInterval(this.intervalRef);
    }
  };
}

During the refresh of data from a Provider, different statuses can occur. The general idea is that the client should act upon the status if the timestamp statusUpdated is greater than what the client previously had. Updates to credentials can be listened by simply polling the endpoint GET /api/v1/credentials/{id}.

Status Description
CREATED Initial status
AUTHENTICATING When starting the authentication process
AWAITING_MOBILE_BANKID_AUTHENTICATION Trigger for client to prompt the user to open Mobile BankID (Swedish out-of-band authentication app).
AWAITING_SUPPLEMENTAL_INFORMATION Trigger for the client to prompt the user to fill out supplemental information. The fields can be found on credentials parameter supplementalInformation.
UPDATING User has been successfully authenticated, now downloading data.
UPDATED Final state: Refresh was successful and data downloaded.
AUTHENTICATION_ERROR Final state: Error during authentication, typically due to bad input. Requires user input to refresh again.
TEMPORARY_ERROR Final state of current refresh. A temporary error occurred when refreshing data, most typically due to some issue on the Provider’s side. This error state does not require user input to try again.

Opt-in feature (contact us to enable this feature)

Everything described in this part assumes that the Opt-in feature has been enabled.

This feature will give the users a change to choose what accounts they want us to fetch data for. Only accounts that the users has opted in for will be available. Also refreshes will only refresh data for accounts that a users has opted in for.

Create

When creating credentials, the user’s input of what accounts to opt-in for is required. This will be notified to the client by the credentials status AWAITING_SUPPLEMENTAL_INFORMATION with the account information available on the credentials parameter supplementalInformation. When the supplemental information has been supplied a refresh of the opted in accounts will be done.

An example of a credentials response with supplemental information for Opt-in

{
  "providerLatency" : 0,
  "id" : "e6d7de4350b54f83a7ccf261e3ae5b5f",
  "providerName" : "handelsbanken-bankid",
  "status" : "AWAITING_SUPPLEMENTAL_INFORMATION",
  "statusUpdated" : 1539691829369,
  "supplementalInformation" : "[{\"description\":\"9999-444444444444 ISK\",\"helpText\":null,\"hint\":null,\"immutable\":false,\"masked\":false,\"maxLength\":null,\"minLength\":null,\"name\":\"9999-444444444444\",\"numeric\":false,\"optional\":false,\"pattern\":\"true/false\",\"patternError\":null,\"value\":\"false\",\"sensitive\":false,\"checkbox\":true,\"additionalInfo\":\"{\\\"accountName\\\":\\\"ISK\\\",\\\"accountType\\\":\\\"INVESTMENT\\\",\\\"balance\\\":123456.0,\\\"holderName\\\":null,\\\"iban\\\":null}\"},{\"description\":\"9999-222222222222 Sparkonto\",\"helpText\":null,\"hint\":null,\"immutable\":false,\"masked\":false,\"maxLength\":null,\"minLength\":null,\"name\":\"9999-222222222222\",\"numeric\":false,\"optional\":false,\"pattern\":\"true/false\",\"patternError\":null,\"value\":\"false\",\"sensitive\":false,\"checkbox\":true,\"additionalInfo\":\"{\\\"accountName\\\":\\\"Sparkonto\\\",\\\"accountType\\\":\\\"SAVINGS\\\",\\\"balance\\\":385245.33,\\\"holderName\\\":null,\\\"iban\\\":null}\"},{\"description\":\"9999-333333333333 Bolån\",\"helpText\":null,\"hint\":null,\"immutable\":false,\"masked\":false,\"maxLength\":null,\"minLength\":null,\"name\":\"9999-333333333333\",\"numeric\":false,\"optional\":false,\"pattern\":\"true/false\",\"patternError\":null,\"value\":\"false\",\"sensitive\":false,\"checkbox\":true,\"additionalInfo\":\"{\\\"accountName\\\":\\\"Bolån\\\",\\\"accountType\\\":\\\"LOAN\\\",\\\"balance\\\":-2300000.0,\\\"holderName\\\":null,\\\"iban\\\":null}\"},{\"description\":\"9999-111111111111 Transaktionskonto\",\"helpText\":null,\"hint\":null,\"immutable\":false,\"masked\":false,\"maxLength\":null,\"minLength\":null,\"name\":\"9999-111111111111\",\"numeric\":false,\"optional\":false,\"pattern\":\"true/false\",\"patternError\":null,\"value\":\"false\",\"sensitive\":false,\"checkbox\":true,\"additionalInfo\":\"{\\\"accountName\\\":\\\"Transaktionskonto\\\",\\\"accountType\\\":\\\"CHECKING\\\",\\\"balance\\\":26245.33,\\\"holderName\\\":null,\\\"iban\\\":null}\"}]",
  "type" : "MOBILE_BANKID",
  "userId" : "965ec63c8b5a4743914788f6cafcc564",
  "fields" : {
    "username" : "201212121212"
  },
  "username" : "201212121212",
  "sensitivePayload" : { }
}

Refresh

When doing a refresh only the opted in accounts will be refreshed.

To change what accounts that are opted in the client can trigger a refresh with a query parameter optIn=true. All available accounts will be supplied with supplemental information on the credentials object. The accounts that are already opted in will have value: true, all other accounts will have value: false. When opting in for accounts the backend expects the full new state (no patching). This means that the opted in accounts after the change has been done will be the ones that had value: true in the supplemental information request.

To provide the client with more information about the accounts a serialized JSON object is available on the field additionalInfo.

Key Description
accountName The name of the account.
accountType The account type Tink have set on the account (CHECKING, SAVINGS, INVESTMENT, MORTGAGE, CREDIT_CARD, LOAN, PENSION)
balance The current balance of the account.
holderName The name of the account owner.
iban The international bank account number of the account.

Account

When a credentials connection is successfully established, all supported accounts from the financial institution are aggregated and made available in the Tink API. An account can represent everything from the user’s regular checking account to an investment account with their broker, or their home mortgage as a credit account.

Tink does what it can to try to determine the real type of account, but always defaults to marking the account as a regular CHECKING-account if we can’t figure it out.

The ownership property adheres from the case where a user has selected that she’s sharing the account with someone else. The effect of the ratio is that both the balance of the account, as well as any transactions stemming from the account, are only partly contributing towards the user’s spending and total net-worth when the aggregated statistics are calculated.

The balance property of an account tries to provide a unified concept of balance across the different account types, which the intention to represent the user’s current standing with the financial institution, and not the disposable amount. As an example, on a CHECKING account, the balance represent the actual amount of cash in the account. In the case of a CREDIT_CARD account, the balance is the outstanding balance on the account, and does not include any available credit or purchasing power the user has with the credit provider.

Also worth mentioning, the balance property represents the current balance of the account when the credentials was last updated successfully. Historical account balance information is available through the statistics interface, with a type of balances-by-account and the id of the account as the description of the statistics objects.

The accountExclusion property specifies what products to exclude from an account, the possible values are :

NONE No features are excluded from this account.

PFM_DATA Categorization and PFM Features are excluded.

PFM_AND_SEARCH As above, but transactions belonging to this account are not indexed so they are not searchable. This is the equivalent of the, now deprecated, boolean flag ‘excluded’.

AGGREGATION Upon setting Account Exclusion to “AGGREGATION”, all data beneath the account is removed (except account name and account number). This includes User generated content like categories and tags. Moreover, in any future data refreshes, no data will be stored for the Account. The data removal is irreversible, however, all data, possible to retrieve, will be downloaded again, should the AGGREGATION exclusion be removed from the Account again.

Transaction

An account usually contains multiple transactions (except for certain types of accounts where Tink can’t access the underlying transactions, for example, certain INVESTMENT accounts). The transaction model represents any operations on an account, and could represent both the actual credit-card purchase on a CREDIT_CARD account, but also represent the transaction when you payed your credit-card bill. Most commonly, the transactions on an account should represent what the end-user typically.

The payload property can include arbitrary metadata which provided by the financial institution in question that can be used either for deep-linking back to the financial institution’s app, for displaying additional information about the transaction, or for backend purposes such as automatic categorization improvement, etc. It can also include metadata generated by Tink, for example, transfer transactions that are automatically flagged as transfers based on the identification of the corresponding transaction on the other account, includes the primary identifier of the peer transaction for easy access

Searching for Transaction

In the Tink Platform, you either GET one transaction or you Search for Transactions. The Search Service handles querying on multiple parameters as can be seen by the endpoint in the API reference. However, there are also parameters that are parsed from the free text (queryString). All the commands below is typically applied per word in the query and if multiple commands are found, they are concatenated to the Search with AND (OR does not exist).

Query String commands

Type Description Keywords
Tags Searches specifically for transactions with tags. Words starting with ’#’.
Amount Span  Searches for transactions within the given amount span. Keywords here depend on the locality of the user. over, under, more than, less than, around
Date/Time Span  Searches for transactions within the given date/time span. Keywords here depend on the locality of the user. weekdays, weekends, today, yesterday, this week/month/year, last week/month/year, week #.
Category Searches specifically for transactions with the specified category. Keywords here depend on the locality of the user. Restaurant, Bar

Statistics

By querying the statistics endpoint, an API consumer can select the specific types of data to access. The query should be posted in the request body and you can specify any of the properties available to filter the result set. Defining multiple properties will yield an AND operation, and specifying multiple values of a property will yield an OR operation.

Statistics types

Type description value Description Available resolutions
balances-by-account Primary identifier of an account Balances over time by each account MONTHLY MONTHLY_ADJUSTED
balances-by-account-type-group The type group name Balances over time by each account group MONTHLY MONTHLY_ADJUSTED
expenses-by-category Primary identifier of a category Sum of expenses per period in each category MONTHLY MONTHLY_ADJUSTED YEARLY DAILY WEEKLY
expenses-by-category/by-count Primary identifier of a category Count of expenses per period in each category MONTHLY MONTHLY_ADJUSTED DAILY WEEKLY
income-by-category Primary identifier of a category Sum of Incomes per period in each category MONTHLY MONTHLY_ADJUSTED
income-and-expenses Sum of transactions per period for category type MONTHLY MONTHLY_ADJUSTED YEARLY
left-to-spend The date Takes income minus expenses over time MONTHLY MONTHLY_ADJUSTED
left-to-spend-average The date Average income minus expenses over 6 months MONTHLY MONTHLY_ADJUSTED

Testing Account Aggregation

The Tink Test Providers are static implementations of providers and banks that allow developers to test Tink, without having to enter real bank credentials. Creating credentials with a provider of type: TEST will still utilize all the flows in the Tink ecosystem, but without communicating with an actual provider or bank. There are multiple providers of type: TEST that will emulate different authentication flows and types of data. You can find more about the test providers here.

Example of a Test Provider

{
    "name": "test-successful-bankid",
    "credentialsType": "MOBILE_BANKID",
    "currency": "SEK",
    "displayName": "Test BankID",
    "fields": [
        {
            "hint": "YYYYMMDDNNNN",
            "name": "username",
            "numeric": true,
            "pattern": "(19|20)[0-9]{10}",
            "immutable": true,
            "maxLength": 12,
            "minLength": 12,
            "description": "Social security number",
            "patternError": "Please enter a valid social security number."
        }
    ],
    "...": "...",
    "passwordHelpText": "To connect your broker, you need to identify yourself using Mobile BankID.",
    "status": "ENABLED",
    "type": "TEST"
}
Test Provider Description
test-bankid-successful Will authenticate successful for the correct username.
test-bankid-failing Will allways fail to authenticate.
test-password Requries the user to enter test-credentials in the form of a username and a password.
test-multi-supplemental Scenario of an external authentication system, where two separate codes are entered into the system.

During a refresh on a TEST provider, data will be refreshed for: CHECKING, SAVINGS, INVESTMENT, MORTGAGE, LOAN. Demo data will be generated and refreshed by the Tink platform.

To authenticate with the test credentials, populate the fields parameter in the request body. You can read more about the fields here. Furthermore, the test-multi-supplemental provider requires additional supplemental information to authenticate. You can find more information of how to authenticate with supplemental information here.

Provider Name Username Password Supplemental
test-password tink tink1234 -
test-multi-supplemental tink-test - 1234, 4321
test-bankid-failing 180012121212 - -
test-bankid-successful 180012121212 -

API access with OAuth2

Temporary users with OAuth flow

Access to the Tink API for 3rd party API consumers is available using industry standard OAuth2 authentication methods for transparent and secure access to user data.

NOTE: this does not apply to Enterprise customers.

Here’s how it works:

  1. The user is taken to tink.se.
  2. The user chooses a bank, accepts the given scope and authenticates.
  3. An access code is sent back to your application.
  4. With the code, your application can get an API access_token, and fetch the user’s bank data from the Tink API.

Currently, we only store temporary data for our OAuth API consumers. This means that we delete the end users’ data after a short period of time. Creating permanent users in our database is limited to our Enterprise customers, but will be enabled soon for OAuth API consumers as well.

Demo - an example app

Check out our example application at https://demo.tink.se. It’s an example of how a 3rd party API consumer could integrate with the Tink API using the OAuth end user authentication flow, in order to fetch some user bank data. If you’re curious and want to know how it’s built, check out the public repository tink-connect-example.

Getting access

GET /oauth/manager/client (deprecated)

$ curl -v https://api.tink.se/api/v1/oauth/manager/client \
-u "YOUR_EMAIL:YOUR_PASSWORD"
{
  "clients" : [ {
    "name" : "Test App",
    "id" : "5b0d7a2d74a8470fab64db45ffb6f511",
    "redirectUris" : [ "http://localhost:3000/callback" ],
    "scope" : "accounts:read,user:read",
    "secret" : "2a2a9700627d4a4d9823d0d43391e05f",
    "url" : "",
    "iconUrl" : ""
  } ]
}

PUT /oauth/manager/client/{YOUR_CLIENT_ID} (deprecated)

$ curl -v -X PUT https://api.tink.se/api/v1/oauth/manager/client/YOUR_CLIENT_ID \
-d '{"redirectUris" : ["http://localhost:3000/callback", "http://localhost:3000/new/test/callback"], "iconUrl" : "http://localhost:3000/test.png"}' \
-u "YOUR_EMAIL:YOUR_PASSWORD" \
-H 'Content-Type: application/json'
{
  "name" : "Test App",
  "id" : "5b0d7a2d74a8470fab64db45ffb6f511",
  "redirectUris" : [ "http://localhost:3000/callback", "http://localhost:3000/new/test/callback" ],
  "scope" : "accounts:read,user:read",
  "secret" : "2a2a9700627d4a4d9823d0d43391e05f",
  "url" : "",
  "iconUrl" : "http://localhost:3000/test.png"
}

Before starting, a set of OAuth2 client credentials must be generated and distributed to the 3rd-party API consumer. They contain the scope privileged and the client secret that should be submitted to receive the API access_token. You can create a developer account here.

Keep the secret a secret!

The client secret should be treated confidentially, and should never be distributed in untrusted channels. However, the client_id is not secret, and can be bundled in publicly available apps.

OAuth client configuration

You will soon be able to see and configure your OAuth2 client details at https://console.tink.se. Until then, you can manually GET and PUT the OAuth2Client object on the API through the following endpoints: GET /api/v1/oauth/manager/client and PUT /api/v1/oauth/manager/client/{clientId}. It is only possible to update the redirectUris and iconUrl fields through the PUT request, and you can’t have more than 30 redirectUris.

NOTE: These endpoints are deprecated and for manual usage only. Do not use them inside your app.

You can read about other possible configurations here.

Permissions

Access to user data is controlled by using OAuth2 security scopes or permissions. Each 3rd-party API consumer is configured to have a set of scopes which control the maximum permitted data access. For each end-user authorization process, a subset of those permissions can be requested for the user to authorize. For example, the full possible scope to request could be accounts:read,transactions:read, but for a specific authorization process, it’s possible to only request accounts:read.

This setup provides a way for 3rd-party services to selectively request the right set of permissions from the user depending on the use case for the data. If a 3rd-party API consumer has access to a broad set of permissions, it’s highly recommended to be prudent in which permissions you actually request from the end-user.

Scope Description
user:read Access to user profile data such as e-mail, date of birth, etc.
credentials:read Access to the information describing the user’s different bank credentials connected to Tink.
accounts:read Access to all the user’s account information, including balances.
transactions:read Access to all the user’s transactional data.
investments:read Access to the user’s portfolios and underlying financial instruments.
statistics:read Access to all the user’s statistics, which can include filters on statistic.type.

Other non-public security scopes are available for specific partners.

Initiate an Authorization

You need an authorization link to be able to send users to the OAuth flow. To start the OAuth process, you can open the link in your browser. When you later build this into your application, you can simply add a “Connect Bank” button with this link.

Required parameters:

Parameter Description
client_id Your OAuth client id.
redirect_uri By default, you will have http://localhost:3000/callback as a valid redirect_uri. This is the path that will receive the code. NOTE: no other URI will work unless it’s configured in our database, where you can have a set of accepted redirect URIs. For security reasons we require an exact match. To just test that everything works, you don’t need to set up anything on this route, but you can of course do that. Also worth noting is that you must use https if using a redirect_uri that is not localhost due to security reasons.
scope The scope parameter can receive multiple scopes separated by a comma. For example: accounts:read,transactions:read,statistics:read,user:read.

Optional parameters:

Parameter Description
input_username If this is provided, the username field will be pre-filled. If not, the user can type it in. Providing this in the URL makes most sense if the username is a general username, valid for multiple banks. This could for example be a Personal Identification Number for a specific country or a Social Security Number.
input_provider The unique name of the provider (for example sbab-bankid). If this is provided, the provider will be chosen for the user. If not, the user can choose the provider in a list. If the given parameter is not a valid provider, the user will see an error screen, so make sure you have the correct provider name from this endpoint.
market If omitted, it will default to a default market. However, you can provide a market code here and the list of providers will show the available providers for that market. For example, &market=DK would show Danish providers. Markets currently available are Sweden, Norway, Finland and Denmark (SE, NO, FI and DK).
locale If omitted, the default locale will be used (en_US). We also support Swedish sv_SE.
state Optional, but highly recommended parameter that’s useful in preventing Cross-site Request Forgery (CSRF) attacks. The application provides a randomised state value to the authorisation flow at initiation, and that value will be sent back verbatim to the callback URL after a successful grant. The application can then verify the returned value to make sure the request came from the application itself.
iframe Should be used if the OAuth flow is embedded inside an iframe. If the parameter is set to iframe=true, the redirect with the authentication code will be replaced by a postMessage to the parent. Note that iframe embedding is limited to our Premium customers. For more information, contact api-support@tink.se.

When you’re done, your link will look something like this:

https://oauth.tink.se/0.4/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=http://localhost:3000/callback&scope=accounts:read,transactions:read,statistics:read,user:read

Note that you can add optional parameters here, such as market and locale.

Authorization response

When the OAuth process is done, you will get a response with the result. This will either be a success or an error. The response will be delivered to the specified redirect_uri. For premium customers using iframe mode, the response will be delivered as a postMessage to the parent. The parameters will be sent in the url query.

Success Callback

Redirect mode

The following table describes the parameters in the success response when using redirect mode.

Parameter Description
code The authorization code to be exchanged for an access_token.

Example success response (redirect mode)

https://your-domain.com/oauth/callback?code=6915ab99857fec1e6f2f6c078

Iframe mode

The following table describes the parameters in the success response when using iframe mode.

Parameter Description
type The authorization code to be exchanged for an access_token. Will always be code
data The data that represents the type. Will always be the code.

Example success response (iframe mode)

{
    "type": "code",
    "data": "6915ab99857fec1e6f2f6c078"
}

Error Callback

Redirect mode

The following table describes the parameters in the error response when using redirect mode

Parameter Description
error An enumerable defined below in Error Statuses.
message A message for developers describing the error.
credentials ID for the credentials object. Only sent in an AUTHENTICATION_ERROR

Example error response (redirect mode)

https://your-domain.com/oauth/callback?error=USER_CANCELLED&message=The%20user%20cancelled%20the%20authentication

Iframe mode

The following table describes the parameters in the error response when using iframe mode

Parameter Description
type A type of error. One of error or Credentials
error The error object. Has parameters status, message and userMessage
data The data related to the error. The Credentials object in case of AUTHENTICATION_ERROR

Example error response (iframe mode)

{
    "type": "error",
    "error": {
        "status": "USER_CANCELLED",
        "message": "The user cancelled the authentication"
    }
}

Error Statuses

Status Description
BAD_REQUEST The authorization link was incorrectly configured.
USER_CANCELLED The user cancelled the authorization flow.
AUTHENTICATION_ERROR The end user was not successfully authenticated to its financial service. Further information will be given by the status and statusPayload of the Credentials object found in the data parameter.
INTERNAL_ERROR A temporary error within the Tink services. Please try again soon.

Exchange access tokens

Once you have received the authorization code in the redirect URI, you can use that code to exchange it for an access_token. This must be done using the client secret, which you received with your client_id.

POST /oauth/token (get access token)

$ curl -v -X POST https://api.tink.se/api/v1/oauth/token \
-d 'code=1a513b99126ade1e7718135019fd119a' \
-d 'client_id=YOUR_CLIENT_ID' \
-d 'client_secret=YOUR_CLIENT_SECRET' \
-d 'grant_type=authorization_code'

{
    "access_token": "78b0525677c7414e8b202c48be57f3da",
    "token_type": "bearer",
    "expires_in": 7200,
    "refresh_token": "33f10ce3cb1941b8a274af53da03f361",
    "scope": "accounts:read,statistics:read,transactions:read,user:read"
}

If you provided the correct code, client_id and secret, you should get a successful response with an access_token and a refresh_token.

If you get an error here, such as 401 unauthorized, this could have multiple reasons. It could for example be an invalid secret or an expired code. The code is short-lived, so generate a new one and try again.

As hinted by the expiry time of the access token, access tokens can expire after a set amount of time and will then need to be refreshed by the 3rd-party API consumer for continued access. This is done with the refresh_token in a standard OAuth2 fashion using the same endpoint as used when exchanging the authorization code for an access token.

POST /oauth/token (refresh the token)

$ curl -v -X POST https://api.tink.se/api/v1/oauth/token \
-d 'refresh_token=33f10ce3cb1941b8a274af53da03f361' \
-d 'client_id=YOUR_CLIENT_ID' \
-d 'client_secret=YOUR_CLIENT_SECRET' \
-d 'grant_type=refresh_token'

You will then get a similar response as in the previous request.

NOTE: Since a user’s data is only stored for 24 hours, an access_token can’t be used to fetch the data when the data has been removed. Using a refresh_token won’t help, since the data is gone from our systems. This means that a refresh_token is only valid during 24 hours after the initial authentication of a user.

Access user data

Once you have a valid access token, you can use that to access user data using the Tink API. The access token is used as a bearer token in the HTTP Authentication header and more information about how the Tink API works can be found in the API-reference section.

Since we requested an accounts:read scope, we should now be able to read the user’s accounts.

GET /accounts/list (get the user’s accounts)

$ curl -v https://api.tink.se/api/v1/accounts/list -H 'Authorization: Bearer 78b0525677c7414e8b202c48be57f3da'

You should then get a JSON response with an account list.

We also requested transactions:read and statistics:read. This means that you can also fetch transaction data and statistics data.

For more information about how to query data from our API, check the rest of the API documentation!

POST /statistics/query (get the user’s statistics)

$ curl -v -X POST https://api.tink.se/api/v1/statistics/query \
-d '{"description": null, "padResultUntilToday": true, "resolution": "MONTHLY_ADJUSTED", "types": ["expenses-by-category"]}' \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer 78b0525677c7414e8b202c48be57f3da' 

POST /search (get some transactions)

$ curl -v -X POST https://api.tink.se/api/v1/search \
-d '{"limit":10}' \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer 78b0525677c7414e8b202c48be57f3da'

API Reference

Account Service

List accounts

Returns an object with a list of the authenticated user’s accounts.

GET /api/v1/accounts/list

Response Example

{
  "accounts": [
    {
      "accountExclusion": "string",
      "accountNumber": "1234-123456789",
      "balance": 34567,
      "closed": false,
      "credentialsId": "6e68cc6287704273984567b3300c5822",
      "details": {
        "interest": 0,
        "nextDayOfTermsChange": "string",
        "numMonthsBound": 0,
        "type": "string"
      },
      "excluded": null,
      "favored": null,
      "flags": "[\"MANDATE\"]",
      "holderName": "Thomas Alan Waits",
      "id": "a6bb87e57a8c4dd4874b241471a2b9e8",
      "identifiers": "[\"se://9999111111111111\"]",
      "name": "Privatkonto",
      "ownership": 0,
      "transferDestinations": [
        {
          "balance": 0,
          "displayAccountNumber": "902090-0",
          "displayBankName": null,
          "matchesMultiple": null,
          "name": "Barncancerfonden",
          "type": "EXTERNAL",
          "uri": "se-pg://9020900"
        }
      ],
      "type": "string"
    }
  ]
}

Response: AccountListResponse

Parameter Type Required Description
accounts array[Account] A list of accounts

Account

Parameter Type Required Description
accountExclusion string true The type of features to exclude for this account. This can be modified by the user.. Values: AGGREGATION, PFM_AND_SEARCH, PFM_DATA, NONE
accountNumber string true The account number of the account. Not necessarily always a full clearingnumber-accountnumber. It can be formatted differently for different accounts and banks.
balance number true The current balance of the account.
closed boolean
credentialsId string true The internal identifier of the credentials that the account belongs to.
details AccountDetails If available, details are populated.
excluded boolean true Indicates if the user has excluded the account. This can be modified by the user.
favored boolean true Indicates if the user has favored the account. This can be modified by the user.
flags string A list of flags specifying attributes on an account. Values: BUSINESS, MANDATE
holderName string The name of the account holder
id string true The internal identifier of account.
identifiers string All possible ways to uniquely identify this Account. An se-identifier is built up like: se://{clearingnumber}{accountnumber}
name string true The display name of the account. This can be modified by the user.
ownership number true The ownership ratio indicating how much of the account is owned by the user. This is used to determine how much of transactions belonging to this account should be attributed to the user when statistics are calculated. This can be modified by the user.
transferDestinations array[TransferDestination] This field contains all the destinations this Account can transfer money to, be that payment or bank transfer recipients. It will only be populated if getting accounts via GET /transfer/accounts (i.e. not through GET /accounts).
type string true The type of the account. This can be modified by the user.. Values: CHECKING, SAVINGS, INVESTMENT, MORTGAGE, CREDIT_CARD, LOAN, PENSION, OTHER, EXTERNAL

AccountDetails

Parameter Type Required Description
interest number Interest of the account. Applicable for loans and savings accounts.
nextDayOfTermsChange number A timestamp of the next day of terms change of the account. Applicable for loans.
numMonthsBound integer Populated if available. Describes how many months the interest rate is bound.
type string Account subtype. Values: MORTGAGE, BLANCO, MEMBERSHIP, VEHICLE, LAND, STUDENT, OTHER

TransferDestination

Parameter Type Required Description
balance number The balance of the account. Will only be populated for accounts that is owned by the user.
displayAccountNumber string A display formatted alpha-numeric string of the destination account/payment recipient number.
displayBankName string The name of the bank where this destination recides. Will not be populated for payment destinations.
matchesMultiple boolean Indicates whether this TransferDestination matches multiple destinations. If true, the uri will be a regular expression, for instance “se-pg://.+” meaning that the source account can make PG payments.
name string The name of the destination if one exists.
type string The account type of the destination. Will be EXTERNAL for all destinations not owned by the user.. Values: CHECKING, SAVINGS, INVESTMENT, CREDIT_CARD, LOAN, EXTERNAL
uri string The uri used to describe this destination.

Category Service

List categories for a given locale.

Returns all categories for the given locale. The locale is either taken from the authenticated user or from a query parameter, if no user is authenticated. If no user and no query parameter is given, a default locale is used.

GET /api/v1/categories

Query Parameters

Parameter Required Description
locale The locale for which to fetch categories.

Response Example

[
  {
    "code": "expenses:food.restaurants",
    "defaultChild": null,
    "id": "7e88d58188ee49749adca59e152324b6",
    "parent": "067fa4c769774ae980435c76be328c0b",
    "primaryName": "Food & Drinks",
    "searchTerms": "food,lunch,snacks",
    "secondaryName": "Restaurants",
    "sortOrder": 45,
    "type": "EXPENSES",
    "typeName": "Expenses"
  }
]

Response: array[Category]

Parameter Type Required Description
code string true Machine readable category code.
defaultChild boolean true Indicates if this is the default child to be used when categorizing to a primary level category.
id string true The internal identifier of the category, referenced by e.g. a transaction.
parent string The parent internal identifier of this category, or null.
primaryName string The primary name of this category.
searchTerms string Used by search engine to find transaction with this category.
secondaryName string The secondary name of this category.
sortOrder integer true Sort order for nicer display for the user.
type string true Type of the category.. Values: INCOME, EXPENSES, TRANSFERS
typeName string true Type name of the category.

Credentials Service

List credentials

List all credentials for the user.

GET /api/v1/credentials/list

Response Example

{
  "credentials": [
    {
      "fields": {
        "username": "198410045701"
      },
      "id": "6e68cc6287704273984567b3300c5822",
      "providerName": "handelsbanken-bankid",
      "status": "UPDATED",
      "statusPayload": "Analyzed 1,200 out of 1,200 transactions.",
      "statusUpdated": 1493379467000,
      "supplementalInformation": null,
      "type": "MOBILE_BANKID",
      "updated": 1493379467000,
      "userId": "c4ae034f96c740da91ae00022ddcac4d"
    }
  ]
}

Response: CredentialsListResponse

Parameter Type Required Description
credentials array[Credentials] A list of credentials

Credentials

Parameter Type Required Description
fields object true This is a key-value map of Field name and value found on the Provider to which the credentials belongs to. This parameter is required when creating credentials.
id string The id of the credentials.
providerName string true The provider (financial institute) that the credentials belongs to.
status string The status of the credentials.. Values: CREATED, AUTHENTICATING, AWAITING_MOBILE_BANKID_AUTHENTICATION, AWAITING_SUPPLEMENTAL_INFORMATION, UPDATING, UPDATED, AUTHENTICATION_ERROR, TEMPORARY_ERROR, PERMANENT_ERROR, AWAITING_THIRD_PARTY_APP_AUTHENTICATION, DELETED
statusPayload string A user-friendly message connected to the status. Could be an error message or text describing what is currently going on in the refresh process.
statusUpdated number A timestamp of when the credentials’ status was last updated.
supplementalInformation string A key-value structure to handle if status of credentials are AWAITING_SUPPLEMENTAL_INFORMATION.
type string The type of credentials.. Values: PASSWORD, MOBILE_BANKID, KEYFOB, THIRD_PARTY_APP
updated number A timestamp of when the credentials was the last time in status UPDATED.
userId string The id of the user that the credentials belongs to.

Get credentials

Gets credentials by id.

GET /api/v1/credentials/{id}

Parameters

Parameter Required Description
id true The id of the credentials

Response Example

{
  "fields": {
    "username": "198410045701"
  },
  "id": "6e68cc6287704273984567b3300c5822",
  "providerName": "handelsbanken-bankid",
  "status": "UPDATED",
  "statusPayload": "Analyzed 1,200 out of 1,200 transactions.",
  "statusUpdated": 1493379467000,
  "supplementalInformation": null,
  "type": "MOBILE_BANKID",
  "updated": 1493379467000,
  "userId": "c4ae034f96c740da91ae00022ddcac4d"
}

Response: Credentials

Parameter Type Required Description
fields object true This is a key-value map of Field name and value found on the Provider to which the credentials belongs to. This parameter is required when creating credentials.
id string The id of the credentials.
providerName string true The provider (financial institute) that the credentials belongs to.
status string The status of the credentials.. Values: CREATED, AUTHENTICATING, AWAITING_MOBILE_BANKID_AUTHENTICATION, AWAITING_SUPPLEMENTAL_INFORMATION, UPDATING, UPDATED, AUTHENTICATION_ERROR, TEMPORARY_ERROR, PERMANENT_ERROR, AWAITING_THIRD_PARTY_APP_AUTHENTICATION, DELETED
statusPayload string A user-friendly message connected to the status. Could be an error message or text describing what is currently going on in the refresh process.
statusUpdated number A timestamp of when the credentials’ status was last updated.
supplementalInformation string A key-value structure to handle if status of credentials are AWAITING_SUPPLEMENTAL_INFORMATION.
type string The type of credentials.. Values: PASSWORD, MOBILE_BANKID, KEYFOB, THIRD_PARTY_APP
updated number A timestamp of when the credentials was the last time in status UPDATED.
userId string The id of the user that the credentials belongs to.

Investment Service

List all the investments for a user.

Returns an object with a list of the authenticated user’s portfolios and corresponding financial instruments.

GET /api/v1/investments

Response Example

{
  "portfolios": [
    {
      "accountId": "1d764c9f9141434aa23485c03561428d",
      "cashValue": 123,
      "id": "4c72494cc67f472f9f0ec2072600fe93",
      "instruments": [
        {
          "averageAcquisitionPrice": 53,
          "currency": "SEK",
          "id": "50c3e10233ed4048bd48f3a55b5d062a",
          "isin": "US0378331005",
          "marketPlace": "NASDAQ",
          "marketValue": 22917,
          "name": "Apple Inc.",
          "portfolioId": "01f21bc10f2b46abb9b25fccd3dc64eb",
          "price": 76,
          "profit": 6894,
          "quantity": 300,
          "ticker": "AAPL",
          "type": "STOCK",
          "userId": "a52e9890520d4ec38cc0d4526a4cdcbe"
        }
      ],
      "totalProfit": 48673,
      "totalValue": 231924,
      "type": "DEPOT",
      "userId": "a52e9890520d4ec38cc0d4526a4cdcbe"
    }
  ]
}

Response: InvestmentResponse

Parameter Type Required Description
portfolios array[Portfolio] A list of the user’s portfolios.

Portfolio

Parameter Type Required Description
accountId string The internal identifier of the account which has the portfolio.
cashValue number The funds, on this portfolio, available for purchasing instruments, or to be transferred away.
id string The internal identifier of the portfolio.
instruments array[Instrument] The instruments which this portfolio holds.
totalProfit number The total profit of the entire portfolio. This includes both historical (real) profit, and current (potential) profit.
totalValue number The total current value of the entire portfolio and all its underlying instruments.
type string The type of the portfolio.. Values: ISK, KF, DEPOT, PENSION, OTHER
userId string The internal identifier of the user which owns the portfolio.

Instrument

Parameter Type Required Description
averageAcquisitionPrice number An instrument can be traded multiple times and this is the average acquisition price calculated over all trades.
currency string The currency that the instrument is traded in.
id string The internal identifier of the instrument.
isin string An International Securities Identification Number (ISIN) uniquely identifies a security.
marketPlace string The market where the instrument is traded.
marketValue number The current market value of the whole instrument. That is, not for a single share but for the entire instrument.
name string The name of the instrument, which can be different on different markets.
portfolioId string The internal identifier of the portfolio which the instrument belongs to.
price number The current market price for one share of the instrument.
profit number The total profit for this instrument over all trades.
quantity number The number of underlying shares that the user owns of this instrument.
ticker string A ticker symbol is an abbreviation used to uniquely identify a stock on a particular stock market.
type string The instrument type.. Values: FUND, STOCK, OTHER
userId string The internal identifier of the user which owns the instrument.

Loan Service

Get loans

Get all the loans for a user.

GET /api/v1/loans

Response Example

{
  "loans": [
    {
      "accountId": "string",
      "amortized": 0,
      "balance": 0,
      "credentialsId": "string",
      "id": "string",
      "initialBalance": 0,
      "initialDate": "string",
      "interest": 0,
      "loanDetails": {
        "accountId": "string",
        "applicants": [
          "string",
          "string"
        ],
        "coApplicant": false,
        "loanSecurity": "string"
      },
      "loanNumber": "string",
      "monthlyAmortization": 0,
      "name": "string",
      "nextDayOfTermsChange": "string",
      "numMonthsBound": 0,
      "providerName": "string",
      "serializedLoanResponse": "string",
      "type": "string",
      "updated": "string",
      "userId": "string",
      "userModifiedType": false
    }
  ],
  "totalLoanAmount": 0,
  "weightedAverageInterestRate": 0
}

Response: LoanResponse

Parameter Type Required Description
loans array[Loan]
totalLoanAmount number
weightedAverageInterestRate number

Loan

Parameter Type Required Description
accountId string
amortized number
balance number
credentialsId string
id string
initialBalance number
initialDate number
interest number
loanDetails LoanDetails
loanNumber string
monthlyAmortization number
name string
nextDayOfTermsChange number
numMonthsBound integer
providerName string
serializedLoanResponse string
type string
updated number
userId string
userModifiedType boolean

LoanDetails

Parameter Type Required Description
accountId string
applicants array[string]
coApplicant boolean
loanSecurity string

List loan events

Lists events that affect the properties of a loan such as interest rate changes.

GET /api/v1/loans/events

Response Example

{
  "loanEvents": [
    {
      "accountId": "string",
      "balance": 0,
      "credentials": "string",
      "interest": 0,
      "interestRateChange": 0,
      "loanType": "string",
      "nextDayOfTermsChange": "string",
      "properties": "",
      "provider": "string",
      "timestamp": "string",
      "title": "string",
      "type": "string"
    }
  ]
}

Response: LoanEventsResponse

Parameter Type Required Description
loanEvents array[LoanEvent]

LoanEvent

Parameter Type Required Description
accountId string
balance number
credentials string
interest number
interestRateChange number
loanType string
nextDayOfTermsChange number
properties object
provider string
timestamp number
title string
type string

List loan history

Lists historical rates and balances for all loans as well as weighted average calculations for all loans together.

GET /api/v1/loans/timelines

Response Example

{
  "loanTimelines": [
    {
      "accountId": "string",
      "balanceTimeline": [
        {
          "date": "string",
          "value": 0
        }
      ],
      "interestRateTimeline": [
        {
          "date": "string",
          "value": 0
        }
      ]
    }
  ],
  "weightedAverageTimeline": [
    {
      "key": "string",
      "value": 0
    }
  ]
}

Response: LoanTimelineResponse

Parameter Type Required Description
loanTimelines array[LoanTimeline]
weightedAverageTimeline array[KVPairStringDouble]

LoanTimeline

Parameter Type Required Description
accountId string
balanceTimeline array[TemporalValueDouble]
interestRateTimeline array[TemporalValueDouble]

TemporalValueDouble

Parameter Type Required Description
date number
value number

KVPairStringDouble

Parameter Type Required Description
key string
value number

Monitoring Service

Health check

Returns ok while the Tink API isn’t experiencing unexpected disturbances. Returns 503 Service Unavailable if the server is closing down and 500 Internal Server Error for any other error.

GET /api/v1/monitoring/healthy

Response: text/plain

successful operation

Ping

Checks the current status of a Tink service and returns pong if the specified service is running.

GET /api/v1/monitoring/ping

Query Parameters

Parameter Required Description
service Forwards the ping to another service (“aggregation”, “main” and “system”). Defaults to “main”.. Values: aggregation, system, main

Response: text/plain

successful operation

OAuth Service

Get an authorization token

Exchange an authorization code or a refresh token for authorization tokens. The authorization tokens are used to access API resources on the end-user’s behalf.

POST /api/v1/oauth/token

Form Request Example

NOTE: This data is sent as application/x-www-form-urlencoded, but shown here in json for brevity.

{
  "client_id": "256ae77fcbda4bc2b8d0ba94d9c3423c",
  "client_secret": "bdb8477398074160901ce1c8dd5b7848",
  "code": "c50cd6960a6f44ffb701ef60fafa7761",
  "grant_type": "authorization_code",
  "refresh_token": "c45d4e0daea9440aacf3b2aea66f46a8"
}

Form Parameters

Parameter Required Description
client_id true The OAuth client ID.
client_secret true The client secret of your third-party application.
grant_type true The grant type.. Values: authorization_code, refresh_token
code The one-time code that was returned from the authorization flow. Can be omitted if refresh token is used.
refresh_token The refresh token to be used to get a new access token. Can be omitted if code is used.

Response Example

{
  "access_token": "3084989d7eb94d58995217807441bdf4",
  "expires_in": 7200,
  "refresh_token": "8bc289f2dd94440bb4561c55e1903845",
  "scope": "transactions:read,accounts:read",
  "token_type": "bearer"
}

Response: OAuth2AuthenticationTokenResponse

Parameter Type Required Description
access_token string true The access token that can be used to access an API resource.
expires_in integer true The amount of time in seconds for the expiration of the token.
refresh_token string true The refresh token that can be used to get a new access token.
scope string true The scope valid for the returned token.
token_type string true The type of authorization token returned.

Provider Service

List providers by Market

List all providers on given Market. Since this is an endpoint that doesn’t require an authenticated user, API consumers should send their OAuth clientId as a header X-Tink-OAuth-Client-ID

GET /api/v1/providers/{market}

Parameters

Parameter Required Description
market true SE for Swedish market

Header Parameters

Parameter Required Description
X-Tink-OAuth-Client-ID true The OAuth2 Client ID
Accept-Language Language to translate to.

Query Parameters

Parameter Required Description
includeTestProviders Defaults to false. If set to true, Providers of TEST type will become ENABLED

Response Example

{
  "providers": [
    {
      "credentialsType": "MOBILE_BANKID",
      "currency": "SEK",
      "displayDescription": "Mobilt BankID",
      "displayName": "Handelsbanken",
      "fields": [
        {
          "additionalInfo": "string",
          "checkbox": false,
          "defaultValue": "string",
          "description": "string",
          "helpText": "Enter your username",
          "hint": "YYYYMMDD-NNNN",
          "immutable": false,
          "masked": false,
          "maxLength": 0,
          "minLength": 0,
          "name": "string",
          "numeric": false,
          "optional": false,
          "options": [
            "string",
            "string"
          ],
          "pattern": "string",
          "patternError": "string",
          "sensitive": false,
          "value": "string"
        }
      ],
      "groupDisplayName": "string",
      "images": {
        "banner": "string",
        "icon": "string"
      },
      "market": "string",
      "multiFactor": false,
      "name": "string",
      "passwordHelpText": "string",
      "popular": false,
      "status": "string",
      "supplementalFields": [
        {
          "additionalInfo": "string",
          "checkbox": false,
          "defaultValue": "string",
          "description": "string",
          "helpText": "Enter your username",
          "hint": "YYYYMMDD-NNNN",
          "immutable": false,
          "masked": false,
          "maxLength": 0,
          "minLength": 0,
          "name": "string",
          "numeric": false,
          "optional": false,
          "options": [
            "string",
            "string"
          ],
          "pattern": "string",
          "patternError": "string",
          "sensitive": false,
          "value": "string"
        }
      ],
      "transactional": false,
      "type": "string"
    }
  ]
}

Response: ProviderListResponse

Parameter Type Required Description
providers array[ProviderRpc]

ProviderRpc

Parameter Type Required Description
credentialsType string The type of credentials the provider creates. Values: PASSWORD, MOBILE_BANKID, KEYFOB, THIRD_PARTY_APP
currency string The default currency of the provider
displayDescription string The display description of the provider
displayName string The display name of the provider
fields array[Field]
groupDisplayName string The grouped display name of the provider
images ImageUrls
market string The market of the provider
multiFactor boolean Flag to indicate if the provider requires multi-factor authentication
name string The short name of the provider
passwordHelpText string
popular boolean Flag to indicate if the provider is popular
status string The current status of the provider. Values: ENABLED, OBSOLETE, TEMPORARY_DISABLED, DISABLED
supplementalFields array[Field]
transactional boolean Flag to indicate if the provider provides transactional data
type string The type of the provider. Values: BANK, CREDIT_CARD, BROKER, OTHER, TEST, FRAUD

Field

Parameter Type Required Description
additionalInfo string A serialized JSON containing additional information that could be useful
checkbox boolean Display boolean value as checkbox
children array[Field] Child fields to this field
defaultValue string
description string
helpText string Text displayed next to the input field
hint string Gray text in the input view (Similar to a placeholder)
immutable boolean
masked boolean Controls whether or not the field should be shown masked, like a password field
maxLength integer
minLength integer
name string
numeric boolean
optional boolean
options array[string] A list of options where the user should select one
pattern string
patternError string
sensitive boolean
value string

ImageUrls

Parameter Type Required Description
banner string
icon string

Search Service

Query transactions

Returns a response containing transaction and their corresponding statistics matching the query.

POST /api/v1/search

Request Example

{
  "accounts": [
    "87fa44ec11c4426e889a963add92b69e"
  ],
  "categories": [
    "953c4eda24554a61a9653a479e70fc96"
  ],
  "credentials": [
    "18bb1f4636894f3bba8ddcd567d22fbd"
  ],
  "endDate": 1455740874875,
  "externalIds": [
    "953c4eda24554a61a9653a479e70fc96"
  ],
  "includeUpcoming": false,
  "limit": 20,
  "offset": 20,
  "order": "ASC",
  "queryString": "Food this week",
  "sort": "DATE",
  "startDate": 1455740874875
}

Request Body: SearchQuery

The search query.

Parameter Type Required Description
accounts array[string] The list of account IDs to be used as a query filter
categories array[string] The list of category IDs to be used as a query filter. Could either be leaf node categories, such as the category ID corresponding to expenses:food.restaurants, or groups of categories, such as the category ID corresponding to expenses:food.
credentials array[string] The list of credentials IDs to be used as a query filter
endDate number The end date of the result.
externalIds array[string] A list of external IDs to filter for
includeUpcoming boolean Indicates if result should include upcoming transactions.
limit integer The limit for the result, used for paging.
offset integer The offset for the result, used for paging.
order string The order of the result.. Values: ASC, DESC
queryString string The string query.
sort string The sort order of the result.. Values: SCORE, DATE, ACCOUNT, DESCRIPTION, AMOUNT, CATEGORY
startDate number The start date of the result.

Response Example

{
  "count": 110,
  "net": 1288,
  "periodAmounts": [
    {
      "key": "string",
      "value": 0
    }
  ],
  "query": {
    "accounts": [
      "87fa44ec11c4426e889a963add92b69e"
    ],
    "categories": [
      "953c4eda24554a61a9653a479e70fc96"
    ],
    "credentials": [
      "18bb1f4636894f3bba8ddcd567d22fbd"
    ],
    "endDate": 1455740874875,
    "externalIds": [
      "953c4eda24554a61a9653a479e70fc96"
    ],
    "includeUpcoming": false,
    "limit": 20,
    "offset": 20,
    "order": "ASC",
    "queryString": "Food this week",
    "sort": "DATE",
    "startDate": 1455740874875
  },
  "results": [
    {
      "budget": {
        "budgetedAmount": 0,
        "categoryId": "string",
        "currentAmount": 0,
        "historicalAmounts": [
          {
            "description": "fe9e199c2ca94c12baf1f3eb4a4122de",
            "payload": "690667930d7e4f2ba0d9aa5f7d2a1941",
            "period": "2014-12-15",
            "resolution": "DAILY",
            "type": "expenses-by-category",
            "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
            "value": 1298
          }
        ],
        "id": "string",
        "suggestedAmount": 0,
        "userId": "string"
      },
      "transaction": {
        "accountId": "3fe2d96efacd4dc5994404a950f238a9",
        "amount": 34,
        "categoryId": "0e1bade6a7e3459eb794f27b7ba4cea0",
        "categoryType": "EXPENSES",
        "credentialsId": "65bc7a41a66e4ad1aad199bbfb3c5098",
        "date": 1455740874875,
        "description": "Stadium Sergelg Stockholm",
        "dispensableAmount": 0,
        "id": "79c6c9c27d6e42489e888e08d27205a1",
        "lastModified": 1455740874875,
        "merchantId": "ba3f9312fa7d442abde61ca419877fbf",
        "notes": "Delicious #cake #wedding",
        "originalAmount": 34,
        "originalDate": 1455740874875,
        "originalDescription": "Stadium Sergelg Stockholm",
        "partnerPayload": {},
        "payload": {},
        "pending": false,
        "timestamp": 1464543093494,
        "type": "CREDIT_CARD",
        "upcoming": false,
        "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
        "userModified": false
      },
      "type": "TRANSACTION"
    }
  ]
}

Response: SearchResponse

Parameter Type Required Description
count integer true Number of results returned.
net number true The transaction amount net of the result.
periodAmounts array[StringDoublePair] true Key value object holding periods and statistics values for result with the period specified in query.
query SearchQuery true The query executed.
results array[SearchResult] true The search result.

StringDoublePair

Parameter Type Required Description
key string
value number

SearchQuery

Parameter Type Required Description
accounts array[string] The list of account IDs to be used as a query filter
categories array[string] The list of category IDs to be used as a query filter. Could either be leaf node categories, such as the category ID corresponding to expenses:food.restaurants, or groups of categories, such as the category ID corresponding to expenses:food.
credentials array[string] The list of credentials IDs to be used as a query filter
endDate number The end date of the result.
externalIds array[string] A list of external IDs to filter for
includeUpcoming boolean Indicates if result should include upcoming transactions.
limit integer The limit for the result, used for paging.
offset integer The offset for the result, used for paging.
order string The order of the result.. Values: ASC, DESC
queryString string The string query.
sort string The sort order of the result.. Values: SCORE, DATE, ACCOUNT, DESCRIPTION, AMOUNT, CATEGORY
startDate number The start date of the result.

SearchResult

Parameter Type Required Description
budget Budget
transaction Transaction The transactions resulting from the query.
type string true The search type.. Values: STATEMENT, TRANSACTION, CATEGORY, BUDGET, GOAL, SUGGESTION

Budget

Parameter Type Required Description
budgetedAmount number
categoryId string
currentAmount number
historicalAmounts array[Statistic]
id string
suggestedAmount number
userId string

Statistic

Parameter Type Required Description
description string true Identifier of the data the statistic represents.
payload string Secondary identifier of the data the statistic represent
period string true The statistic’s period, depends on it’s resolution. On of: year, month, week or day. Format: ‘2014’, '2014-02’, 2014:45 or '2014-02-12’
resolution string true Resolution for the statistics.. Values: DAILY, MONTHLY, MONTHLY_ADJUSTED, YEARLY, ALL, WEEKLY
type string true The statistic’s type.
userId string true The internal identifier of the user that the statistics belongs to.
value number true The value of the statistics for this type, period, and description.

Transaction

Parameter Type Required Description
accountId string true The internal identifier of the account that the transaction belongs to.
amount number true The amount of the transaction. This can be modified by the user.
categoryId string true The category of the transaction. This can be modified by the user.
categoryType string true The category type of the transaction.. Values: INCOME, EXPENSES, TRANSFERS
credentialsId string true The internal identifier of the credentials that the transaction belongs to.
date number true The date the transaction was executed. This can be modified by the user.
description string true The description of the transaction. This can be modified by the user.
dispensableAmount number The dispensable amount of the transaction.
id string true The internal identifier of the transaction.
lastModified number true The date the transaction was last modified by the user.
merchantId string The internal identifier of the merchant that the transaction belongs to. If available.
notes string true A free-text field modifiable by the user. Any 'word’ (whitespace separated), prefixed with a #, is considered a tag. These tags becomes searchable.
originalAmount number true The original amount that was received from the provider, before the user changed it.
originalDate number true The original date that was received from the provider, before the user changed it.
originalDescription string true The original description that was received from the provider, before the user changed it.
partnerPayload object The payload that was previously ingested on the Connector API.
payload object Meta data about the transaction, in key value format with Strings.
pending boolean true Indicates if this transaction has been settled or is still pending.
timestamp integer true The timestamp of when the transaction was first saved to database.
type string true The type of the transaction.. Values: DEFAULT, CREDIT_CARD, TRANSFER, PAYMENT, WITHDRAWAL
upcoming boolean Indicates if this is an upcoming transaction not booked yet.
userId string true The internal identifier of the user that the transaction belongs to.
userModified boolean

Statistics Service

Query statistics

Queries statistics

POST /api/v1/statistics/query

Request Example

{
  "description": "fe9e199c2ca94c12baf1f3eb4a4122de",
  "padResultUntilToday": null,
  "periods": [
    "2014-02-11",
    "2014-02-12"
  ],
  "resolution": "DAILY",
  "types": [
    "expenses-by-category"
  ]
}

Request Body: StatisticQuery

The query object

Parameter Type Required Description
description string Identifier of the data the statistic represents. This could for example be a category ID.
padResultUntilToday boolean Indicates if the result should be flat filled until the period of today.
periods array[string] Time periods for the statistics: year, month, week or day. Format: '2014’, '2014-02’, 2014:45 or '2014-02-12’
resolution string Resolution for the statistics. Note that monthly statistics will be calculated only with the resolution that the user has in the user settings (MONTHLY, MONTHLY_ADJUSTED), and not for both.. Values: DAILY, MONTHLY, MONTHLY_ADJUSTED, YEARLY, ALL, WEEKLY
types array[string] A list of types of statistics. See Statistics for type information.

Response Example

[
  {
    "description": "fe9e199c2ca94c12baf1f3eb4a4122de",
    "payload": "690667930d7e4f2ba0d9aa5f7d2a1941",
    "period": "2014-12-15",
    "resolution": "DAILY",
    "type": "expenses-by-category",
    "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
    "value": 1298
  }
]

Response: array[Statistic]

Parameter Type Required Description
description string true Identifier of the data the statistic represents.
payload string Secondary identifier of the data the statistic represent
period string true The statistic’s period, depends on it’s resolution. On of: year, month, week or day. Format: '2014’, '2014-02’, 2014:45 or '2014-02-12’
resolution string true Resolution for the statistics.. Values: DAILY, MONTHLY, MONTHLY_ADJUSTED, YEARLY, ALL, WEEKLY
type string true The statistic’s type.
userId string true The internal identifier of the user that the statistics belongs to.
value number true The value of the statistics for this type, period, and description.

Transaction Service

Get one transaction

Returns a transaction matching the requested id

GET /api/v1/transactions/{id}

Parameters

Parameter Required Description
id true The id of the transaction

Response Example

{
  "accountId": "3fe2d96efacd4dc5994404a950f238a9",
  "amount": 34,
  "categoryId": "0e1bade6a7e3459eb794f27b7ba4cea0",
  "categoryType": "EXPENSES",
  "credentialsId": "65bc7a41a66e4ad1aad199bbfb3c5098",
  "date": 1455740874875,
  "description": "Stadium Sergelg Stockholm",
  "dispensableAmount": 0,
  "id": "79c6c9c27d6e42489e888e08d27205a1",
  "lastModified": 1455740874875,
  "merchantId": "ba3f9312fa7d442abde61ca419877fbf",
  "notes": "Delicious #cake #wedding",
  "originalAmount": 34,
  "originalDate": 1455740874875,
  "originalDescription": "Stadium Sergelg Stockholm",
  "partnerPayload": {},
  "payload": {},
  "pending": false,
  "timestamp": 1464543093494,
  "type": "CREDIT_CARD",
  "upcoming": false,
  "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
  "userModified": false
}

Response: Transaction

Parameter Type Required Description
accountId string true The internal identifier of the account that the transaction belongs to.
amount number true The amount of the transaction. This can be modified by the user.
categoryId string true The category of the transaction. This can be modified by the user.
categoryType string true The category type of the transaction.. Values: INCOME, EXPENSES, TRANSFERS
credentialsId string true The internal identifier of the credentials that the transaction belongs to.
date number true The date the transaction was executed. This can be modified by the user.
description string true The description of the transaction. This can be modified by the user.
dispensableAmount number The dispensable amount of the transaction.
id string true The internal identifier of the transaction.
lastModified number true The date the transaction was last modified by the user.
merchantId string The internal identifier of the merchant that the transaction belongs to. If available.
notes string true A free-text field modifiable by the user. Any 'word’ (whitespace separated), prefixed with a #, is considered a tag. These tags becomes searchable.
originalAmount number true The original amount that was received from the provider, before the user changed it.
originalDate number true The original date that was received from the provider, before the user changed it.
originalDescription string true The original description that was received from the provider, before the user changed it.
partnerPayload object The payload that was previously ingested on the Connector API.
payload object Meta data about the transaction, in key value format with Strings.
pending boolean true Indicates if this transaction has been settled or is still pending.
timestamp integer true The timestamp of when the transaction was first saved to database.
type string true The type of the transaction.. Values: DEFAULT, CREDIT_CARD, TRANSFER, PAYMENT, WITHDRAWAL
upcoming boolean Indicates if this is an upcoming transaction not booked yet.
userId string true The internal identifier of the user that the transaction belongs to.
userModified boolean

Get similar transactions

Returns an object holding a list of transactions similar to the supplied transaction based on description and a list of statistics summarizing these transactions

GET /api/v1/transactions/{id}/similar

Parameters

Parameter Required Description
id true The id of the transaction

Query Parameters

Parameter Required Description
categoryId Returns similar of the this cateogry
includeSelf Include the supplied transaction in response

Response Example

{
  "statistics": [
    {
      "description": "fe9e199c2ca94c12baf1f3eb4a4122de",
      "payload": "690667930d7e4f2ba0d9aa5f7d2a1941",
      "period": "2014-12-15",
      "resolution": "DAILY",
      "type": "expenses-by-category",
      "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
      "value": 1298
    }
  ],
  "transactions": [
    {
      "accountId": "3fe2d96efacd4dc5994404a950f238a9",
      "amount": 34,
      "categoryId": "0e1bade6a7e3459eb794f27b7ba4cea0",
      "categoryType": "EXPENSES",
      "credentialsId": "65bc7a41a66e4ad1aad199bbfb3c5098",
      "date": 1455740874875,
      "description": "Stadium Sergelg Stockholm",
      "dispensableAmount": 0,
      "id": "79c6c9c27d6e42489e888e08d27205a1",
      "lastModified": 1455740874875,
      "merchantId": "ba3f9312fa7d442abde61ca419877fbf",
      "notes": "Delicious #cake #wedding",
      "originalAmount": 34,
      "originalDate": 1455740874875,
      "originalDescription": "Stadium Sergelg Stockholm",
      "partnerPayload": {},
      "payload": {},
      "pending": false,
      "timestamp": 1464543093494,
      "type": "CREDIT_CARD",
      "upcoming": false,
      "userId": "d9f134ee2eb44846a4e02990ecc8d32e",
      "userModified": false
    }
  ]
}

Response: SimilarTransactionsResponse

Parameter Type Required Description
statistics array[Statistic] true Statistics of type 'income-and-expenses-and-transfers’ for the similar transactions.
transactions array[Transaction] true List of similar transactions.

Statistic

Parameter Type Required Description
description string true Identifier of the data the statistic represents.
payload string Secondary identifier of the data the statistic represent
period string true The statistic’s period, depends on it’s resolution. On of: year, month, week or day. Format: '2014’, '2014-02’, 2014:45 or '2014-02-12’
resolution string true Resolution for the statistics.. Values: DAILY, MONTHLY, MONTHLY_ADJUSTED, YEARLY, ALL, WEEKLY
type string true The statistic’s type.
userId string true The internal identifier of the user that the statistics belongs to.
value number true The value of the statistics for this type, period, and description.

Transaction

Parameter Type Required Description
accountId string true The internal identifier of the account that the transaction belongs to.
amount number true The amount of the transaction. This can be modified by the user.
categoryId string true The category of the transaction. This can be modified by the user.
categoryType string true The category type of the transaction.. Values: INCOME, EXPENSES, TRANSFERS
credentialsId string true The internal identifier of the credentials that the transaction belongs to.
date number true The date the transaction was executed. This can be modified by the user.
description string true The description of the transaction. This can be modified by the user.
dispensableAmount number The dispensable amount of the transaction.
id string true The internal identifier of the transaction.
lastModified number true The date the transaction was last modified by the user.
merchantId string The internal identifier of the merchant that the transaction belongs to. If available.
notes string true A free-text field modifiable by the user. Any 'word’ (whitespace separated), prefixed with a #, is considered a tag. These tags becomes searchable.
originalAmount number true The original amount that was received from the provider, before the user changed it.
originalDate number true The original date that was received from the provider, before the user changed it.
originalDescription string true The original description that was received from the provider, before the user changed it.
partnerPayload object The payload that was previously ingested on the Connector API.
payload object Meta data about the transaction, in key value format with Strings.
pending boolean true Indicates if this transaction has been settled or is still pending.
timestamp integer true The timestamp of when the transaction was first saved to database.
type string true The type of the transaction.. Values: DEFAULT, CREDIT_CARD, TRANSFER, PAYMENT, WITHDRAWAL
upcoming boolean Indicates if this is an upcoming transaction not booked yet.
userId string true The internal identifier of the user that the transaction belongs to.
userModified boolean

User Service

Get the user

Returns the user object. Note that the password field is not stored in clear text nor populated when getting the user. It’s only used for setting the password when registering a new user.

GET /api/v1/user

Response Example

{
  "created": "string",
  "flags": [
    "TRANSFERS",
    "TEST_PINK_ONBOARDING"
  ],
  "id": "6e68cc6287704273984567b3300c5822",
  "nationalId": "string",
  "password": "string",
  "profile": {
    "currency": "SEK",
    "locale": "sv_SE",
    "market": "SE",
    "notificationSettings": {
      "balance": false,
      "budget": false,
      "doubleCharge": false,
      "einvoices": false,
      "fraud": false,
      "income": false,
      "largeExpense": false,
      "leftToSpend": false,
      "loanUpdate": false,
      "summaryMonthly": false,
      "summaryWeekly": false,
      "transaction": false,
      "unusualAccount": false,
      "unusualCategory": false
    },
    "periodAdjustedDay": 25,
    "periodMode": "MONTHLY_ADJUSTED",
    "timeZone": "Europe/Stockholm"
  },
  "username": "nisse@manpower.se"
}

Response: User

Parameter Type Required Description
created number true The date when the user was created.
flags array[string] The user-specific feature flags assigned to the user.
id string true The internal identifier of the user.
nationalId string
password string The password of the user (only included at registration).
profile UserProfile true The configurable profile of the user
username string The username (usually email) of the user.

UserProfile

Parameter Type Required Description
currency string true The configured ISO 4217 currency code of the user. This can be modified by the user.
locale string true The configured locale of the user. This can be modified by the user.
market string true The primary market/country of the user.
notificationSettings NotificationSettings true The configured notification settings of the user. This can be modified by the user.
periodAdjustedDay integer true The configured day of the month to break the adjusted period on. This can be modified by the user.
periodMode string true The configured monthly period mode of the user. This can be modified by the user.. Values: MONTHLY, MONTHLY_ADJUSTED
timeZone string true The configured time zone of the user. This can be modified by the user.

NotificationSettings

Parameter Type Required Description
balance boolean true Indicates if the user wants to receive notifications with low or high balances alerts.
budget boolean true Indicates if the user wants to receive notifications regarding her budgets.
doubleCharge boolean true Indicates if the user wants to receive notifications with double-charge alerts.
einvoices boolean true Indicates if the user wants to receive notifications for e-invoices.
fraud boolean true Indicates if the user wants to receive notifications for ID Control warnings.
income boolean true Indicates if the user wants to receive notifications when an income is received.
largeExpense boolean true Indicates if the user wants to receive notifications when a large expense is detected.
leftToSpend boolean true Indicates if the user wants to receive left to spend notifications.
loanUpdate boolean true Indicates if the user wants to receive notifications for loan updates.
summaryMonthly boolean true Indicates if the user wants to receive notifications with monthly summaries.
summaryWeekly boolean true Indicates if the user wants to receive notifications with weekly summaries.
transaction boolean true Indicates if the user wants to receive notifications for every transaction.
unusualAccount boolean true Indicates if the user wants to receive notifications when there is unusual activity on any of her accounts.
unusualCategory boolean true Indicates if the user wants to receive notifications when she has spend more than usual on something.

Get the user profile

Returns the user profile.

GET /api/v1/user/profile

Response Example

{
  "currency": "SEK",
  "locale": "sv_SE",
  "market": "SE",
  "notificationSettings": {
    "balance": false,
    "budget": false,
    "doubleCharge": false,
    "einvoices": false,
    "fraud": false,
    "income": false,
    "largeExpense": false,
    "leftToSpend": false,
    "loanUpdate": false,
    "summaryMonthly": false,
    "summaryWeekly": false,
    "transaction": false,
    "unusualAccount": false,
    "unusualCategory": false
  },
  "periodAdjustedDay": 25,
  "periodMode": "MONTHLY_ADJUSTED",
  "timeZone": "Europe/Stockholm"
}

Response: UserProfile

Parameter Type Required Description
currency string true The configured ISO 4217 currency code of the user. This can be modified by the user.
locale string true The configured locale of the user. This can be modified by the user.
market string true The primary market/country of the user.
notificationSettings NotificationSettings true The configured notification settings of the user. This can be modified by the user.
periodAdjustedDay integer true The configured day of the month to break the adjusted period on. This can be modified by the user.
periodMode string true The configured monthly period mode of the user. This can be modified by the user.. Values: MONTHLY, MONTHLY_ADJUSTED
timeZone string true The configured time zone of the user. This can be modified by the user.

NotificationSettings

Parameter Type Required Description
balance boolean true Indicates if the user wants to receive notifications with low or high balances alerts.
budget boolean true Indicates if the user wants to receive notifications regarding her budgets.
doubleCharge boolean true Indicates if the user wants to receive notifications with double-charge alerts.
einvoices boolean true Indicates if the user wants to receive notifications for e-invoices.
fraud boolean true Indicates if the user wants to receive notifications for ID Control warnings.
income boolean true Indicates if the user wants to receive notifications when an income is received.
largeExpense boolean true Indicates if the user wants to receive notifications when a large expense is detected.
leftToSpend boolean true Indicates if the user wants to receive left to spend notifications.
loanUpdate boolean true Indicates if the user wants to receive notifications for loan updates.
summaryMonthly boolean true Indicates if the user wants to receive notifications with monthly summaries.
summaryWeekly boolean true Indicates if the user wants to receive notifications with weekly summaries.
transaction boolean true Indicates if the user wants to receive notifications for every transaction.
unusualAccount boolean true Indicates if the user wants to receive notifications when there is unusual activity on any of her accounts.
unusualCategory boolean true Indicates if the user wants to receive notifications when she has spend more than usual on something.

Version Service

Get the version

Gets the current version (build) of the application

GET /api/v1/version

Response Example

{
  "commit": "e764d0eed748d6c137c30fc94c7e17544d101ff3",
  "date": 1455740874875,
  "version": "4513"
}

Response: VersionResponse

Parameter Type Required Description
commit string true The last commit of the build
date number true The date of the build
version string true The version of the build