Data dictionary

Every field and parameter you send to the partner API or receive from it, with its type and the class of data it carries, generated from the contract the API runs on. The reference describes each operation that sends or returns them.

Data classes

Each field and parameter carries the most sensitive class of data it can hold, the document's x-data-class. A field marked — holds a schema or a list whose own fields carry theirs.

public
A value with no meaning outside the API: a status name, a label, a count, an object type, or a timestamp of a public event.
institution_confidential
The institution's own business records with SecondAppraisal: its references, record ids, program terms, prices and fees, statements and aggregate reports.
borrower_personal
Facts about one borrower or member: their name, vehicle and VIN, insurance carrier and claim number, loss state and date, and the amounts of their loss, loan and settlement.
borrower_contact
How to reach one borrower or member: an email address or a phone number.
credential
A value that grants access by itself, such as a member's activation link.

Parameters you send

Every path and query parameter, by the operation that takes it.

ParameterOperationTypeData classDescription
statusGET /api/gap/v1/referralsarray of stringpublicComma-separated statuses, e.g. invited,activated. Case-insensitive. ?status= is no filter; a value naming no status (,, or only spaces) is refused. A status matches the status a referral is shown with: reporting_withdrawn lists the referrals whose borrower withdrew permission to report their progress, and any other status leaves them out.
external_refGET /api/gap/v1/referralsstringinstitution_confidentialExact match on the external_ref you sent, trimmed. ?external_ref= is no filter; only spaces is refused. Deprecated: the reference travels in the URL, where the systems it passes through can record it. It still filters; retrieve a referral by the id its create returned instead.
limitGET /api/gap/v1/referralsintegerpublicPage size, 1 to 100, written in digits. A blank value means the default.
starting_afterGET /api/gap/v1/referralsstringinstitution_confidentialCursor: the previous page's next_cursor (its last referral's id, or with updated_after an opaque u1. cursor). ?starting_after= is the first page; only spaces is refused.
updated_afterGET /api/gap/v1/referralsstring (date-time)publicOnly the referrals changed after this time (ISO 8601 with its offset, such as 2026-10-01T00:00:00Z, from 0001-01-01T00:00:00Z through 9999-12-31T23:59:59.999Z), oldest change first; a referral that changes again before you reach it moves to a later page. A referral whose borrower withdraws permission to report its progress is listed once more, at reporting_withdrawn_at, and never again. A change is listed about a minute after it happens. Every page, the last and an empty one too, returns an opaque u1. next_cursor: to poll, keep the latest one and send it as starting_after with the same updated_after, never a time from your own clock, which misses the changes made in the minute before each poll. A cursor works only for the institution and mode it was issued to; if one is refused (400 invalid_cursor), start again from your updated_after without it. ?updated_after= is no filter; only spaces is refused. Spaces around the time are ignored.
idGET /api/gap/v1/referrals/{id}stringinstitution_confidentialThe referral's id.
idPATCH /api/gap/v1/referrals/{id}stringinstitution_confidentialThe referral's id.
idPOST /api/gap/v1/referrals/{id}/simulatestringinstitution_confidentialThe referral's id.
idPOST /api/gap/v1/referrals/{id}/atteststringinstitution_confidentialThe referral's id.
fromGET /api/gap/v1/analyticsstring (date)publicReferrals created on or after this date (UTC), YYYY-MM-DD. ?from= is no bound. Spaces around it are ignored.
toGET /api/gap/v1/analyticsstring (date)publicReferrals created before this date (UTC), YYYY-MM-DD: the bound is exclusive. Must be after from. ?to= is no bound. Spaces around it are ignored.
vinGET /api/gap/v1/plans/enrollmentsstringborrower_personalOnly this VIN: 17 characters; case, spaces, dashes and dots are ignored. The check digit is not checked. ?vin= is no filter. Deprecated: the VIN travels in the URL, where the systems it passes through can record it. It still filters; retrieve an enrollment by the id its create returned instead.
statusGET /api/gap/v1/plans/enrollmentsstringpublicOnly this status, case-insensitive. ?status= is no filter.
cursorGET /api/gap/v1/plans/enrollmentsstringinstitution_confidentialThe previous page's next_cursor. ?cursor= is the first page; only spaces is refused.
limitGET /api/gap/v1/plans/enrollmentsintegerpublicPage size, 1 to 200, written in digits. A blank value means the default.
idGET /api/gap/v1/plans/enrollments/{id}stringinstitution_confidentialThe enrollment's id.
idPATCH /api/gap/v1/plans/enrollments/{id}stringinstitution_confidentialThe enrollment's id.
idPOST /api/gap/v1/plans/roster-sync/sessions/{id}/chunksstringinstitution_confidentialThe roster session's id.
idPOST /api/gap/v1/plans/roster-sync/sessions/{id}/commitstringinstitution_confidentialThe roster session's id.
idPOST /api/gap/v1/plans/roster-sync/sessions/{id}/abortstringinstitution_confidentialThe roster session's id.
idGET /api/gap/v1/plans/roster-sync/sessions/{id}stringinstitution_confidentialThe roster session's id.
cursorGET /api/gap/v1/plans/loss-noticesstringinstitution_confidentialThe previous page's next_cursor. ?cursor= is the first page; only spaces is refused.
limitGET /api/gap/v1/plans/loss-noticesintegerpublicPage size, 1 to 200, written in digits. A blank value means the default.
cursorGET /api/gap/v1/plans/redemptionsstringinstitution_confidentialThe previous page's next_cursor. ?cursor= is the first page; only spaces is refused.
limitGET /api/gap/v1/plans/redemptionsintegerpublicPage size, 1 to 200, written in digits. A blank value means the default.
idGET /api/gap/v1/plans/statements/{id}/linesstringinstitution_confidentialThe statement's id, as the statement list gives it.
limitGET /api/gap/v1/plans/statements/{id}/linesintegerpublicPage size, 1 to 1000, written in digits. A blank value means the default.
starting_afterGET /api/gap/v1/plans/statements/{id}/linesstringinstitution_confidentialThe previous page's next_cursor, an opaque position in this statement's lines; the page starts after it. Anything else is a 400. ?starting_after= is the first page; only spaces is refused.
limitGET /api/gap/v1/eventsintegerpublicPage size, 1 to 100, written in digits. A blank value means the default.
starting_afterGET /api/gap/v1/eventsstringinstitution_confidentialThe previous page's next_cursor: an opaque position, the last event this feed listed to you; the page starts after it. Never an event's id, not even one a webhook delivered: an event can reach the feed after a newer one's webhook has gone out, so a position taken from a webhook would skip it. A cursor works only for the institution and mode it was issued to; anything else is 400 invalid_cursor. ?starting_after= is the first page; only spaces is refused.
oasGET /api/gap/v1/openapistringpublic3.0 serves the derived OpenAPI 3.0.3 copy, for tooling that predates 3.1.
oasGET /api/gap/v1/openapi.jsonstringpublic3.0 serves the derived OpenAPI 3.0.3 copy, for tooling that predates 3.1.
idPOST /api/gap/v1/credentials/{id}/verifystringinstitution_confidentialThe signed credential's id: the keyid its signatures name.
idGET /api/gap/v1/referrals/{id}/review-recordstringinstitution_confidentialThe referral's id.
versionGET /api/gap/v1/referrals/{id}/review-recordintegerpublicThe version to read, 1 for the record's first, written in digits. Leave it out, or blank, for the latest the record can show.
limitGET /api/gap/v1/auditintegerpublicPage size, 1 to 100, written in digits. A blank value means the default.
starting_afterGET /api/gap/v1/auditstringinstitution_confidentialThe previous page's next_cursor, an opaque position; the page starts after it. Anything else is 400 invalid_cursor. Send the same from and to with it. ?starting_after= is the first page; only spaces is refused.
fromGET /api/gap/v1/auditstring (date-time)publicEntries at or after this time (ISO 8601 with its offset, such as 2026-10-01T00:00:00Z). ?from= is no bound. Spaces around it are ignored.
toGET /api/gap/v1/auditstring (date-time)publicEntries before this time (ISO 8601 with its offset): the bound is exclusive. Must be after from. ?to= is no bound. Spaces around it are ignored.

Fields you send

The request bodies, and every schema they include.

DisclosureInput

