Symetrisk: For developers

Basic OAuth authorization and REST API

Creating an API client

Before calling the API, you need to create an API client on Symetrisk
  1. Log in to your Symetrisk account
  2. Go to the API page
  3. Click 'Create API client'
  4. An API client will now be created. Make sure to save the 'Client secret', as you will not be able to view this again.

Getting an access token

The API requires a valid access token to be passed. This access token will also tell us which bank it is that is making the call.
  1. Make a POST request to https://symetrisk.auth.eu-central-1.amazoncognito.com/oauth2/token
  2. Include an Authorization header with value Basic CLIENT_ID:CLIENT_SECRET ('CLIENT_ID:CLIENT_SECRET' must be base64 encoded)
  3. Include a Content-Type header with value application/x-www-form-urlencoded
  4. In body, include grant_type: client_credentials, scope: scopes you want to include, seperated by spaces
Scopes
  • https://api.symetrisk.com/read - gives read access
  • https://api.symetrisk.com/write - gives write access

Making calls to the API

To make calls to the API, you need to include the access token as a Bearer token in the Authorization header. The base url for the API is https://api.symetrisk.com/api/v1
Example

Used to check the status of the API

Responses

CodeDescription
200

OK

Media type
application/json
{
  "message": "pong"
}

API documentation

Accounting data

Get accounting data for borrower.

Parameters

NameTypeInRequiredDescription
orgNrstringpathYesThe brreg organization number of the borrower to retrieve data from.
limitintegerqueryNoMax amount of items to return
skipintegerqueryNoNumber of items to skip.

Responses

CodeDescription
200

OK

Media type
application/json
{
  "metadata": {
    "limit": 100,
    "skip": 0,
    "returnedItems": 2,
    "totalItems": 2
  },
  "items": [
    {
      "id": 2,
      "data": {
        "symetrisk_real_time_accounts_format_version": "2025-09-19",
        "year": 2025,
        "start_date": "2025-01-01",
        "end_date": "2025-08-14",
        "days_included": 226,
        "p_and_l_items": {
          "revenues": 6110372.81,
          "expenses": 5221921.500000001,
          "ebitda": 888451.3099999987,
          "ebit": 888451.3099999987,
          "interest_income": 0,
          "interest_expenses": 0,
          "taxes": 0,
          "depreciation": 0,
          "amortization": 0,
          "depreciation_and_amortization": 0,
          "other_financial_income": -10186.3,
          "other_financial_expenses": 5645.42,
          "net_profit": 872619.5899999986
        },
        "balance_items": {
          "equity": 6364035.56,
          "interest_bearing_debt": 0,
          "net_interest_bearing_debt": -1775076.05,
          "total_assets": 9070305.77
        }
      },
      "snapshotDate": "2025-08-14",
      "fetchedAt": "2025-10-10T00:00:00.00000",
      "origin": "api",
      "accountingSystem": "fiken"
    },
    {
      "id": 1,
      "data": {
        "symetrisk_real_time_accounts_format_version": "2025-09-19",
        "year": 2024,
        "start_date": "2024-01-01",
        "end_date": "2024-12-31",
        "days_included": 366,
        "p_and_l_items": {
          "revenues": 13163978.270000001,
          "expenses": 11921451.740000002,
          "ebitda": 1242526.5299999993,
          "ebit": 1217604.7599999993,
          "interest_income": -15522,
          "interest_expenses": 1280,
          "taxes": 290992,
          "depreciation": 24921.77,
          "amortization": 0,
          "depreciation_and_amortization": 24921.77,
          "other_financial_income": -1505099.45,
          "other_financial_expenses": 79156.85,
          "net_profit": -674445.5400000006
        },
        "balance_items": {
          "equity": 6364035.56,
          "interest_bearing_debt": 0,
          "net_interest_bearing_debt": -2388447.57,
          "total_assets": 9825207.68
        }
      },
      "snapshotDate": "2024-12-31",
      "fetchedAt": "2025-12-31T00:00:00.00000",
      "origin": "api",
      "accountingSystem": "fiken"
    }
  ]
}
Relationship

Get a list of all relationships.

Parameters

NameTypeInRequiredDescription
limitintegerqueryNoMax amount of items to return
skipintegerqueryNoNumber of items to skip.

