SpareSpare Docs
GuidesAPI Reference

Risk Reports

Create, list, retrieve, export, and delete risk reports for an authorized consent.

Risk reports analyze synced account data for a consent. Create a report, poll its status, fetch the scored result, and export a PDF when ready.

GET
/report/risk-reports
Authorization
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Query

1-based page number for paginated results. Defaults to the first page.

Number of items to return per page. Defaults to the API's page size.

UUID of the consent (returned when the consent was created).

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/report/risk-reports" \  -H "x-tenant: UAE"
{  "data": [    {      "applicationId": "string",      "clientId": "string",      "consentId": "string",      "createdAt": "2025-01-01T00:00:00Z",      "reason": "string",      "refresh": true,      "reportId": "string",      "status": "Requested"    }  ],  "meta": {    "currentPageNumber": 0,    "pageSize": 0,    "totalNumberOfPages": 0  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
POST
/report/risk-reports
Authorization
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Body
*object

Request Body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/report/risk-reports" \  -H "x-tenant: UAE" \  -H "Content-Type: application/json" \  -d '{    "consentId": "string"  }'
{  "data": {    "applicationId": "string",    "clientId": "string",    "consentId": "string",    "createdAt": "2025-01-01T00:00:00Z",    "reason": "string",    "refresh": true,    "reportId": "string",    "status": "Requested"  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
GET
/report/risk-reports/{reportId}
Authorization
Path
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/report/risk-reports/string" \  -H "x-tenant: UAE"
{  "data": {    "accountHolderName": "string",    "createdAt": "2025-01-01T00:00:00Z",    "currency": "AED",    "reportId": "string",    "requestedBy": "string",    "riskLevel": "string",    "score": 0,    "signals": {      "activeLoanMortgageDetail": {        "insufficientData": true,        "interpretation": "string",        "loanDetected": true,        "loanTypeDetected": "string",        "monthlyEmiEstimated": 0,        "newLoanWithinTwoCycles": true,        "notApplicable": true,        "observationWindowMonths": 0,        "score": 0      },      "averageTransactionAmount": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "avgMonthlyInflowDetail": {        "avgMonthlyInflow": 0,        "coverageRatio": 0,        "inflowVariabilityRatio": 0,        "interpretation": "string",        "magnitudeScore": 0,        "monthlyInflowValues": [          0        ],        "observationWindowMonths": 0,        "score": 0,        "stabilityScore": 0      },      "avgMonthlyOutflowDetail": {        "avgMonthlyOutflow": 0,        "expenseBurdenRatio": 0,        "expenseBurdenScore": 0,        "expenseGrowthRate": 0,        "interpretation": "string",        "monthlyOutflowValues": [          0        ],        "observationWindowMonths": 0,        "outflowVariabilityRatio": 0,        "score": 0,        "stabilityScore": 0      },      "cashFlowRatioDetail": {        "avgMonthlyInflow": 0,        "avgMonthlyOutflow": 0,        "interpretation": "string",        "marginRatio": 0,        "netCashFlow": 0,        "observationWindowMonths": 0,        "ratio": 0,        "score": 0      },      "debtServiceRatioDetail": {        "avgMonthlyDebtPayment": 0,        "avgMonthlyInflow": 0,        "dsrPercentage": 0,        "dsrRatio": 0,        "incomeDecliningAdjustment": true,        "insufficientData": true,        "interpretation": "string",        "newLoanGuardrail": true,        "notApplicable": true,        "observationWindowMonths": 0,        "score": 0      },      "emergencyBufferDetail": {        "avgAvailableBalance": 0,        "avgMonthlyExpense": 0,        "emergencyBufferMonths": 0,        "interpretation": "string",        "notApplicable": true,        "observationWindowMonths": 0,        "score": 0,        "usedCurrentBalanceFallback": true      },      "employerConsistencyDetail": {        "distinctEmployers": 0,        "durationRatio": 0,        "employerSwitchCount": 0,        "interpretation": "string",        "observationWindowMonths": 0,        "primaryEmployer": "string",        "score": 0      },      "estimatedValueByYear": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "fixedSpendRatio": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "fixedVsDiscretionarySpendDetail": {        "avgDiscretionarySpend": 0,        "avgFixedSpend": 0,        "avgTotalSpend": 0,        "discretionaryRatio": 0,        "fixedSpendRatio": 0,        "interpretation": "string",        "notApplicable": true,        "observationWindowMonths": 0,        "score": 0,        "unreliableCategorization": true      },      "highRiskCategorySpendDetail": {        "avgHighRiskSpend": 0,        "avgTotalSpend": 0,        "highRiskSpendPercentage": 0,        "highRiskSpendRatio": 0,        "interpretation": "string",        "notApplicable": true,        "observationWindowMonths": 0,        "score": 0,        "singleIsolatedRiskyTransactionExcluded": true      },      "incomeFrequencyDetail": {        "coverageRatio": 0,        "frequencyType": "string",        "gapStabilityRatio": 0,        "interpretation": "string",        "medianGapDays": 0,        "observationWindowMonths": 0,        "score": 0      },      "incomeStabilityScore": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "incomeTransactionCount": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "incomeTrendDetail": {        "adjustedScore": 0,        "firstMonthIncome": 0,        "growthConsistencyRatio": 0,        "interpretation": "string",        "lastMonthIncome": 0,        "normalizedGrowthRate": 0,        "observationWindowMonths": 0,        "score": 0      },      "overdraftFrequencyDetail": {        "insufficientBalanceHistory": true,        "interpretation": "string",        "observationWindowDays": 0,        "observationWindowMonths": 0,        "overdraftDays": 0,        "overdraftEpisodeCount": 0,        "overdraftFrequencyRatio": 0,        "score": 0      },      "positiveEndOfMonthBalanceDetail": {        "interpretation": "string",        "negativeMonths": 0,        "notApplicable": true,        "observationWindowMonths": 0,        "positiveMonthPercentage": 0,        "positiveMonths": 0,        "score": 0,        "usedNetCashFlowFallback": true      },      "recurringPaymentLoadDetail": {        "avgMonthlyInflow": 0,        "avgMonthlyRecurringPayment": 0,        "interpretation": "string",        "notApplicable": true,        "observationWindowMonths": 0,        "recurringPaymentLoad": 0,        "recurringPaymentLoadPercentage": 0,        "score": 0      },      "repaymentRegularityDetail": {        "compositeRawScore": 0,        "emiExpectedAmount": 0,        "fullPaymentRatio": 0,        "fullPayments": 0,        "insufficientEmiCycles": true,        "interpretation": "string",        "missedPayments": 0,        "missedRatio": 0,        "newLoanGuardrail": true,        "notApplicable": true,        "observationWindowMonths": 0,        "onTimePayments": 0,        "onTimeRatio": 0,        "score": 0,        "totalExpectedPayments": 0      },      "repaymentScore": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "riskyTransactionCount": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "salaryCoefficientOfVariation": {        "interpretation": "string",        "observationWindowMonths": 0,        "score": 0,        "value": 0      },      "salaryRangeDetail": {        "interpretation": "string",        "maxMonthlySalary": 0,        "medianMonthlySalary": 0,        "minMonthlySalary": 0,        "observationWindowMonths": 0,        "salaryCoverageRatio": 0,        "salaryVariabilityRatio": 0,        "score": 0      },      "savingRatioDetail": {        "avgMonthlyClosingBalance": 0,        "avgMonthlyInflow": 0,        "interpretation": "string",        "notApplicable": true,        "observationWindowMonths": 0,        "savingRatio": 0,        "savingRatioPercentage": 0,        "score": 0,        "usedCurrentBalanceFallback": true      },      "volatilityIndexDetail": {        "balanceVolatility": 0,        "balanceVolatilityFromDailyBalances": true,        "expenseVolatility": 0,        "incomeVolatility": 0,        "interpretation": "string",        "normalizedIndex": 0,        "observationWindowMonths": 0,        "score": 0,        "volatilityIndexRaw": 0      }    }  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
DELETE
/report/risk-reports/{reportId}
Authorization
Path
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/report/risk-reports/string" \  -H "x-tenant: UAE"
Empty
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
GET
/report/risk-reports/{reportId}/export
Path
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/report/risk-reports/string/export" \  -H "x-tenant: UAE"
Empty
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
GET
/report/risk-reports/{reportId}/status
Authorization
Path
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/report/risk-reports/string/status" \  -H "x-tenant: UAE"
{  "data": {    "applicationId": "string",    "clientId": "string",    "consentId": "string",    "createdAt": "2025-01-01T00:00:00Z",    "reason": "string",    "refresh": true,    "reportId": "string",    "status": "Requested"  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}