Fields (5)
FieldTypeData classRequiredDescription
confirmedtrueinstitution_confidentialRequiredMust be true.
channelstringinstitution_confidentialRequiredHow the script was delivered.One of: phone, in_person, email, video, other
attestor_namestringinstitution_confidentialRequiredThe name of the person on your staff who delivered the script.
delivered_onstring (date) or nullinstitution_confidentialOptionalThe date the script was delivered; omit for today. At most a day ahead (a timezone ahead of UTC) and no more than 90 days old. Spaces around it are ignored.
script_versionstring or nullinstitution_confidentialOptionalThe disclosure script version your staff delivered, as the script names it. The referral is stamped with it; omit it to attest the script in effect on the delivery day (today, when delivered_on is left out). An older version we published, from 1.3 on, is accepted and stamped as delivered, and our caller catches the borrower up on what changed. Every institution moves to a new version together, on the date its 30-day notice names. Versions 1.0, 1.1 and 1.2 are no longer accepted, and neither is a version we never published or one whose date hadn't come on the day your staff delivered it: each is refused with 409 script_version_stale (a row-level error on bulk).

DisclosurePreviewInput

Fields (1)
FieldTypeData classRequiredDescription
programReferralProgramInputReferralProgramInput or nullinstitution_confidentialOptionalThe program terms you'll send on create. Omit it, or send null, for your program's defaults.

PlanEnrollmentBulkInput

Fields (1)
FieldTypeData classRequiredDescription
enrollmentsPlanEnrollmentBulkRowarray of PlanEnrollmentBulkRowborrower_contactRequired1 to 500 vehicles. Each row is validated and enrolled on its own.

PlanEnrollmentBulkRow

Fields (7)
FieldTypeData classRequiredDescription
vinstringborrower_personalRequiredThe 17-character VIN, case-insensitive. Checked before anything is enrolled: 17 characters, no I, O or Q, and a valid check digit (422 vin_invalid, or a field error).
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
garaged_statestring or nullborrower_personalOptionalThe two-letter state where the vehicle is garaged, case-insensitive. Required to enroll: a row without it is refused with 422 state_required, and a state where SecondAppraisal can't act as the appraiser with 422 state_blocked.
memberPlanMemberInputPlanMemberInput or nullborrower_contactOptional
vehiclePlanVehicleInputPlanVehicleInput or nullborrower_personalOptional
consent_modestring or nullinstitution_confidentialOptionalCase-insensitive.One of: invitation, warm_handoff
idempotency_keystring or nullinstitution_confidentialOptionalReplays this row like the single endpoint's Idempotency-Key header. A row without one is keyed <header>:<index> when the call sends an Idempotency-Key header.

PlanEnrollmentCancelInput

Fields (1)
FieldTypeData classRequiredDescription
canceltruepublicRequiredCancels the enrollment: at once for a partner-billed row, at period end for a direct-collect row with a subscription.

PlanEnrollmentEditInput

Fields (4)
FieldTypeData classRequiredDescription
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
memberPlanMemberInputPlanMemberInput or nullborrower_contactOptionalNull is the same as leaving member out.
cancelfalse or nullpublicOptionalfalse or null is the same as leaving cancel out. To cancel, send { "cancel": true } on its own.
new_vinnullpublicOptionalNull is the same as leaving new_vin out. To swap the vehicle, send the new VIN.

PlanEnrollmentInput

Fields (6)
FieldTypeData classRequiredDescription
vinstringborrower_personalRequiredThe 17-character VIN, case-insensitive. Checked before anything is enrolled: 17 characters, no I, O or Q, and a valid check digit (422 vin_invalid, or a field error).
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
garaged_statestring or nullborrower_personalOptionalThe two-letter state where the vehicle is garaged, case-insensitive. Required to enroll: a row without it is refused with 422 state_required, and a state where SecondAppraisal can't act as the appraiser with 422 state_blocked.
memberPlanMemberInputPlanMemberInput or nullborrower_contactOptional
vehiclePlanVehicleInputPlanVehicleInput or nullborrower_personalOptional
consent_modestring or nullinstitution_confidentialOptionalCase-insensitive.One of: invitation, warm_handoff

PlanEnrollmentPatchInput

One of PlanEnrollmentCancelInput, PlanEnrollmentSwapInput, PlanEnrollmentEditInput.

PlanEnrollmentSwapInput

Fields (7)
FieldTypeData classRequiredDescription
new_vinstringborrower_personalRequiredThe 17-character VIN, case-insensitive. Checked before anything is enrolled: 17 characters, no I, O or Q, and a valid check digit (422 vin_invalid, or a field error). The member moves to this vehicle, which is eligible from the time of the change; a loss on it dated before the change isn't included.
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
garaged_statestring or nullborrower_personalOptionalThe two-letter state where the vehicle is garaged, case-insensitive. Required to enroll: a row without it is refused with 422 state_required, and a state where SecondAppraisal can't act as the appraiser with 422 state_blocked.
memberPlanMemberInputPlanMemberInput or nullborrower_contactOptional
vehiclePlanVehicleInputPlanVehicleInput or nullborrower_personalOptional
consent_modestring or nullinstitution_confidentialOptionalCase-insensitive.One of: invitation, warm_handoff
cancelfalse or nullpublicOptionalfalse or null is the same as leaving cancel out. To cancel, send { "cancel": true } on its own.

PlanLossNoticeInput

Fields (4)
FieldTypeData classRequiredDescription
vinstringborrower_personalRequiredThe member vehicle's VIN, case-insensitive.
date_of_lossstring (date) or nullborrower_personalOptionalYYYY-MM-DD; at most a day ahead (a timezone ahead of UTC). Null, or leaving it out, records no date. Spaces around it are ignored.
claim_numberstring or nullborrower_personalOptional
carrierstring or nullborrower_personalOptionalThe member's insurer.

PlanMemberInput

Fields (4)
FieldTypeData classRequiredDescription
first_namestring or nullborrower_personalOptional
last_namestring or nullborrower_personalOptional
emailstring or nullborrower_contactOptionalAn email address of at most 254 characters, with no spaces, a single @, and a domain with a dot that has text on each side (example.com). Spaces around it are ignored. Stored in lowercase.
phonestring or nullborrower_contactOptional

PlanRosterSessionChunkInput

Fields (2)
FieldTypeData classRequiredDescription
chunk_indexintegerpublicRequiredThe chunk's number: 0 for the first, then 1, 2 and so on, at most 1999. Re-sending a chunk with its number and the same body is a replay; another body under a number already received, or a number past the next one, is a 409 roster_chunk_conflict.
enrollmentsPlanEnrollmentInputarray of PlanEnrollmentInputborrower_contactRequired1 to 500 vehicles of your roster, in the shape roster sync takes. Any malformed row refuses the whole chunk (400 with rejected) and stores none of it.

PlanRosterSessionCommitInput

Fields (1)
FieldTypeData classRequiredDescription
confirm_cancel_countintegerpublicOptionalOnly when a roster would cancel more than 25 of your live enrollments in this key's mode and more than 20% of them: the exact number it cancels, the cancel_count the 409 roster_cancel_unconfirmed reported. Any other number is refused the same way, and nothing is changed.

PlanRosterSyncInput

Fields (2)
FieldTypeData classRequiredDescription
enrollmentsPlanEnrollmentInputarray of PlanEnrollmentInputborrower_contactRequiredYour full roster, at most 500 vehicles. An empty array cancels every live enrollment.
confirm_cancel_countintegerpublicOptionalOnly when a roster would cancel more than 25 of your live enrollments in this key's mode and more than 20% of them: the exact number it cancels, the cancel_count the 409 roster_cancel_unconfirmed reported. Any other number is refused the same way, and nothing is changed.

PlanVehicleInput

Fields (4)
FieldTypeData classRequiredDescription
yearinteger or nullborrower_personalOptional
makestring or nullborrower_personalOptional
modelstring or nullborrower_personalOptional
trimstring or nullborrower_personalOptional

ReferralBulkInput

Fields (1)
FieldTypeData classRequiredDescription
referralsReferralBulkRowarray of ReferralBulkRowborrower_contactRequired1 to 500 referrals. Each row is validated and created on its own.

ReferralBulkRow