Responses

CodeDescription
200

OK

Media type
application/json
{
  "metadata": {
    "limit": 100,
    "skip": 0,
    "returnedItems": 1,
    "totalItems": 1
  },
  "items": [
    {
      "relationshipId": "123e4567-e89b-12d3-a456-426614174000",
      "relationshipState": "access_approved",
      "borrowerCompanyName": "Borrower 1",
      "borrowerContactEmail": "borrower@email.com",
      "bankContactEmail": "bank@email.com",
      "relationshipCreatedAt": "2025-01-01T00:00:00.000000"
    }
  ]
}

Get data about relationship with a borrower.

Parameters

NameTypeInRequiredDescription
orgNrstringpathYesThe brreg organization number of the borrower to retrieve data from.

Responses

CodeDescription
200

OK

Media type
application/json
{
  "relationshipId": "123e4567-e89b-12d3-a456-426614174000",
  "relationshipState": "access_approved",
  "borrowerCompanyName": "Borrower 1",
  "borrowerContactEmail": "borrower@email.com",
  "bankContactEmail": "bank@email.com",
  "relationshipCreatedAt": "2025-01-01T00:00:00.000000"
}

Request access to a borrower company. This will generate a signup link and create a relationship in state access_requested. Forward the link to the borrower, and after they have completed the onboarding they can accept the request. The relationship will then be set to access_approved, and you will be able to view data. Call GET /relationship/{orgNr} to see relationship status.

Request body

{
  "bankContactEmail": "bank@email.com",
  "borrowers": [
    {
      "orgNr": "000000000"
    }
  ]
}

Responses

CodeDescription
200

OK

Media type
application/json
[
  {
    "orgNr": "000000000",
    "success": true,
    "message": "",
    "signupLink": "https://www.symetrisk.com/signup?symetrisk-signup-id=123-abc&signup-email=your@email.com",
    "signupLinkExpiresAt": 1762381401
  }
]
Notifications

Get notifications

Parameters

NameTypeInRequiredDescription
limitintegerqueryNoMax amount of items to return
skipintegerqueryNoNumber of items to skip.

Responses

CodeDescription
200

OK

Media type
application/json
{
  "metadata": {
    "limit": 100,
    "skip": 0,
    "returnedItems": 1,
    "totalItems": 1
  },
  "items": [
    {
      "id": 1,
      "text": "Fetched data from Fiken",
      "type": "information",
      "createdAt": "2025-01-01T00:00:00.000000"
    }
  ]
}

Get notifications for a borrower you have an approved relationship with.

Parameters

NameTypeInRequiredDescription
orgNrstringpathYesThe brreg organization number of the borrower to retrieve data from.
limitintegerqueryNoMax amount of items to return
skipintegerqueryNoNumber of items to skip.

Responses

CodeDescription
200

OK

Media type
application/json
{
  "metadata": {
    "limit": 100,
    "skip": 0,
    "returnedItems": 1,
    "totalItems": 1
  },
  "items": [
    {
      "id": 1,
      "text": "Fetched data from Fiken for borrower SYMETRISK AS",
      "type": "information",
      "createdAt": "2025-01-01T00:00:00.000000"
    }
  ]
}
400

No relationship found

Media type
application/json
[
  {
    "key": "relationship_not_found",
    "message": "We didn't find a relationship with that brreg organization number."
  }
]

Best practices when working with the API

  • Endpoints that return an array of items will usually provide the option to paginate the response. To do this, use the 'limit' and 'skip' query parameters (these will be included in the 'parameters' section in API documentation for each endpoint where it is supported.)
  • Every endpoint that supports pagination will also return a 'metadata' field with each response. This will include the applied pagination options, number of items returned, and the total amount of items that exists with the applied filters. Combine this data with 'limit' and 'skip' to retrieve all the records you need.
  • For example, to get the first 100 items, use include these query parameters: '?limit=100&skip=0'. Now, if the 'totalItems' field in the 'metadata' returns is 110, you can use these query parameters to get the remaining 10 items: '?limit=10&skip=100'.

API support

If you have questions or problems regarding the API, you can contact api support at support+api@symetrisk.com