Insights Report
Feezback's layer of transactions identification, standartization, labeling and categorization.
Once an account holder has granted consent with a VIEW flow (srv: "view_ais/user"), Feezback computes an insights report based on the aggregated data from all connected accounts. The report provides a financial view into a person's (or organizations) aggregated assets, obligations, balances and cashflow. This page covers how to consume that report — either as JSON through the API, or as a hosted dashboard page.
How it fits in the flow
- Run the VIEW consent flow (
view_ais/user) — see Open Banking Account Connection. - The user grants consent and Feezback pulls their data.
- Feezback computes the insights report. Once ready, Feezback sends the
UserInsightReadywebhook — see Webhook Catalog. - From here you have two independent options, and you can use either or both:
- Pull the report as JSON via the Insights API — the same
ais/tppbearer token you already use for other data endpoints. - Generate a hosted dashboard link (
srv: "view/user") and get a link to a View page with a user friendly dashboard. This link is purely for viewing — it doesn't return JSON to you.
- Pull the report as JSON via the Insights API — the same
Option A: Getting the report as JSON
{
"sub": "sub",
"iss": "tpp/{TPP_ID}",
"srv": "ais/tpp",
"iat": 1728986260,
"exp": 1728986860,
"ttl": 600
}| Field | Type | Required | Description |
|---|---|---|---|
sub | string | Yes | Subject used for the API user path. Do not include PII if the value may appear in a URL. |
iss | string | Yes | Issuer in the format tpp/{TPP_ID}. |
srv | string | Yes | Use ais/tpp. |
iat | number | Yes | Issued-at timestamp. |
exp | number | Yes | Expiration timestamp. Use current time plus 600 seconds. |
ttl | number | Yes | Token TTL. Use 600. |
b. Sign the JWT with the RS512 algorithm.
Convert the JSON from the previous step into a JWT (JSON Web Token):
Sign the JWT with the private key that matches the public key you sent to Feezback.
For manual JWT signing see https://www.jwt.io/.
| Setting | Value |
|---|---|
| Algorithm | RS512 |
| Issuer format | tpp/{TPP_ID} |
| Request origin | Whitelisted backend IP address |
c. Send this JWT (from previous step) to the Token Generation API:
curl --location --request POST 'https://{ENVIRONMENT}.feezback.cloud/token' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "{GENERATED_JWT_TOKEN}"
}'Replace {ENVIRONMENT} with one of these values:
| Environment | Token endpoint |
|---|---|
| Integration | https://lgs-integ01.feezback.cloud/token |
| Production | https://lgs-prod.feezback.cloud/token |
| The response token is valid for 600 seconds. |
- The JSON response will include a token.
Use the token value from the body for authenticating as Bearer against the TPP API, for the next 600 seconds.
GET /tpp/v1/users/USERID/insightsThis is a separate path from the hosted dashboard link below — getting the JSON uses the same ais/tpp bearer token / TPP API host pattern as any other data endpoint (accounts, transactions, etc.). See Data Aggregation & Enrichment for the token request.
curl --location 'https://{TPP_API_HOST}/tpp/v1/users/USERID/insights' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'X-Tpp-Id: {TPP_ID}'The response is a list of insight objects:
- Each field is calculated separately per currency.
- If a section is missing from the response, it means that insight isn't enabled on your plan — not that the user has no data for it.
- Like other AIS data endpoints, this call can return
307while the report is still being computed — poll using the sameX-Request-Wait/transactionIdpattern described in Data Aggregation & Enrichment.
Option B: Generating an expiring hosted dashboard link
Create a JSON with srv: "view/user" and send it to /link.
Unlike the consent-granting JWT, this one doesn't need a flow block — the user has already consented.
{
"sub": "user-123",
"iss": "tpp/{TPP_ID}",
"srv": "view/user",
"userWasAuthenticated": true,
"insightType": "private"
}| Field | Required | Notes |
|---|---|---|
sub | Yes | User identifier — must match the identifier used for the original VIEW consent. |
iss | Yes | tpp/{TPP_ID} |
srv | Yes | view/user |
userWasAuthenticated | Yes | Confirms you've already authenticated the user. |
insightType | No | private (default) or corporate. |
Sign the JWT with RS512, ES256, or EdDSA — same as any other LGS request. The response is JWE-encrypted, same as every /link response — see Security.
Call the relevant env. to get a VIEW link.
curl --location --request POST 'https://{ENVIRONMENT}.feezback.cloud/link' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "{GENERATED_JWT_TOKEN}"
}'The link points to Feezback's hosted VIEW dashboard, carrying the encrypted token, your TPP ID, and the insight type as query parameters. Send the user to this link to view their report as a page.
The link expires 30 minutes after issuance and is reusable within that window — the user can open it more than once before it expires. Generate a new link once it expires.
Common questions
| Question | Answer |
|---|---|
| Do I need a separate consent for the hosted dashboard vs. the JSON API? | No — both read from the same VIEW consent. view/user just generates a link into the existing report; it doesn't create new consent. |
| A section is missing from my JSON response | That insight isn't configured for your organization. Talk to your Feezback contact to enable it. |
I got a 307 from the insights endpoint | The report is still computing — poll with transactionId from the Location header, same as other AIS endpoints |
| Can I brand the hosted dashboard page? | Yes — it's a themeable surface. Talk to your integration contact about customizing it |
| The dashboard link expired | Generate a new one with srv: "view/user" — links are valid for 30 minutes |
Updated 4 days ago