Fields (29)
FieldTypeData classRequiredDescription
borrower_first_namestringborrower_personalRequired
borrower_last_namestringborrower_personalRequired
borrower_emailstring or nullborrower_contactOptionalAn email address of at most 254 characters, with no spaces, a single @, and a domain with a dot that has text before it and at least two characters after it (example.com). Spaces around it are ignored. Stored in lowercase. At least one of borrower_email and borrower_phone is required. An invitation referral (the default consent_mode) needs an email while text invitations are off for its loss state: one without it is refused with 422 email_required_sms_disabled. A warm-handoff referral may be created phone-only, but its attestation under script 1.7 needs this address: the script's last question asks the borrower to confirm the address SecondAppraisal will email.
borrower_phonestring or nullborrower_contactOptionalA 10-digit US number; punctuation and a leading 1 are tolerated, and it is stored as 10 digits. An attestation under script 1.6, which asked about this number, still needs it.
consent_modestring or nullinstitution_confidentialOptionalinvitation (the default): we send the borrower a co-branded activation link. warm_handoff: your staff delivered the disclosure script and the borrower agreed to be contacted; send the attestation as disclosure. Case-insensitive.One of: invitation, warm_handoff
vinstring or nullborrower_personalOptional11 to 17 letters and digits, never I, O or Q. Case-insensitive; stored in uppercase.
vehicle_yearinteger or nullborrower_personalOptionalA model year from 1950 to two years after the current year.
vehicle_makestring or nullborrower_personalOptional
vehicle_modelstring or nullborrower_personalOptional
primary_carrierstring or nullborrower_personalOptionalThe borrower's insurer.
claim_numberstring or nullborrower_personalOptionalThe borrower's claim number with that insurer.
loss_statestring or nullborrower_personalOptionalThe two-letter state of the loss, case-insensitive (tx is TX).
garaged_statestring or nullborrower_personalOptionalThe two-letter USPS code of the state where the vehicle is garaged (a state or DC), case-insensitive. We judge this state when it is sent, else loss_state: a referral for a state we don't serve may be refused with 422 state_not_served.
date_of_lossstring (date) or nullborrower_personalOptionalThe date of the loss; at most a day ahead (a timezone ahead of UTC). Spaces around it are ignored.
initial_offer_centsinteger or nullborrower_personalOptionalThe insurer's initial ACV offer, in cents.
loan_payoff_centsinteger or nullborrower_personalOptionalThe outstanding loan payoff, in cents. It drives your exposure figures and stays editable after activation.
deductible_centsinteger or nullborrower_personalOptionalDeprecated, and ignored from version 1.4.0: we no longer ask for the borrower's deductible. A value sent is accepted and discarded; it isn't stored and doesn't change a deductible on file. Leave it out: a later version removes it.Deprecated.
deficiency_coveragestring or nullborrower_personalOptionalWho covers the borrower's deficiency, what the loan payoff leaves after the insurer pays: none; this_institution, your own GAP; other, someone else's GAP; or unknown. Omit it, or send null, if you didn't ask. Case-insensitive. When your own GAP covers the borrower (deficiency_coverage: this_institution), you pay our whole consultation fee for that referral, whatever your program's mode. We charge it once, when the amount of loss is determined (an award or a confirmed settlement), and the borrower pays none of it. Other costs, such as photo dispatch or a share of an umpire's fee, follow your program's rules for them.One of: none, this_institution, other, unknown
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
programReferralProgramInputReferralProgramInput or nullinstitution_confidentialOptionalPer-referral program terms. Omit, or send null, to use your program defaults.
disclosureDisclosureInputDisclosureInput or nullinstitution_confidentialOptionalWarm-handoff attestation, only with consent_mode: "warm_handoff". With it the referral is created ready for our outreach; without it the referral waits for your attestation.
claim_againststring or nullborrower_personalOptionalWhose insurer is handling the claim: own (the borrower's own insurer), other_driver (another driver's insurer), or unknown. Case-insensitive. Leave it out when you don't know.One of: own, other_driver, unknown
cause_of_lossstring or nullborrower_personalOptionalThe cause of the loss, if you know it. weather is hail, wind or a storm; a flood is flood. Case-insensitive.One of: collision, theft, fire, flood, weather, vandalism, animal, other
triggerstring or nullinstitution_confidentialOptionalWhat led you to refer: payoff_request (an insurer asked you for the loan payoff), loss_notice (a notice of loss), gap_claim (the borrower filed a GAP claim), borrower_request (the borrower asked), or other. Case-insensitive.One of: payoff_request, loss_notice, gap_claim, borrower_request, other
payoff_requested_atstring or nullinstitution_confidentialOptionalWhen the insurer asked you for the loan payoff: a date (2026-06-16, read as midnight UTC) or an ISO 8601 timestamp with its UTC offset (2026-06-16T15:04:00-06:00). At most a day ahead.
payoff_request_channelstring or nullinstitution_confidentialOptionalHow that payoff request reached you. web_portal is your own online portal; electronic_service is a third-party payoff or letter-of-guarantee service the insurer used. Case-insensitive.One of: phone, fax, email, mail, web_portal, electronic_service, other
client_namestring or nullinstitution_confidentialOptionalFor a GAP administrator: the lender or dealer whose borrower this is. At most 120 characters.
requirement_basisRequirementBasisInputRequirementBasisInput or nullborrower_personalOptionalSend it only when the borrower's contract lets you require the review. It is recorded and checked against your program's bases; messages to the borrower still ask rather than require.
idempotency_keystring or nullinstitution_confidentialOptionalMakes this row safe to retry: a row with a key already used by your institution, in this key's mode, returns the original referral with idempotent_replay: true. A string of at most 255 characters; a longer key is refused, never cut. A live key can't send one that starts with test: (the row fails with idempotency_key_mode_conflict).

ReferralCancelInput

Fields (1)
FieldTypeData classRequiredDescription
action"cancel"publicRequiredCancels the referral. Allowed only before the borrower activates (409 after).

ReferralCreateInput

Fields (28)
FieldTypeData classRequiredDescription
borrower_first_namestringborrower_personalRequired
borrower_last_namestringborrower_personalRequired
borrower_emailstring or nullborrower_contactOptionalAn email address of at most 254 characters, with no spaces, a single @, and a domain with a dot that has text before it and at least two characters after it (example.com). Spaces around it are ignored. Stored in lowercase. At least one of borrower_email and borrower_phone is required. An invitation referral (the default consent_mode) needs an email while text invitations are off for its loss state: one without it is refused with 422 email_required_sms_disabled. A warm-handoff referral may be created phone-only, but its attestation under script 1.7 needs this address: the script's last question asks the borrower to confirm the address SecondAppraisal will email.
borrower_phonestring or nullborrower_contactOptionalA 10-digit US number; punctuation and a leading 1 are tolerated, and it is stored as 10 digits. An attestation under script 1.6, which asked about this number, still needs it.
consent_modestring or nullinstitution_confidentialOptionalinvitation (the default): we send the borrower a co-branded activation link. warm_handoff: your staff delivered the disclosure script and the borrower agreed to be contacted; send the attestation as disclosure. Case-insensitive.One of: invitation, warm_handoff
vinstring or nullborrower_personalOptional11 to 17 letters and digits, never I, O or Q. Case-insensitive; stored in uppercase.
vehicle_yearinteger or nullborrower_personalOptionalA model year from 1950 to two years after the current year.
vehicle_makestring or nullborrower_personalOptional
vehicle_modelstring or nullborrower_personalOptional
primary_carrierstring or nullborrower_personalOptionalThe borrower's insurer.
claim_numberstring or nullborrower_personalOptionalThe borrower's claim number with that insurer.
loss_statestring or nullborrower_personalOptionalThe two-letter state of the loss, case-insensitive (tx is TX).
garaged_statestring or nullborrower_personalOptionalThe two-letter USPS code of the state where the vehicle is garaged (a state or DC), case-insensitive. We judge this state when it is sent, else loss_state: a referral for a state we don't serve may be refused with 422 state_not_served.
date_of_lossstring (date) or nullborrower_personalOptionalThe date of the loss; at most a day ahead (a timezone ahead of UTC). Spaces around it are ignored.
initial_offer_centsinteger or nullborrower_personalOptionalThe insurer's initial ACV offer, in cents.
loan_payoff_centsinteger or nullborrower_personalOptionalThe outstanding loan payoff, in cents. It drives your exposure figures and stays editable after activation.
deductible_centsinteger or nullborrower_personalOptionalDeprecated, and ignored from version 1.4.0: we no longer ask for the borrower's deductible. A value sent is accepted and discarded; it isn't stored and doesn't change a deductible on file. Leave it out: a later version removes it.Deprecated.
deficiency_coveragestring or nullborrower_personalOptionalWho covers the borrower's deficiency, what the loan payoff leaves after the insurer pays: none; this_institution, your own GAP; other, someone else's GAP; or unknown. Omit it, or send null, if you didn't ask. Case-insensitive. When your own GAP covers the borrower (deficiency_coverage: this_institution), you pay our whole consultation fee for that referral, whatever your program's mode. We charge it once, when the amount of loss is determined (an award or a confirmed settlement), and the borrower pays none of it. Other costs, such as photo dispatch or a share of an umpire's fee, follow your program's rules for them.One of: none, this_institution, other, unknown
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
programReferralProgramInputReferralProgramInput or nullinstitution_confidentialOptionalPer-referral program terms. Omit, or send null, to use your program defaults.
disclosureDisclosureInputDisclosureInput or nullinstitution_confidentialOptionalWarm-handoff attestation, only with consent_mode: "warm_handoff". With it the referral is created ready for our outreach; without it the referral waits for your attestation.
claim_againststring or nullborrower_personalOptionalWhose insurer is handling the claim: own (the borrower's own insurer), other_driver (another driver's insurer), or unknown. Case-insensitive. Leave it out when you don't know.One of: own, other_driver, unknown
cause_of_lossstring or nullborrower_personalOptionalThe cause of the loss, if you know it. weather is hail, wind or a storm; a flood is flood. Case-insensitive.One of: collision, theft, fire, flood, weather, vandalism, animal, other
triggerstring or nullinstitution_confidentialOptionalWhat led you to refer: payoff_request (an insurer asked you for the loan payoff), loss_notice (a notice of loss), gap_claim (the borrower filed a GAP claim), borrower_request (the borrower asked), or other. Case-insensitive.One of: payoff_request, loss_notice, gap_claim, borrower_request, other
payoff_requested_atstring or nullinstitution_confidentialOptionalWhen the insurer asked you for the loan payoff: a date (2026-06-16, read as midnight UTC) or an ISO 8601 timestamp with its UTC offset (2026-06-16T15:04:00-06:00). At most a day ahead.
payoff_request_channelstring or nullinstitution_confidentialOptionalHow that payoff request reached you. web_portal is your own online portal; electronic_service is a third-party payoff or letter-of-guarantee service the insurer used. Case-insensitive.One of: phone, fax, email, mail, web_portal, electronic_service, other
client_namestring or nullinstitution_confidentialOptionalFor a GAP administrator: the lender or dealer whose borrower this is. At most 120 characters.
requirement_basisRequirementBasisInputRequirementBasisInput or nullborrower_personalOptionalSend it only when the borrower's contract lets you require the review. It is recorded and checked against your program's bases; messages to the borrower still ask rather than require.

