Docs/API/Pre-Approval Score

Pre-Approval Score

Run PGI's credit scoring engine against a borrower's financial data. Returns a numeric score and a decision in under 3 seconds.

POST /api/v2/score/

This is a score-only endpoint. It does not create an application or generate a premium quote. Use it to pre-qualify borrowers before collecting a full application.

Request body

All 11 fields are required.

FieldTypeDescription
countryrequired string ISO 3166-1 alpha-2 country code. Supported: CA, US.
naics_coderequired string 6-digit NAICS industry code for the borrower's business.
formation_daterequired string Business formation date in YYYY-MM-DD format.
loan_amountrequired number Total loan amount in local currency (CAD or USD). Must be positive.
pgi_limitrequired number Requested PGI coverage limit. Must be <= loan_amount.
annual_revenuerequired number Most recent 12-month revenue. Must be positive.
ebitdarequired number Most recent 12-month EBITDA. Can be negative.
total_debtrequired number Total outstanding debt including the new loan.
monthly_debt_servicerequired number Total monthly debt payments (principal + interest).
collateral_valuerequired number Appraised value of collateral securing the loan.
enterprise_valuerequired number Estimated enterprise value of the business.
q_business_provinceoptional string Canadian province or territory code (e.g. "ON", "BC"). Only relevant for Canadian deals. When provided, triggers a hard block if the province is Quebec (QC).

Response shapes

Approve

Score meets the threshold for automatic approval. You'll get a numeric score and can proceed to submit a full application.

200 Approve
{
  "score_id": "A1B2C3D4E5F6789012345678AB",
  "score": 83,
  "decision": "approve",
  "country": "CA",
  "naics_code": "541511",
  "created_at": "2026-04-03T14:22:31Z"
}

Decline

The borrower does not meet eligibility requirements. The numeric score is omitted and a reason string is returned instead.

200 Decline
{
  "score_id": "C3D4E5F6A1B2789012345678CD",
  "decision": "decline",
  "reason": "NAICS code not approved for coverage.",
  "country": "CA",
  "naics_code": "721110",
  "created_at": "2026-04-03T14:24:02Z"
}
Important Decline responses do not include a score field. Always check the decision field before reading the score.
Quebec applications blocked PGI does not currently write business in Quebec. If you submit a Canadian deal with q_business_province="QC" or a Quebec address, the score endpoint will decline with reason "PGI does not currently write business in Quebec."

Code examples

curl -X POST https://api.pgicover.com/api/v2/score/ \
  -H "Authorization: Bearer pk_test_abc123def456ghi789jkl012mno345" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "CA",
    "naics_code": "541511",
    "formation_date": "2019-03-15",
    "loan_amount": 500000,
    "pgi_limit": 250000,
    "annual_revenue": 2000000,
    "ebitda": 400000,
    "total_debt": 300000,
    "monthly_debt_service": 8000,
    "collateral_value": 600000,
    "enterprise_value": 3000000
  }'
import requests

API_KEY = "pk_test_abc123def456ghi789jkl012mno345"

resp = requests.post(
    "https://api.pgicover.com/api/v2/score/",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "country": "CA",
        "naics_code": "541511",
        "formation_date": "2019-03-15",
        "loan_amount": 500000,
        "pgi_limit": 250000,
        "annual_revenue": 2000000,
        "ebitda": 400000,
        "total_debt": 300000,
        "monthly_debt_service": 8000,
        "collateral_value": 600000,
        "enterprise_value": 3000000,
    },
)

data = resp.json()

if data["decision"] == "approve":
    print(f"Approved with score {data['score']}")
else:
    print(f"Declined: {data['reason']}")
const API_KEY = "pk_test_abc123def456ghi789jkl012mno345";

const resp = await fetch("https://api.pgicover.com/api/v2/score/", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    country: "CA",
    naics_code: "541511",
    formation_date: "2019-03-15",
    loan_amount: 500000,
    pgi_limit: 250000,
    annual_revenue: 2000000,
    ebitda: 400000,
    total_debt: 300000,
    monthly_debt_service: 8000,
    collateral_value: 600000,
    enterprise_value: 3000000,
  }),
});

const data = await resp.json();

if (data.decision === "approve") {
  console.log(`Approved with score ${data.score}`);
} else {
  console.log(`Declined: ${data.reason}`);
}

Error responses

400 Validation Error
{
  "error": {
    "code": "invalid_request",
    "message": "Validation failed.",
    "details": {
      "pgi_limit": ["PGI limit cannot exceed loan amount."],
      "formation_date": ["Date must be in YYYY-MM-DD format."]
    }
  }
}

Sandbox test fixtures

Use these combinations in sandbox mode to test each outcome:

Expected OutcomeNAICS CodeKey Values
approve 541511 Strong financials, no adverse history. Use the example payload above.
approve 236220 Set ebitda to 80000 and total_debt to 450000. Near-threshold approval.
decline 721110 Use NAICS code 721110 (accommodation). Eligibility gate rejects based on industry.