First and foremost, sign up for our developer dashboard in order to get your credentials. Simply select a plan that fits your needs, complete the signup form and confirm your email. Once you log in for the first time, you'll see your application and its associated key.

Screen Shot 2021-10-18 at 10.21.35 AM.png

Once you click the app, you can see your key + secret, edit the app, see your status, and change plans.

Screen Shot 2021-10-18 at 10.20.36 AM.png

Making your first call

Your first call needs to be the /authentication endpoint to get your access_token

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

var urlencoded = new URLSearchParams();
urlencoded.append("client_id", "{your-client-id}");
urlencoded.append("client_secret", "{your-client-secret}");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: urlencoded,
  redirect: 'follow'
};

fetch("<https://finsightapi-dev.herokuapp.com/api/authentication>", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

That will return an access_token that is good for 24 hours. The success response body will include your token and scopes available to you.

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlEwWTRSRGcxTTBNd1JEWTJRamRETmpVNU4wVTFRalZGUJSQSJ9.eyJpc3MiOiJodHRwczovL2Rldi1qaGhndTl2Yy5hdXRoMaZXhSZGl2emY3eU5AY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vZmluc2lnaHRzLWFwaS5jb20vdjIiLCJpYTmFlQ2ZabzdjNHh2QUpWa0ZaZXhSZGl2emY3eU4iLCJzY29wZSI6InJlYWQ6dHJhbnNhY3Rpb25zIHdyaXRlOnRyYW5zYWN0aW9ucyB1cGRhdGU6dHJhbnNhY3Rpb25zIGRlbGV0ZTp0cmFuc2FjdGlvbnMgcmVhZDpjbGllbnQgcmVhZDp1c2VycyByZWFkOmFjY291bnRzIHdyaXRlOmFjY291bnRzIHJlYWQ6Zmluc2lnaHRzIHdyaXRlOnVzZXJzIHVwZGF0ZTp1c2VycyBwb3N0OnRyYW5zYWN0aW9ucyBnZXQ6Zmluc2lnaHRzIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIiwicGVybWlzc2lvbnMiOlsicmVhZDp0cmFuc2FjdGlvbnMiLCJ3cml0ZTp0cmFuc2FjdGlvbnMiLCJ1cGRhdGU6dHJhbnNhY3Rpb25zIiwiZGVsZXRlOnRIiwicmVhZDp1c2VycyIsInJlYWQ6YWNjb3VudHMiLCJ3cml0ZTphY2NvdW50cyIsInJlYWQ6Zmluc2lnaHRzIiwid3JpdGU6dXNlcnMiLCJ1cGRhdGU6dXNlcnMiLCJwb3N0OnRyYW5zYWN0aW9ucyIsImdldDpmaW5zaWdodHMiXX0.JlaSkSXHxiIu-FpDs9LOLNIhDIKl7Q4qBCcwfncsDcJRgTbiaNJRuciWDMicN3kimEMBE9XTBZt3AVaT939MGugcynSnsFzN2BHqA32fy901VqNoVIalfDrGinwcbduSIVJNdDtkcCIvRJSB1mHIZYAylu1EpN-3-DJyTvAFoTh6xtNPd0WNGxtC6aQJ4-ijjOlbTyigYpammsr3e4xzLpfOat-wsxIk0RALgQ4we4EMGsPhgvhtw8DFX4ZHjc2bdnXRHJ-HP7JzmmiPFGln2cu7fil09bemOIkFBoSEtTCJCF-gmzdn_R3-FtuKuUMjCETcNufp9LJ9qwD_1rdSXw",
    "scope": "read:transactions write:transactions update:transactions delete:transactions read:client read:users read:accounts write:accounts read:finsights write:users update:users post:transactions get:finsights",
    "expires_in": 86400,
    "token_type": "Bearer"
}

Calling the API

To make your first call include the access_token in the header as a bearer token:

var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlEwWTRSRGcxTTBNd1JEWTJRamRETmpVNU4wVTFRalZGUJSQSJ9.eyJpc3MiOiJodHRwczovL2Rldi1qaGhndTl2Yy5hdXRoMaZXhSZGl2emY3eU5AY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vZmluc2lnaHRzLWFwaS5jb20vdjIiLCJpYTmFlQ2ZabzdjNHh2QUpWa0ZaZXhSZGl2emY3eU4iLCJzY29wZSI6InJlYWQ6dHJhbnNhY3Rpb25zIHdyaXRlOnRyYW5zYWN0aW9ucyB1cGRhdGU6dHJhbnNhY3Rpb25zIGRlbGV0ZTp0cmFuc2FjdGlvbnMgcmVhZDpjbGllbnQgcmVhZDp1c2VycyByZWFkOmFjY291bnRzIHdyaXRlOmFjY291bnRzIHJlYWQ6Zmluc2lnaHRzIHdyaXRlOnVzZXJzIHVwZGF0ZTp1c2VycyBwb3N0OnRyYW5zYWN0aW9ucyBnZXQ6Zmluc2lnaHRzIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIiwicGVybWlzc2lvbnMiOlsicmVhZDp0cmFuc2FjdGlvbnMiLCJ3cml0ZTp0cmFuc2FjdGlvbnMiLCJ1cGRhdGU6dHJhbnNhY3Rpb25zIiwiZGVsZXRlOnRIiwicmVhZDp1c2VycyIsInJlYWQ6YWNjb3VudHMiLCJ3cml0ZTphY2NvdW50cyIsInJlYWQ6Zmluc2lnaHRzIiwid3JpdGU6dXNlcnMiLCJ1cGRhdGU6dXNlcnMiLCJwb3N0OnRyYW5zYWN0aW9"
var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("<https://finsightapi-dev.herokuapp.com/v3/transactions>", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

See the API documentation for the full OpenAPI Specification.