ReferralPatchInput

One of ReferralCancelInput, ReferralUpdateInput.

ReferralProgramEditInput

Fields (3)
FieldTypeData classRequiredDescription
modestringinstitution_confidentialOptionalWho pays for the appraisal. Case-insensitive. Matched as sent: a value with spaces around it is refused.One of: provider_paid, split_pay, customer_paid
subsidy_typestring or nullinstitution_confidentialOptionalSplit-pay only: how subsidy_value reads. Case-insensitive. Matched as sent: a value with spaces around it is refused.One of: percent, fixed_cents
subsidy_valueinteger or nullinstitution_confidentialOptionalSplit-pay only: the percent of the fee you cover (1 to 100), or the cents you cover, per subsidy_type, at most 2,147,483,647. A split-pay referral needs both subsidy_type and a positive subsidy_value.

ReferralProgramInput

Fields (3)
FieldTypeData classRequiredDescription
modestringinstitution_confidentialOptionalWho pays for the appraisal. Case-insensitive.One of: provider_paid, split_pay, customer_paid
subsidy_typestring or nullinstitution_confidentialOptionalSplit-pay only: how subsidy_value reads. Case-insensitive.One of: percent, fixed_cents
subsidy_valueinteger or nullinstitution_confidentialOptionalSplit-pay only: the percent of the fee you cover (1 to 100), or the cents you cover, per subsidy_type, at most 2,147,483,647. A split-pay referral needs both subsidy_type and a positive subsidy_value.

ReferralSimulateInput

Fields (4)
FieldTypeData classRequiredDescription
tostringpublicRequiredThe status to move the sandbox referral to; a step off its lifecycle is a 409 invalid_transition.One of: invited, activated, in_progress, settled, closed, declined, unreachable, expired
outcomeobjectborrower_personalOptionalWith to: "settled" only, and required there: the figures to settle with. The uplift and the exposure figures are computed from them as for a live settlement.
outcome.appraised_value_centsintegerborrower_personalOptional
outcome.final_settlement_centsintegerborrower_personalRequired

ReferralUpdateInput

Fields (25)
FieldTypeData classRequiredDescription
loan_payoff_centsinteger or nullborrower_personalOptionalEditable until we clear the referral's borrower details under the Data Handling and Retention Schedule (409 referral_details_cleared after). Null or "" clears it.
deductible_centsinteger or nullborrower_personalOptionalDeprecated, and ignored from version 1.4.0: we no longer ask for the borrower's deductible. A value sent is accepted and discarded; it isn't stored and doesn't change a deductible on file. Leave it out: a later version removes it.Deprecated.
borrower_first_namestringborrower_personalOptionalAt most 80 characters, as on create. It can't be cleared.
borrower_last_namestringborrower_personalOptionalAt most 80 characters, as on create. It can't be cleared.
borrower_emailstring or nullborrower_contactOptionalAn email address of at most 254 characters, with no spaces, a single @, and a domain with a dot that has text before it and at least two characters after it (example.com). Spaces around it are ignored. Stored in lowercase. At least one of borrower_email and borrower_phone is required. An invitation referral (the default consent_mode) needs an email while text invitations are off for its loss state: one without it is refused with 422 email_required_sms_disabled. A warm-handoff referral may be created phone-only, but its attestation under script 1.7 needs this address: the script's last question asks the borrower to confirm the address SecondAppraisal will email.
borrower_phonestring or nullborrower_contactOptionalA 10-digit US number; punctuation and a leading 1 are tolerated, and it is stored as 10 digits. An attestation under script 1.6, which asked about this number, still needs it.
vinstring or nullborrower_personalOptional11 to 17 letters and digits, never I, O or Q. Case-insensitive; stored in uppercase.
vehicle_yearinteger or nullborrower_personalOptionalA model year from 1950 to two years after the current year.
vehicle_makestring or nullborrower_personalOptional
vehicle_modelstring or nullborrower_personalOptional
primary_carrierstring or nullborrower_personalOptional
claim_numberstring or nullborrower_personalOptional
loss_statestring or nullborrower_personalOptionalThe two-letter state of the loss, case-insensitive (tx is TX).
garaged_statestring or nullborrower_personalOptionalThe two-letter USPS code of the state where the vehicle is garaged (a state or DC), case-insensitive. We judge this state when it is sent, else loss_state: a referral for a state we don't serve may be refused with 422 state_not_served. Editable until the borrower activates; null or "" clears it.
external_refstring or nullinstitution_confidentialOptionalYour own opaque reference, such as a case or file ID from your system; echoed in responses and webhooks. Never a loan, account or policy number (a credit union member number is an account number).
initial_offer_centsinteger or nullborrower_personalOptionalThe insurer's initial ACV offer, in cents.
programReferralProgramEditInputReferralProgramEditInput or nullinstitution_confidentialOptionalNew program terms. Locked once the borrower activates under them (409 economics_locked); switching into provider-paid or split-pay needs a billing method (403 billing_required). Null is the same as leaving program out: the terms stay as they are.
claim_againststring or nullborrower_personalOptionalWhose insurer is handling the claim: own (the borrower's own insurer), other_driver (another driver's insurer), or unknown. Case-insensitive. Leave it out when you don't know. Editable until the borrower activates; null or "" clears it.One of: own, other_driver, unknown
cause_of_lossstring or nullborrower_personalOptionalThe cause of the loss, if you know it. weather is hail, wind or a storm; a flood is flood. Case-insensitive. Editable until the borrower activates; null or "" clears it.One of: collision, theft, fire, flood, weather, vandalism, animal, other
triggerstring or nullinstitution_confidentialOptionalWhat led you to refer: payoff_request (an insurer asked you for the loan payoff), loss_notice (a notice of loss), gap_claim (the borrower filed a GAP claim), borrower_request (the borrower asked), or other. Case-insensitive. Editable until the borrower activates; null or "" clears it.One of: payoff_request, loss_notice, gap_claim, borrower_request, other
payoff_requested_atstring or nullinstitution_confidentialOptionalWhen the insurer asked you for the loan payoff: a date (2026-06-16, read as midnight UTC) or an ISO 8601 timestamp with its UTC offset (2026-06-16T15:04:00-06:00). At most a day ahead. Editable until the borrower activates; null or "" clears it.
payoff_request_channelstring or nullinstitution_confidentialOptionalHow that payoff request reached you. web_portal is your own online portal; electronic_service is a third-party payoff or letter-of-guarantee service the insurer used. Case-insensitive. Editable until the borrower activates; null or "" clears it.One of: phone, fax, email, mail, web_portal, electronic_service, other
client_namestring or nullinstitution_confidentialOptionalFor a GAP administrator: the lender or dealer whose borrower this is. At most 120 characters. Editable until the borrower activates; null or "" clears it.
requirement_basisRequirementBasisInputRequirementBasisInput or nullborrower_personalOptionalSend it only when the borrower's contract lets you require the review. It is recorded and checked against your program's bases; messages to the borrower still ask rather than require. Editable until the borrower activates; null or "" clears it.
actionnullpublicOptionalNull is the same as leaving action out. To cancel, send { "action": "cancel" } on its own.

