API Reference
All endpoints require the x-api-key header.
/api/applications/initiateInitiate Application
Creates an applicant record and a loan application in one call. Returns a Mono Connect widgetUrl you should present to your user so they can link their bank account.
Request Body
| Field | Type | Description |
|---|---|---|
| firstName | string | Applicant's first name (2–100 chars). Must match their bank account name. |
| lastName | string | Applicant's last name (2–100 chars). Must match their bank account name. |
| string | Valid email address for the applicant. | |
| phone | string | Phone number (10–15 chars). Optional. |
| bvn | string | 11-digit BVN. Enables credit bureau lookup during analysis. |
| amount | number | Loan amount in Naira (smallest unit — kobo not required). |
| tenor | number | Loan tenor in months (e.g. 6, 12, 24). |
| interestRate | number | Monthly interest rate as a percentage (e.g. 5.0 for 5%). |
| purpose | string | Loan purpose description. Optional. |
Sample Request
curl -X POST https://api.mono-parser.shop/api/applications/initiate \
-H "Content-Type: application/json" \
-H "x-api-key: mp_live_your_secret_key" \
-d '{
"firstName": "Olusegun",
"lastName": "Adeyemi",
"email": "olusegun.adeyemi@example.com",
"phone": "08012345678",
"bvn": "22345678901",
"amount": 500000,
"tenor": 12,
"interestRate": 5.0,
"purpose": "Business expansion"
}'Response
{
"applicationId": "357ab3ce-55ce-4f73-82c9-dab3136c7885",
"applicantId": "54cbd45f-bf8e-4add-8d0c-adb5efe705c1",
"widgetUrl": "https://connect.withmono.com/?key=...&reference=...",
"status": "PENDING_LINKING"
}widgetUrl to the applicant — it is for their browser, not your server./api/applications/:id/link-accountLink Account
Re-generates a fresh Mono Connect widget URL for an existing application. Use this when an applicant needs to re-link their account (e.g. the session expired, they closed the widget without completing, or you want to link an additional account).
Path Parameter
| Field | Type | Description |
|---|---|---|
| :id | string (UUID) | The applicationId returned from the initiate endpoint. |
Sample Request
curl -X POST https://api.mono-parser.shop/api/applications/357ab3ce-55ce-4f73-82c9-dab3136c7885/link-account \ -H "x-api-key: mp_live_your_secret_key"
Response
{
"applicationId": "357ab3ce-55ce-4f73-82c9-dab3136c7885",
"widgetUrl": "https://connect.withmono.com/?key=...&reference=...",
"status": "PENDING_LINKING"
}COMPLETED or FAILED). You cannot re-link accounts after a final decision has been issued. Start the process again by calling the initiate endpoint to create a new application./api/applications/:id/finalize-linkingFinalize Linking
Signals that the applicant has finished linking all their bank accounts. This locks the application from further account linking and makes it eligible for analysis. Once called, we fire the application.ready_for_analysis webhook when all enrichment is confirmed complete.
Path Parameter
| Field | Type | Description |
|---|---|---|
| :id | string (UUID) | The applicationId returned from the initiate endpoint. |
Sample Request
curl -X POST https://api.mono-parser.shop/api/applications/357ab3ce-55ce-4f73-82c9-dab3136c7885/finalize-linking \ -H "x-api-key: mp_live_your_secret_key"
Response
{
"applicationId": "357ab3ce-55ce-4f73-82c9-dab3136c7885",
"status": "LINKED",
"message": "Linking finalized. Analysis will be available once all accounts are enriched."
}account.enrichment_ready./api/applications/:id/analyzeAnalyze Application
Queues the loan analysis job. The scoring engine reads all enriched bank data from our database and sends the decision to your webhook URL.
Path Parameter
| Field | Type | Description |
|---|---|---|
| :id | string (UUID) | The applicationId. Use the value from the account.enrichment_ready webhook for the best result. |
Sample Request
curl -X POST https://api.mono-parser.shop/api/applications/357ab3ce-55ce-4f73-82c9-dab3136c7885/analyze \ -H "x-api-key: mp_live_your_secret_key"
Response
{
"applicationId": "357ab3ce-55ce-4f73-82c9-dab3136c7885",
"status": "PROCESSING",
"message": "Analysis queued."
}application.ready_for_analysis. This event fires after you have called /finalize-linking and all linked accounts are enriched. Calling /analyze before this will return a 400 error.