Applications & Quotes
Submit a full insurance application. PGI reviews the application and submits it to underwriters. You receive a quote via webhook when approved.
How the quote flow works
- You submit an application via
POST /api/v2/applications/ - PGI reviews the application internally and submits to underwriters
- Underwriters approve or decline the application
- If approved: PGI sends an
application.quotedwebhook to your registered URL with quote details - If declined: PGI sends an
application.declinedwebhook - Once you receive a quote, you can proceed to bind the policy
Submit application
/api/v2/applications/
Creates an application record linked to your partner account. The request body uses a single form_data object with all application answers keyed by question ID. No top-level fields are required.
Request body
| Field | Type | Description |
|---|---|---|
| form_datarequired | object | Application answers keyed by question ID. All required fields must be present and non-empty or the request returns 400. |
Required form_data fields for Canadian applications
When submitting a Canadian application (q0_country = "Canada"), the following fields are required:
| Question ID | Question Text | Type | Allowed Values/Format |
|---|---|---|---|
| q0_country | Country where the loan was issued | button | "Canada" or "USA" |
| q2_full_name | Full legal name of the guarantor (the named insured) | string | Non-empty text |
| q4_date_of_birth | Guarantor date of birth (identity and KYC) | date | YYYY-MM-DD format |
| q7_email | Guarantor email address (the email of the individual giving the personal guarantee). Used by PGI for records and communications. Not shared with the underwriter. | Valid email address | |
| q5_residential_address | Guarantor residential address (policy documents and regulatory compliance) | string or object | Free-text string or structured object with postal_code |
| q15_business_legal_name | Business legal name (must match loan documents) | string | Non-empty text |
| q17_business_operating_address | Business operating address (should include postal code) | string or object | Non-empty text or structured object with postal_code |
| q25_naics_code | NAICS industry classification code (risk tiering) | string | Valid NAICS code mappable to Purbeck sector |
| q26_formation_date | Business formation date (drives business-age rules) | date | YYYY-MM-DD, YYYY-MM, or text like "June 2015" |
| q41_loan_amount | The loan balance the guarantor is obligated to pay (do not combine multiple loans) | currency | Number, maximum 1,000,000 CAD |
| q42_pgi_limit | The sum insured (total insured amount of coverage requested). PGI pays the insured guarantor, not the lender. | currency | Number, maximum 1,000,000 CAD |
| q_ca_id_type | Government ID type | dropdown | "Passport", "National ID", "Driving Licence", "Other" |
| q_ca_id_number | Government ID number (exactly as it appears on the document) | string | Non-empty text |
| q_ca_loan_type | Type of loan being insured | dropdown | "Asset Finance", "Invoice Finance", "Commercial Mortgage", "Other Secured Loan", "Unsecured Loan", "Other" |
| q_ca_loan_type_other | Short free-text description of the loan type. Required when q_ca_loan_type is "Other"; omit or leave blank otherwise. |
string | Non-empty text (required when q_ca_loan_type is "Other") |
Declarations (11 required sections)
All 11 declaration sections must be answered. When an answer is adverse (shown below), a matching <key>_reason field is required.
| Declaration Key | Question Text | Answer Values | Reason Required When |
|---|---|---|---|
| section_1_a | Does the business carry insurance coverage for all physical assets covered by the personal guarantee? | "yes" or "no" | Never (no reason required) |
| section_1_2 | Have you ever declared personal bankruptcy? | "yes" or "no" | Answer is "yes" |
| section_2_a | Have you ever been barred from serving as a Director, or are you currently under investigation that could result in being barred? | "yes" or "no" | Answer is "yes" |
| section_2_b | Have you ever been a Director of a company that has gone through bankruptcy, receivership, or restructuring proceedings? | "yes" or "no" | Answer is "yes" |
| section_2_c | Have you ever been a Director of a company that has been under investigation by the Canada Revenue Agency or the Canada Border Services Agency? | "yes" or "no" | Answer is "yes" |
| section_2_d | Do you currently have any actual or contingent liability that you will not be able to pay within 30 days of when it becomes due? | "yes" or "no" | Answer is "yes" |
| section_3_a | Does the business currently have any bad or doubtful debts owed to it that are likely to materially affect its ability to pay liabilities as they become due? | "yes" or "no" | Answer is "yes" |
| section_4_a | Has the business lost a significant investor, customer, or supplier in the last 6 months? | "yes" or "no" | Answer is "yes" |
| section_5_a | Are you aware of any information that could materially affect the business's ability to meet its obligations over the next 6 months? | "yes" or "no" | Answer is "yes" |
| section_6_a | As of today, is the company solvent (able to pay its debts as they become due)? | "yes" or "no" | Never (no reason required) |
| section_3_c | I confirm that all answers above are true to the best of my knowledge. If anyone else completed this form on my behalf, I confirm they were authorized to do so and that their answers are accurate. | "Agree" or "Disagree" | Answer is "Disagree" |
Response
{
"application_id": "D4E5F6A1B2C3789012345678EF",
"status": "received",
"message": "Application received. Pending quote from underwriters."
}
application.quoted or application.declined webhook at your registered URL. See Webhooks for payload details.
Example (Canada)
curl -X POST https://api.pgicover.com/api/v2/applications/ \
-H "Authorization: Bearer pk_test_abc123def456ghi789jkl012mno345" \
-H "Content-Type: application/json" \
-d '{
"form_data": {
"q0_country": "Canada",
"q2_full_name": "Sarah Chen",
"q4_date_of_birth": "1985-06-15",
"q7_email": "[email protected]",
"q5_residential_address": "456 Oak Avenue, Toronto, ON M4V 2P7, Canada",
"q_ca_id_type": "Driving Licence",
"q_ca_id_number": "DL123456789",
"q15_business_legal_name": "Maple Leaf Technologies Inc.",
"q25_naics_code": "541511",
"q26_formation_date": "2019-03-15",
"q17_business_operating_address": "789 King Street West, Toronto, ON M5H 2A9, Canada",
"q41_loan_amount": 500000,
"q42_pgi_limit": 250000,
"q_ca_loan_type": "Commercial Mortgage",
"section_1_a": "yes",
"section_1_2": "yes",
"section_1_2_reason": "Voluntary bankruptcy discharge in 2018, fully resolved with creditors.",
"section_2_a": "no",
"section_2_b": "no",
"section_2_c": "no",
"section_2_d": "no",
"section_3_a": "no",
"section_4_a": "no",
"section_5_a": "no",
"section_6_a": "yes",
"section_3_c": "Agree"
}
}'
import requests
resp = requests.post(
"https://api.pgicover.com/api/v2/applications/",
headers={"Authorization": "Bearer pk_test_abc123def456ghi789jkl012mno345"},
json={
"form_data": {
"q0_country": "Canada",
"q2_full_name": "Sarah Chen",
"q4_date_of_birth": "1985-06-15",
"q7_email": "[email protected]",
"q5_residential_address": "456 Oak Avenue, Toronto, ON M4V 2P7, Canada",
"q_ca_id_type": "Driving Licence",
"q_ca_id_number": "DL123456789",
"q15_business_legal_name": "Maple Leaf Technologies Inc.",
"q25_naics_code": "541511",
"q26_formation_date": "2019-03-15",
"q17_business_operating_address": "789 King Street West, Toronto, ON M5H 2A9, Canada",
"q41_loan_amount": 500000,
"q42_pgi_limit": 250000,
"q_ca_loan_type": "Commercial Mortgage",
"section_1_a": "yes",
"section_1_2": "yes",
"section_1_2_reason": "Voluntary bankruptcy discharge in 2018, fully resolved with creditors.",
"section_2_a": "no",
"section_2_b": "no",
"section_2_c": "no",
"section_2_d": "no",
"section_3_a": "no",
"section_4_a": "no",
"section_5_a": "no",
"section_6_a": "yes",
"section_3_c": "Agree",
},
},
)
data = resp.json()
print(f"Application {data['application_id']}: {data['message']}")
# Now wait for the application.quoted webhook...
const resp = await fetch("https://api.pgicover.com/api/v2/applications/", {
method: "POST",
headers: {
"Authorization": "Bearer pk_test_abc123def456ghi789jkl012mno345",
"Content-Type": "application/json",
},
body: JSON.stringify({
form_data: {
q0_country: "Canada",
q2_full_name: "Sarah Chen",
q4_date_of_birth: "1985-06-15",
q7_email: "[email protected]",
q5_residential_address: "456 Oak Avenue, Toronto, ON M4V 2P7, Canada",
q_ca_id_type: "Driving Licence",
q_ca_id_number: "DL123456789",
q15_business_legal_name: "Maple Leaf Technologies Inc.",
q25_naics_code: "541511",
q26_formation_date: "2019-03-15",
q17_business_operating_address: "789 King Street West, Toronto, ON M5H 2A9, Canada",
q41_loan_amount: 500000,
q42_pgi_limit: 250000,
q_ca_loan_type: "Commercial Mortgage",
section_1_a: "yes",
section_1_2: "yes",
section_1_2_reason: "Voluntary bankruptcy discharge in 2018, fully resolved with creditors.",
section_2_a: "no",
section_2_b: "no",
section_2_c: "no",
section_2_d: "no",
section_3_a: "no",
section_4_a: "no",
section_5_a: "no",
section_6_a: "yes",
section_3_c: "Agree",
},
}),
});
const data = await resp.json();
console.log(`Application ${data.application_id}: ${data.message}`);
// Now wait for the application.quoted webhook...
Retrieve quote
/api/v2/quotes/{quote_id}/
Retrieve an existing quote and its current status. The quote_id is included in the application.quoted webhook payload. Use this endpoint to check whether a quote is still valid before binding.
quote_id (PGI's reference) or the underwriter_ref (the external London/underwriter reference). It tries quote_id first, then falls back to underwriter_ref.
Response
{
"quote_id": "E5F6A1B2C3D4789012345678AA",
"underwriter_ref": "LON-2026-04-00412",
"annual_premium": "5000.00",
"rate": "2.000",
"coverage_amount": "250000.00",
"valid_until": "2026-05-03T15:05:44Z",
"quote_status": "active"
}
quote_id is PGI's internal reference. underwriter_ref is the external reference assigned by the London/underwriting market. When communicating with PGI or clients, use the underwriter_ref. Note that underwriter_ref may be empty initially if the underwriter has not yet assigned a reference.
Quote statuses
| Status | Meaning |
|---|---|
| active | Quote is valid and can be bound. |
| expired | Past the 30-day validity window. Contact PGI for a new quote. |
| bound | This quote has been bound to a policy. |