RequirementBasisInput

Fields (10)
FieldTypeData classRequiredDescription
basis_kindstringinstitution_confidentialRequiredcontract: a provision in the borrower's own contract. carrier: a GAP insurance policy's form, filed in the state, which needs filed_form_ref. Case-insensitive.One of: contract, carrier
contract_form_idstringinstitution_confidentialRequiredThe contract form's identifier, as the form names itself. 1 to 64 characters: letters, digits, spaces and . , _ - / ( ) # &. Spaces around it are ignored.
contract_form_versionstringinstitution_confidentialRequiredThe form's version or edition: 1 to 64 characters, in the same characters as contract_form_id. Spaces around it are ignored.
contract_datestring (date)borrower_personalRequiredThe date of the borrower's contract (YYYY-MM-DD); at most a day ahead. Spaces around it are ignored.
product_typestringinstitution_confidentialRequiredThe product the contract is: a GAP waiver or GAP insurance. Case-insensitive. A loan without GAP can't be a requirement basis: loan_without_gap, which versions before 1.4.0 listed, is refused, whichever version a client was built on.One of: gap_waiver, gap_insurance
statestringborrower_personalRequiredThe two-letter USPS code of the state whose law the contract follows (a state or DC), case-insensitive.
a2_acknowledgedbooleanborrower_personalRequiredWhether the borrower acknowledged the signing disclosure in its own box (the program paper's Appendix A-2).
adopts_x5booleaninstitution_confidentialRequiredWhether the contract adopts X.5 (no delay; no charges).
adopts_x6booleaninstitution_confidentialRequiredWhether the contract adopts X.6 (no worse off).
filed_form_refstring or nullinstitution_confidentialOptionalA carrier basis's filed form: its filing reference, as an identifier of at most 64 letters, digits, dots, hyphens and underscores. Never a URL. Spaces around it are ignored.

ReviewStatusLookupInput

Fields (3)
FieldTypeData classRequiredDescription
vinstring or nullborrower_personalOptionalThe vehicle's VIN: 11 to 17 letters and digits, never I, O or Q. Case-insensitive.
claim_numberstring or nullborrower_personalOptionalThe borrower's claim number with their insurer, as you sent it on the referral.
external_refstring or nullinstitution_confidentialOptionalYour own reference for the referral, as you sent it.

Fields you receive

The responses, the members a refusal may add, and the webhook payloads.

AnalyticsReport

Fields (48)
FieldTypeData classNotes
object"gap.analytics"public
filtersobject—
filters.fromstring (date-time) or nullpublic
filters.tostring (date-time) or nullpublic
funnelobject—
funnel.submittedintegerinstitution_confidential
funnel.awaiting_activationintegerinstitution_confidential
funnel.activeintegerinstitution_confidential
funnel.settledintegerinstitution_confidential
funnel.declinedintegerinstitution_confidential
funnel.unreachableintegerinstitution_confidential
funnel.expiredintegerinstitution_confidential
funnel.cancelledintegerinstitution_confidential
funnel.reporting_withdrawnintegerinstitution_confidential
funnel.activation_ratenumber or nullinstitution_confidential
outcomesobject—
outcomes.settled_referralsintegerinstitution_confidential
outcomes.total_uplift_centsintegerborrower_personal
outcomes.avg_uplift_centsinteger or nullborrower_personal
outcomes.total_exposure_before_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
outcomes.total_exposure_after_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
outcomes.total_exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
outcomes.avg_exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
spendobject—
spend.fees_paid_centsintegerinstitution_confidential
spend.fees_pending_centsintegerinstitution_confidential
spend.roi_multiplenumber or nullborrower_personalNull for a key without referrals.contact:read.
spend.net_savings_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
spend.fees_on_settled_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
by_marketarray of object—
by_market[].keystringinstitution_confidential
by_market[].referralsintegerinstitution_confidential
by_market[].settledintegerinstitution_confidential
by_market[].uplift_centsintegerborrower_personal
by_market[].exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
by_carrierarray of object—
by_carrier[].keystringinstitution_confidential
by_carrier[].referralsintegerinstitution_confidential
by_carrier[].settledintegerinstitution_confidential
by_carrier[].uplift_centsintegerborrower_personal
by_carrier[].exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
time_seriesarray of object—
time_series[].monthstringpublic
time_series[].submittedintegerinstitution_confidential
time_series[].activatedintegerinstitution_confidential
time_series[].settledintegerinstitution_confidential
time_series[].uplift_centsintegerborrower_personal
time_series[].exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.

ApiKeyIntrospection

Fields (12)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.api_key"public
prefixstringinstitution_confidential
modestringpublic
formatstringpublic
auth_methodstringpublic
permissionsarray of stringinstitution_confidential
expires_atstring (date-time) or nullinstitution_confidential
institutionobject—
institution.idstringinstitution_confidential
institution.statusstringpublic
allowed_cidr_countintegerinstitution_confidential

AuditLogEntry

Fields (15)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.audit_entry"public
occurred_atstring (date-time)institution_confidential
channelstringpublic
outcomestringpublic
actorobject—
actor.typestringpublic
actor.labelstringinstitution_confidential
actor.api_key_prefixstring or nullinstitution_confidential
operationstringinstitution_confidential
resource_typestring or nullinstitution_confidential
resource_idstring or nullinstitution_confidential
statusinteger or nullpublic
ipstring or nullinstitution_confidential
occurrencesintegerpublic

AuditLogPage

Fields (4)
FieldTypeData classNotes
object"list"public
dataAuditLogEntryarray of AuditLogEntry—
has_morebooleanpublic
next_cursorstring or nullinstitution_confidential

BulkRowAcknowledgementError

Fields (6)
FieldTypeData classNotes
fieldstringpublic
messagestringpublic
codestringpublic
statestringborrower_personal
basisstringpublic
launch_statesarray of stringinstitution_confidential

BulkRowError

Fields (7)
FieldTypeData classNotes
fieldstringpublic
messagestringpublic
codestringpublic
existing_referral_idstringinstitution_confidential
statestringborrower_personal
basisstringpublic
launch_statesarray of stringinstitution_confidential

CredentialActivation

Fields (5)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.signed_credential"public
modestringpublic
algstringpublic
activated_atstring (date-time)institution_confidential

DisclosurePreview

Fields (5)
FieldTypeData classNotes
object"gap.disclosure_preview"public
script_versionstringpublic
script_textstringinstitution_confidential
required_pointsarray of stringpublic
attestation_labelstringpublic

EventFeedPage

Fields (4)
FieldTypeData classNotes
object"list"public
dataThinEventarray of ThinEvent—
has_morebooleanpublic
next_cursorstringinstitution_confidential

FieldError

Fields (4)
FieldTypeData classNotes
fieldstringpublic
codestringpublic
messagestringpublic
pointerstringpublic

OpenApiDocument

Fields (4)
FieldTypeData classNotes
openapistringpublic
infoobject—
info.titlestringpublic
info.versionstringpublic

PlanEnrollment

Fields (25)
FieldTypeData classNotes
idstringinstitution_confidential
vinstringborrower_personal
statusstringpublic
billing_modestringinstitution_confidential
external_refstring or nullinstitution_confidential
vehicleobject—
vehicle.yearinteger or nullborrower_personal
vehicle.makestring or nullborrower_personal
vehicle.modelstring or nullborrower_personal
vehicle.garaged_statestring or nullborrower_personal
memberobject—
member.first_namestring or nullborrower_personal
member.last_namestring or nullborrower_personal
member.emailstring or nullborrower_contactNull for a key without referrals.contact:read.
member_price_centsintegerinstitution_confidential
wholesale_centsinteger or nullinstitution_confidential
started_atstring (date-time) or nullinstitution_confidential
eligible_fromstring (date-time) or nullinstitution_confidential
current_period_endstring (date-time) or nullinstitution_confidential
cancel_at_period_endbooleaninstitution_confidential
cancelled_atstring (date-time) or nullinstitution_confidential
activation_urlstring or nullcredentialNull for a key without members:activation-link.
activation_expires_atstring (date-time) or nullinstitution_confidential
testbooleanpublic
created_atstring (date-time)institution_confidential

PlanEnrollmentBulkResult

Fields (16)
FieldTypeData classNotes
receivedintegerpublic
createdintegerpublic
resultsarray of object—
results[].indexintegerpublic
results[].vinstringborrower_personal
results[].okbooleanpublic
results[].idstringinstitution_confidential
results[].statusstringpublic
results[].idempotent_replaybooleanpublic
results[].codestringpublic
results[].messagestringpublic
results[].field_errorsarray of object—
results[].field_errors[].fieldstringpublic
results[].field_errors[].messagestringpublic
results[].field_errors[].codestringpublic
results[].field_errors[].pointerstringpublic

PlanEnrollmentCreateResult

Every field of PlanEnrollment, and:

Fields (1)
FieldTypeData classNotes
idempotent_replaybooleanpublic

PlanEnrollmentList

Fields (2)
FieldTypeData classNotes
dataPlanEnrollmentarray of PlanEnrollment—
next_cursorstring or nullinstitution_confidential

PlanEnrollmentSwapResult

Every field of PlanEnrollment, and:

Fields (1)
FieldTypeData classNotes
swapped_fromstringinstitution_confidential

PlanLossNotice

Fields (10)
FieldTypeData classNotes
idstringinstitution_confidential
enrollment_idstringinstitution_confidential
vinstringborrower_personal
date_of_lossstring (date) or nullborrower_personal
reported_atstring (date-time)institution_confidential
sourcestringpublic
eligibility_statusstringpublic
denied_reasonstring or nullpublic
denied_messagestring or nullpublic
reported_again_atarray of string (date-time)institution_confidential

PlanLossNoticeList

Fields (2)
FieldTypeData classNotes
dataPlanLossNoticearray of PlanLossNotice—
next_cursorstring or nullinstitution_confidential

PlanLossNoticeResult

Fields (4)
FieldTypeData classNotes
enrollment_idstringinstitution_confidential
statusstringpublic
eligible_fromstring (date-time) or nullinstitution_confidential
recordedtruepublic

PlanRedemption

Fields (14)
FieldTypeData classNotes
idstringinstitution_confidential
enrollment_idstringinstitution_confidential
external_refstring or nullinstitution_confidential
referral_idstring or nullinstitution_confidential
vinstringborrower_personal
statusstringpublic
date_of_lossstring (date-time) or nullborrower_personal
value_centsintegerinstitution_confidential
initial_offer_centsinteger or nullborrower_personal
final_settlement_centsinteger or nullborrower_personal
uplift_centsinteger or nullborrower_personal
settled_atstring (date-time) or nullinstitution_confidential
created_atstring (date-time)institution_confidential
reporting_withdrawn_atstring (date-time) or nullinstitution_confidential

PlanRedemptionList

Fields (2)
FieldTypeData classNotes
dataPlanRedemptionarray of PlanRedemption—
next_cursorstring or nullinstitution_confidential

PlanRosterRejection

Fields (7)
FieldTypeData classNotes
indexintegerpublic
vinstringborrower_personal
field_errorsarray of object—
field_errors[].fieldstringpublic
field_errors[].messagestringpublic
field_errors[].codestringpublic
field_errors[].pointerstringpublic

PlanRosterSession

Fields (14)
FieldTypeData classNotes
idstringinstitution_confidential
statusstringpublic
testbooleanpublic
expires_atstring (date-time)public
created_atstring (date-time)public
receivedintegerpublic
chunksintegerpublic
committed_atstring (date-time) or nullpublic
resultobject or null—
result.receivedintegerpublic
result.enrolledintegerpublic
result.already_liveintegerpublic
result.refusedintegerpublic
result.cancelledintegerpublic

PlanRosterSessionChunkResult

Fields (5)
FieldTypeData classNotes
session_idstringinstitution_confidential
chunk_indexintegerpublic
rowsintegerpublic
receivedintegerpublic
replayedbooleanpublic

PlanRosterSessionCommitResult

Fields (9)
FieldTypeData classNotes
sessionPlanRosterSession—
receivedintegerpublic
enrolledarray of stringborrower_personal
already_livearray of stringborrower_personal
refusedarray of object—
refused[].vinstringborrower_personal
refused[].codestringpublic
refused[].messagestringpublic
cancelledarray of stringborrower_personal

PlanRosterSyncResult

Fields (8)
FieldTypeData classNotes
receivedintegerpublic
enrolledarray of stringborrower_personal
already_livearray of stringborrower_personal
refusedarray of object—
refused[].vinstringborrower_personal
refused[].codestringpublic
refused[].messagestringpublic
cancelledarray of stringborrower_personal

PlanStatement

Fields (19)
FieldTypeData classNotes
idstringinstitution_confidential
period_startstring (date)institution_confidential
period_endstring (date)institution_confidential
statusstringpublic
vehicle_monthsnumberinstitution_confidential
active_vehicles_endintegerinstitution_confidential
redemption_countintegerinstitution_confidential
wholesale_centsintegerinstitution_confidential
collected_centsintegerinstitution_confidential
rev_share_centsintegerinstitution_confidential
subsidy_centsintegerinstitution_confidential
net_centsintegerinstitution_confidential
directionstringinstitution_confidential
charge_idstring or nullinstitution_confidential
transfer_idstring or nullinstitution_confidential
linesarray of object or nullinstitution_confidential
line_countintegerinstitution_confidential
issued_atstring (date-time)institution_confidential
settled_atstring (date-time) or nullinstitution_confidential

PlanStatementLine

Fields (16)
FieldTypeData classNotes
enrollment_idstringinstitution_confidential
vinstring or nullborrower_personal
external_refstring or nullinstitution_confidential
billing_modestringinstitution_confidential
tlas_modestring or nullinstitution_confidential
line_kindstring or nullinstitution_confidential
days_livenumber or nullinstitution_confidential
vehicle_monthsnumberinstitution_confidential
rate_centsintegerinstitution_confidential
member_price_centsintegerinstitution_confidential
amount_centsinteger or nullinstitution_confidential
collected_centsinteger or nullinstitution_confidential
rev_share_centsinteger or nullinstitution_confidential
subsidy_centsinteger or nullinstitution_confidential
rev_share_held_centsinteger or nullinstitution_confidential
rev_share_not_earned_centsinteger or nullinstitution_confidential

PlanStatementLineList

Fields (3)
FieldTypeData classNotes
dataPlanStatementLinearray of PlanStatementLine—
has_morebooleanpublic
next_cursorstring or nullinstitution_confidential

PlanStatementList

Fields (1)
FieldTypeData classNotes
dataPlanStatementarray of PlanStatement—

Problem

Fields (9)
FieldTypeData classNotes
errorstringpublic
codestringpublic
typestringpublic
titlestringpublic
statusintegerpublic
detailstringpublic
instancestringpublic
request_idstringpublic
field_errorsFieldErrorarray of FieldErrorpublic

ProgramReport

Fields (2)
FieldTypeData classNotes
object"gap.program_report"public
quartersProgramReportQuarterarray of ProgramReportQuarter—

ProgramReportQuarter

Fields (27)
FieldTypeData classNotes
quarterstringpublic
fromstring (date-time)public
tostring (date-time)public
referralsintegerinstitution_confidential
reachedintegerinstitution_confidential
contactedintegerinstitution_confidential
median_hours_to_first_contactnumber or nullinstitution_confidential
activatedintegerinstitution_confidential
decidedintegerinstitution_confidential
activation_ratenumber or nullinstitution_confidential
median_days_to_activationnumber or nullinstitution_confidential
reviews_completedinteger or nullinstitution_confidential
verdicts_deliveredinteger or nullinstitution_confidential
undervaluation_foundinteger or nullinstitution_confidential
appraisals_invokedinteger or nullinstitution_confidential
settledintegerinstitution_confidential
settled_datedintegerinstitution_confidential
median_days_to_settlementnumber or nullinstitution_confidential
median_days_notice_to_settlementnumber or nullinstitution_confidential
uplift_centsintegerborrower_personal
settled_with_upliftintegerinstitution_confidential
average_uplift_centsinteger or nullborrower_personal
exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
reporting_withdrawnintegerinstitution_confidential
releasedintegerinstitution_confidential
settled_before_contactintegerinstitution_confidential
membership_charges_centsintegerinstitution_confidential

Referral

Fields (47)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.referral"public
statusstringpublic
status_labelstringpublic
status_tonestringpublic
status_notestring or nullinstitution_confidential
external_refstring or nullinstitution_confidential
borrowerobject—
borrower.first_namestringborrower_personal
borrower.last_namestringborrower_personal
borrower.emailstring or nullborrower_contactNull for a key without referrals.contact:read.
borrower.phonestring or nullborrower_contactNull for a key without referrals.contact:read.
vehicleobject—
vehicle.vinstring or nullborrower_personal
vehicle.yearinteger or nullborrower_personal
vehicle.makestring or nullborrower_personal
vehicle.modelstring or nullborrower_personal
claimobject—
claim.carrierstring or nullborrower_personal
claim.claim_numberstring or nullborrower_personal
claim.loss_statestring or nullborrower_personal
claim.date_of_lossstring (date-time) or nullborrower_personal
claim.initial_offer_centsinteger or nullborrower_personal
liabilityobject—
liability.loan_payoff_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
liability.deductible_centsinteger or nullborrower_personalDeprecated.
deficiency_coveragestring or nullborrower_personal
programobject—
program.modestringinstitution_confidential
program.subsidy_typestring or nullinstitution_confidential
program.subsidy_valueinteger or nullinstitution_confidential
program.price_centsintegerinstitution_confidential
program.lockedboolean or nullinstitution_confidential
consentobject—
consent.modestringinstitution_confidential
consent.disclosure_confirmed_atstring (date-time) or nullinstitution_confidential
consent.disclosure_channelstring or nullinstitution_confidential
consent.disclosure_attestor_namestring or nullinstitution_confidentialNull for a key without referrals.contact:read.
submitted_viastringpublic
created_atstring (date-time)institution_confidential
invited_atstring (date-time) or nullinstitution_confidential
invitation_expires_atstring (date-time) or nullinstitution_confidential
activated_atstring (date-time) or nullinstitution_confidential
appointed_atstring (date-time) or nullinstitution_confidential
settled_atstring (date-time) or nullinstitution_confidential
closed_atstring (date-time) or nullinstitution_confidential
reporting_withdrawn_atstring (date-time) or nullinstitution_confidential

ReferralAcknowledgement

Fields (3)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.referral"public
statusstringpublic

ReferralBulkAcknowledgement

Fields (9)
FieldTypeData classNotes
object"bulk_result"public
createdintegerpublic
failedintegerpublic
resultsarray of object—
results[].indexintegerpublic
results[].okbooleanpublic
results[].referralReferralAcknowledgement—
results[].idempotent_replaybooleanpublic
results[].errorsBulkRowAcknowledgementErrorarray of BulkRowAcknowledgementError—

ReferralBulkResult

Fields (9)
FieldTypeData classNotes
object"bulk_result"public
createdintegerpublic
failedintegerpublic
resultsarray of object—
results[].indexintegerpublic
results[].okbooleanpublic
results[].referralReferral—
results[].idempotent_replaybooleanpublic
results[].errorsBulkRowErrorarray of BulkRowError—

ReferralCreateAcknowledgement

Every field of ReferralAcknowledgement, and:

Fields (1)
FieldTypeData classNotes
idempotent_replaybooleanpublic

ReferralCreateResult

Every field of Referral, and:

Fields (1)
FieldTypeData classNotes
idempotent_replaybooleanpublic

ReferralDetail

Every field of Referral, and:

Fields (30)
FieldTypeData classNotes
consultation_numberstring or nullinstitution_confidential
days_in_appraisalinteger or nullinstitution_confidential
timelineobject or null—
timeline.current_milestonestring or nullpublic
timeline.terminalobject or null—
timeline.terminal.statusstringpublic
timeline.terminal.labelstringpublic
timeline.terminal.detailstringpublic
timeline.phasesarray of object—
timeline.phases[].keystringpublic
timeline.phases[].labelstringpublic
timeline.phases[].statestringpublic
timeline.phases[].milestonesTimelineMilestonearray of TimelineMilestone—
financialobject or null—
financial.initial_offer_centsinteger or nullborrower_personal
financial.current_best_offer_centsinteger or nullborrower_personal
financial.appraised_value_centsinteger or nullborrower_personal
financial.final_settlement_centsinteger or nullborrower_personal
financial.loan_payoff_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
financial.deductible_centsinteger or nullborrower_personalDeprecated.
financial.fees_paid_centsinteger or nullinstitution_confidential
financial.gross_uplift_centsinteger or nullborrower_personal
financial.exposure_before_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
financial.exposure_after_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
financial.exposure_reduction_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
financial.net_savings_centsinteger or nullborrower_personalNull for a key without referrals.contact:read.
financial.roi_multiplenumber or nullborrower_personalNull for a key without referrals.contact:read.
financial.figures_are_finalbooleanpublic
financial.savings_statementstring or nullborrower_personalNull for a key without referrals.contact:read.
financial.payoff_missingbooleanpublic

ReferralList

Fields (4)
FieldTypeData classNotes
object"list"public
dataReferralarray of Referral—
has_morebooleanpublic
next_cursorstring or nullinstitution_confidential

ReviewRecord

Fields (9)
FieldTypeData classNotes
object"gap.review_record"public
idstringinstitution_confidential
referral_idstringinstitution_confidential
versionintegerpublic
hashstringinstitution_confidential
statusstringpublic
created_atstring (date-time)institution_confidential
redactedbooleanpublic
bundleReviewRecordBundle or WithdrawnReviewRecordBundleReviewRecordBundle or WithdrawnReviewRecordBundle or nullborrower_personal

ReviewRecordBundle

Fields (75)
FieldTypeData classNotes
schema"review-record.v1"public
referral_idstringinstitution_confidential
statusstringpublic
review_completed_atstring (date-time) or nullinstitution_confidential
verdictobject—
verdict.recommendationstring or nullpublic
verdict.delivered_atstring (date-time) or nullinstitution_confidential
verdict.tierstring or nullpublic
verdict.decline_reasonstring or nullpublic
verdict.research_onlybooleanpublic
verdict.research_delivered_atstring (date-time) or nullinstitution_confidential
verdict.full_fac_required_atstring (date-time) or nullinstitution_confidential
verdict.full_fac_completed_atstring (date-time) or nullinstitution_confidential
verdict.re_review_requested_atstring (date-time) or nullinstitution_confidential
materialityobject—
materiality.rulestringpublic
materiality.we_can_helpboolean or nullborrower_personal
materiality.second_review_pendingbooleanpublic
windowobject—
window.valuation_received_atstring (date-time) or nullinstitution_confidential
window.ends_atstring (date-time) or nullinstitution_confidential
releaseobject—
release.released_atstring (date-time) or nullinstitution_confidential
release.notice_sent_atstring (date-time) or nullinstitution_confidential
outreachobject—
outreach.consent_modestringinstitution_confidential
outreach.invited_atstring (date-time) or nullinstitution_confidential
outreach.disclosure_confirmed_atstring (date-time) or nullinstitution_confidential
outreach.first_contact_atstring (date-time) or nullinstitution_confidential
outreach.contact_attemptsintegerinstitution_confidential
outreach.last_contact_attempt_atstring (date-time) or nullinstitution_confidential
outreach.reached_atstring (date-time) or nullinstitution_confidential
outreach.activated_atstring (date-time) or nullinstitution_confidential
outreach.contact_stopped_atstring (date-time) or nullinstitution_confidentialDeprecated.
refusalobject—
refusal.recorded_atstring (date-time) or nullinstitution_confidential
refusal.scopestring or nullpublic
refusal.methodstring or nullpublic
refusal.text_versionstring or nullpublic
reviewed_elsewhere_atstring (date-time) or nullinstitution_confidential
appraisal_rightobject—
appraisal_right.claim_againststring or nullborrower_personal
appraisal_right.clause_invoked_atstring (date-time) or nullinstitution_confidential
appraisal_right.clause_invoked_viastring or nullpublic
costsobject—
costs.engagementobject or nullinstitution_confidentialNull for a key without reporting:read.
costs.engagement.basisstringinstitution_confidential
costs.engagement.payerstringinstitution_confidential
costs.engagement.list_centsintegerinstitution_confidential
costs.engagement.institution_centsintegerinstitution_confidential
costs.engagement.borrower_centsintegerinstitution_confidential
costs.institution_chargesarray of object or nullinstitution_confidentialNull for a key without reporting:read.
costs.institution_charges[].kindstringinstitution_confidential
costs.institution_charges[].statusstringinstitution_confidential
costs.institution_charges[].amount_centsintegerinstitution_confidential
costs.institution_charges[].countintegerinstitution_confidential
requirementobject—
requirement.modestringinstitution_confidential
requirement.basis_attestedbooleaninstitution_confidential
requirement.basis_validated_atstring (date-time) or nullinstitution_confidential
outcomeobject—
outcome.settled_atstring (date-time) or nullinstitution_confidential
outcome.closed_atstring (date-time) or nullinstitution_confidential
outcome.close_reasonstring or nullpublic
copy_versionsobject—
copy_versions.disclosure_scriptstring or nullpublic
copy_versions.refusal_textstring or nullpublic
final_acceptanceobject—
final_acceptance.accepted_atstring (date-time)institution_confidential
final_acceptance.reported_bystring or nullpublic
final_acceptance.basisstring or nullpublic
external_reviewobject—
external_review.stagestringpublic
external_review.stage_atstring (date-time)institution_confidential
external_review.reimbursement_attested_atstring (date-time) or nullinstitution_confidential

ReviewRecordReference

Fields (5)
FieldTypeData classNotes
idstringinstitution_confidential
versionintegerpublic
hashstringinstitution_confidential
statusstringpublic
created_atstring (date-time)institution_confidential

ReviewStatus

Fields (6)
FieldTypeData classNotes
object"gap.review_status"public
referralobject—
referral.idstringinstitution_confidential
referral.external_refstring or nullinstitution_confidential
recordReviewRecordReferenceReviewRecordReference or nullinstitution_confidential
close_reasonstring or nullpublic

ReviewStatusList

Fields (3)
FieldTypeData classNotes
object"list"public
dataReviewStatusarray of ReviewStatus—
has_morebooleanpublic

SignatureCheckResult

Fields (12)
FieldTypeData classNotes
object"gap.signature_check"public
verifiedbooleanpublic
signature_basestringinstitution_confidential
codestringpublic
checksobject—
checks.profilestringpublic
checks.windowstringpublic
checks.hoststringpublic
checks.signaturestringpublic
checks.content_digeststringpublic
checks.expirystringpublic
checks.environmentstringpublic

ThinEvent

Fields (9)
FieldTypeData classNotes
idstringpublic
object"event"public
typestringpublic
api_version"1.1"public
created_atstring (date-time)public
livemodebooleanpublic
accountobject—
account.idstringinstitution_confidential
dataobjectinstitution_confidential

TimelineMilestone

Fields (9)
FieldTypeData classNotes
keystringpublic
labelstringpublic
detailstringpublic
statestringpublic
atstring (date-time) or nullinstitution_confidential
waiting_onstring or nullpublic
waiting_labelstring or nullpublic
delayedbooleanpublic
notestring or nullinstitution_confidential

WebhookEvent

Fields (6)
FieldTypeData classNotes
idstringpublic
object"event"public
typestringpublic
created_atstring (date-time)public
livemodebooleanpublic
dataobjectborrower_contact

WebhookReferral

Fields (44)
FieldTypeData classNotes
idstringinstitution_confidential
object"gap.referral"public
statusstringpublic
status_labelstringpublic
status_tonestringpublic
status_notestring or nullinstitution_confidential
external_refstring or nullinstitution_confidential
borrowerobject—
borrower.first_namestringborrower_personal
borrower.last_namestringborrower_personal
borrower.emailstring or nullborrower_contact
borrower.phonestring or nullborrower_contact
vehicleobject—
vehicle.vinstring or nullborrower_personal
vehicle.yearinteger or nullborrower_personal
vehicle.makestring or nullborrower_personal
vehicle.modelstring or nullborrower_personal
claimobject—
claim.carrierstring or nullborrower_personal
claim.claim_numberstring or nullborrower_personal
claim.loss_statestring or nullborrower_personal
claim.date_of_lossstring (date-time) or nullborrower_personal
claim.initial_offer_centsinteger or nullborrower_personal
liabilityobject—
liability.loan_payoff_centsinteger or nullborrower_personal
liability.deductible_centsinteger or nullborrower_personalDeprecated.
programobject—
program.modestringinstitution_confidential
program.subsidy_typestring or nullinstitution_confidential
program.subsidy_valueinteger or nullinstitution_confidential
program.price_centsintegerinstitution_confidential
program.lockedboolean or nullinstitution_confidential
consentobject—
consent.modestringinstitution_confidential
consent.disclosure_confirmed_atstring (date-time) or nullinstitution_confidential
consent.disclosure_channelstring or nullinstitution_confidential
consent.disclosure_attestor_namestring or nullinstitution_confidential
submitted_viastringpublic
created_atstring (date-time)institution_confidential
invited_atstring (date-time) or nullinstitution_confidential
invitation_expires_atstring (date-time) or nullinstitution_confidential
activated_atstring (date-time) or nullinstitution_confidential
settled_atstring (date-time) or nullinstitution_confidential
closed_atstring (date-time) or nullinstitution_confidential

WebhookReferralActivatedData

Fields (3)
FieldTypeData classNotes
referralWebhookReferral—
consultation_numberstring or nullinstitution_confidential
viastringpublic

WebhookReferralData

Fields (1)
FieldTypeData classNotes
referralWebhookReferral—

WebhookReferralInvitedData

Fields (2)
FieldTypeData classNotes
referralWebhookReferral—
channelstringpublic

WebhookReviewRecord

Fields (4)
FieldTypeData classNotes
idstringinstitution_confidential
versionintegerpublic
hashstringinstitution_confidential
statusstringpublic

WebhookReviewRecordData

Fields (5)
FieldTypeData classNotes
referralobject—
referral.idstringinstitution_confidential
referral.external_refstring or nullinstitution_confidential
recordWebhookReviewRecord—
close_reasonstring or nullpublic

WebhookSettlementData

Fields (10)
FieldTypeData classNotes
referralWebhookReferral—
outcomeobject—
outcome.initial_acv_centsinteger or nullborrower_personal
outcome.appraised_value_centsinteger or nullborrower_personal
outcome.final_settlement_centsinteger or nullborrower_personal
outcome.uplift_centsinteger or nullborrower_personal
outcome.exposure_before_centsinteger or nullborrower_personal
outcome.exposure_after_centsinteger or nullborrower_personal
outcome.fees_paid_centsinteger or nullinstitution_confidential
outcome.settled_atstring (date-time) or nullinstitution_confidential

WebhookTestData

Fields (1)
FieldTypeData classNotes
endpoint_idstringinstitution_confidential

WebhookTestEvent

Fields (6)
FieldTypeData classNotes
idstringpublic
object"event"public
type"webhook.test"public
created_atstring (date-time)public
livemodebooleanpublic
dataWebhookTestData—

WebhookTestThinEvent

Fields (9)
FieldTypeData classNotes
idstringpublic
object"event"public
type"webhook.test"public
api_version"1.1"public
created_atstring (date-time)public
livemodebooleanpublic
accountobject—
account.idstringinstitution_confidential
dataWebhookTestData—

WebhookVerificationData

Fields (3)
FieldTypeData classNotes
challengestringinstitution_confidential
endpoint_idstringinstitution_confidential
expires_atstring (date-time)public

WebhookVerificationEvent

Fields (6)
FieldTypeData classNotes
idstringpublic
object"event"public
type"webhook.verification"public
created_atstring (date-time)public
livemodebooleanpublic
dataWebhookVerificationData—

WebhookVerificationThinEvent

Fields (9)
FieldTypeData classNotes
idstringpublic
object"event"public
type"webhook.verification"public
api_version"1.1"public
created_atstring (date-time)public
livemodebooleanpublic
accountobject—
account.idstringinstitution_confidential
dataWebhookVerificationData—

WithdrawnReviewRecordBundle

Fields (5)
FieldTypeData classNotes
schema"review-record.v1"public
referral_idstringinstitution_confidential
status"REPORTING_WITHDRAWN"public
close_reason"REPORTING_WITHDRAWN"public
reporting_withdrawn_atstring (date-time)institution_confidential