Interactions

This object represent communications with a borrower. Whenever the Peach app performs communication with a borrower an interaction is recorded. (Additionally, interactions taking place outside of the Peach application should be recorded here as well). Past interactions information is used to make decisions about when and how it is appropriate to communicate again with a borrower in the future.

Create interaction

Creating interactions tracks the history of communication between lenders/servicers and borrowers.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

query Parameters
searchable
boolean
Default: false

If true, format the entire response as one suitable for an ElasticSearch search index.

Request Body schema: application/json
Any of:
channel
required
string

The channel by which an interaction occurs.

Enum: "fax" "mail" "gui" "document"
content
object or null

The content and attributes of the message sent. Normally in JSON format.

contactId
string

An identifier of an existing contact.

loanId
string or null

An identifier of a loan to track interactions for. This can either be Peach's or a lender's external identifier.

loanIds
Array of strings

A list of identifiers of loans to track interactions for. This can either be Peach's or a lender's external identifiers.

subject
string

The subject of the interaction. This is relevant only if the interaction was rendered from a Peach template.

Enum: "annualPrivacyPolicyNotice" "autopayAgreement" "autopayAmountChanged" "autopayCanceledBySystem" "autopayEnabled" "autopayEnableReminder" "autopayPaymentCanceled" "autopayPaymentMethodUpdated" "autopayPaymentReminder" "autopayPaymentRescheduled" "cardExpiresReminder" "caseEscalation" "ceaseCommunicationAcknowledgement" "ceaseCommunicationRefuseToPay" "confirmationCode" "contactTakeover" "creditNegativeInfoReported" "creditPositiveInfoReported" "custom1" "custom2" "custom3" "custom4" "custom5" "custom6" "custom7" "custom8" "custom9" "custom10" "custom11" "custom12" "custom13" "custom14" "custom15" "custom16" "custom17" "custom18" "custom19" "custom20" "debtValidationNotice" "debtValidationNoticeArizona" "debtValidationNoticeAutomatic" "debtValidationNoticeNYCYonkers" "debtValidationNoticePuertoRico" "deceasedConfirmationOfPayoff" "deceasedNoticeToRepresentative" "deceasedNotificationUponDeath" "disputeOfDebtConfirmed" "disputeOfDebtSubmitDocumentation" "disputeOfDebtSubmitDocumentationReminder" "disputeOfDebtUnableToConfirm" "disputeOfDebtUnableToResolve" "documentUploadFailed" "downpaymentFailed" "electronicConsentOptOut" "freeForm" "freeFormBranded" "futurepayCanceled" "futurepayPaymentDueReminder" "identityTheftIncompleteDocumentation" "identityTheftNotValidated" "identityTheftSubmitDocumentation" "identityTheftSubmitDocumentationFirstReminder" "identityTheftSubmitDocumentationSecondReminder" "identityTheftValidated" "loanAccelerated" "loanCanceled" "loanChargedOffUnsecured" "loanDetails" "loanFeeCharged" "loanFreeze" "loanManualPaymentDisclosure" "loanOverdueFifthNotice" "loanOverdueFirstNotice" "loanOverdueFourthNotice" "loanOverdueSecondNotice" "loanOverdueSixthNotice" "loanOverdueThirdNotice" "loanPaidOff" "loanPaymentScheduleChanged" "loanPayoffStatement" "loanRefundProcessed" "loanRightToCurePersonalUnsecured" "loanTermsChangeAgreement" "loanUnfreeze" "locCreditLimitChanged" "locInterestRateChanged" "locLineClosed" "locStatementGenerated" "locStatementRegenerated" "loginFirstPaymentReminder" "microdepositFailed" "microdepositReminder" "oneTimeCode" "paydayConsumerRightsNotice" "paydayFirstPaymentWithdrawal" "paymentDueDateReminder" "paymentFailed" "paymentProcessing" "paymentReversalFailed" "paymentReversalProcessing" "paymentSuccessful" "payoffStatementDocument" "promoProgramCanceled" "promoProgramEligibilityAtRisk" "promoProgramExercised" "promoProgramReminder" "reimbursementFailed" "reimbursementProcessed" "reimbursementScheduled" "scraApplicationDenied" "scraBenefitsApplied" "scraBenefitsExpiringNotice" "scraCGFlaggedDocumentRequest" "scraServicemanNotifiedDocumentRequest" "settlementOffer" "settlementOfferFirstReminder" "statement" "statementLOC" "unmonitoredEmailAddress" "updateBankAccountConnection"
theme
required
string

The reason why an interaction occurred.

For example:

  • An outbound debt collection call should be marked as opsCollDebt.
  • An annual privacy policy update email should be marked as opsServicing.
  • A customer service response to borrower's inquiry should be marked as opsServicing.
  • Statements or payment reminders should be marked as outOpsLoan.
Enum: "opsCollDebt" "opsCollLocateBorrower" "opsCollVerifyEmployment" "opsCollContactEmployerNotice" "opsLoanTimeBarredNotice" "opsLoanValidationOfDebtNotice" "opsServicingDebtValidation" "opsServicingNegativeCreditReportNotice" "opsServicingTimeBarredNotice" "opsServicingVerificationOfDebt" "opsServicing" "opsAccountCredentials" "inbMissingFeature" "inbEducation" "inbBug" "inbRequest" "inbHumanLove" "inbUnknown" "inbOther"
sensitive
boolean or null
Default: false

Set this flag if this interaction has sensitive information. The flag is used for proper authorization of access to the information.

externalId
string or null [ 1 .. 255 ] characters

The lender's identifier for the interaction.

After the object is successfully created, a lender can use id or externalId identifiers to fetch the object.

To fetch the object using externalId you need to add ext- to the URL.

Note: Don't add ext- to the identifier value. For example: if the external identifier is ABCDE, then pass externalId=ACBCE and NOT ext-ABCDE when creating the object.

previousInteractionId
string or null

If a previous interaction identifier is provided, the current and previous interactions will be linked. This can either be Peach's or a lender's external identifier.

status
required
string

The status of an interaction. Statuses are important, as they can impact future interactions. You can update interaction statuses as they occur. For example, when an email is sent, set the status to attempted. If the email is opened, set the status to succeeded. If the email bounces, set the status to failed. attempted is assumed to be a successful interaction. Optionally, you can also use 'statusDetails' to provide additional details about status.

Enum: "scheduled" "attempted" "succeeded" "failed" "canceled" "inProgress"
metaData
object or null

Store any type of key/value pairs in the form of a JSON dictionary.

isTransactional
boolean or null

true when this interaction is considered "transactional". Transactional interactions are those which are sent via an automated system in response to an event or some action taken. e.g., an email sent because a payment has been made is transactional. An example of a non-transactional message is a one sent by an agent in response to a customer request or for collections.

Note: Can be null for interactions sent before the transactional-ness was added to the API.

direction
required
string
Enum: "outbound" "inbound"
contactExternalId
string or null

The lender's identifier of the contact information.

This should not include any ext- prefix as we know this is an external ID field.

statusDetails
string or null

Provides more details about the status of an interaction. For text messages the statusDetails will be empty since carriers don't provide additional details.

voiceSpokeWithFirstParty, voiceSpokeWithThirdParty, emailDelivered, emailOpened, chatRead - are considered succeeded.

voiceCallTransferred, voiceLeftVoicemailFirstParty, voiceLeftVoicemailThirdParty, voiceLeftVoicemail, voiceReachedVoicemailNoMessageLeft, voiceRangNoPickup, voiceLineBusyNoRing voicePickedHungUp, voiceDisconnectedWhileQueuedOnHold, emailSent, emailReportedAsSpam, mailSent, chatPosted - are considered attempted.

voiceFailedToInitiate, voiceNumberDisconnected, emailBounced, emailDropped, emailFailedToSend, mailReturnedToSender, chatBorrowerInactivity, blockedByComplianceGuard, invalidContact - are considered failed.

Enum: "voiceSpokeWithFirstParty" "voiceSpokeWithThirdParty" "voiceLeftVoicemailFirstParty" "voiceLeftVoicemailThirdParty" "voiceLeftVoicemail" "voiceLineBusyNoRing" "voiceReachedVoicemailNoMessageLeft" "voiceCallTransferred" "voiceRangNoPickup" "voicePickedHungUp" "voiceFailedToInitiate" "voiceNumberDisconnected" "voiceReceivedOutsideOpenHours" "voiceUnexpectedDisconnect" "voiceDisconnectedWhileQueuedOnHold" "voiceReceivedNoAgentsAvailable" "voiceLenderDisabledInboundCalls" "emailSent" "emailDelivered" "emailBounced" "emailOpened" "emailDropped" "emailFailedToSend" "emailReportedAsSpam" "mailFailedToCreate" "mailSent" "mailReturnedToSender" "mailDeleted" "chatPosted" "chatRead" "chatBorrowerInactivity" "blockedByComplianceGuard" "invalidContact"
startedAt
string <date-time>

Start time of the interaction. If not provided we'll assume it's a timestamp of the API call. If time of day is not required provide only date.

endedAt
string or null <date-time>

End time of the interaction. This attribute is optional and is used for logging only.

scheduledAtFrom
string <date-time>

Time to start the scheduled interaction.

scheduledAtTo
string <date-time>

Time to end the scheduled interaction.

failureDescriptionShort
string or null

Short text describing the failure reason. Normally displayed in UI.

failureDescriptionLong
string or null

Detailed text describing the failure reason and any appropriate actions the user may take to fix the issue.

complianceGuardRuleId
string or null

The Compliance Guard rule identifier that blocked the interaction. Only applicable if the statusDetails=blockedByComplianceGuard and a rule actually blocked the interaction. In some cases the interaction can be blocked before rules are checked (e.g. a borrower is missing an address). In such a case the complianceGuardRuleId will be empty/null.

object

Represents various users such as a borrower, co-borrower, co-signer, etc. A lender can choose to provide PII or not. If no PII is provided, Peach cannot monitor for bankruptcy, deceased and SCRA.

object (contactInformation)

The contact details. A contact can be email, phone, address, etc. The name attribute is optional, and is useful for third-party contacts such as spouse, attorney, etc.

Responses
200

Success

post/people/{personId}/interactions
Request samples
application/json
{
  • "channel": "fax",
  • "content": { },
  • "contactId": "string",
  • "loanId": "string",
  • "loanIds": [
    ],
  • "subject": "annualPrivacyPolicyNotice",
  • "theme": "opsCollDebt",
  • "sensitive": false,
  • "externalId": "string",
  • "previousInteractionId": "string",
  • "status": "scheduled",
  • "metaData": { },
  • "isTransactional": true,
  • "direction": "outbound",
  • "contactExternalId": "string",
  • "statusDetails": "voiceSpokeWithFirstParty",
  • "startedAt": "2019-08-24T14:15:22Z",
  • "endedAt": "2019-08-24T14:15:22Z",
  • "scheduledAtFrom": "2019-08-24T14:15:22Z",
  • "scheduledAtTo": "2019-08-24T14:15:22Z",
  • "failureDescriptionShort": "string",
  • "failureDescriptionLong": "string",
  • "complianceGuardRuleId": "string",
  • "borrower": {
    },
  • "contact": {
    }
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get borrower interactions

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

query Parameters
limit
integer [ 1 .. 100 ]
Default: 25

The maximum count of results to retrieve.

startingAfter
string

Return results starting after the provided object identifier.

endingBefore
string

Return results ending before the provided object identifier.

offset
integer >= 0

Offset from the start of results.

channel
string

The interaction channel value to filter by.

Enum: "voice" "email" "fax" "text" "chat" "mail" "gui" "document"
direction
string

The interaction direction value to filter by.

Enum: "outbound" "inbound"
status
string

The interaction status value to filter by.

Enum: "scheduled" "attempted" "succeeded" "failed" "canceled" "inProgress"
statusDetails
string or null

The interaction status details value to filter by.

Enum: "voiceSpokeWithFirstParty" "voiceSpokeWithThirdParty" "voiceLeftVoicemailFirstParty" "voiceLeftVoicemailThirdParty" "voiceLeftVoicemail" "voiceLineBusyNoRing" "voiceReachedVoicemailNoMessageLeft" "voiceCallTransferred" "voiceRangNoPickup" "voicePickedHungUp" "voiceFailedToInitiate" "voiceNumberDisconnected" "voiceReceivedOutsideOpenHours" "voiceUnexpectedDisconnect" "voiceDisconnectedWhileQueuedOnHold" "voiceReceivedNoAgentsAvailable" "voiceLenderDisabledInboundCalls" "emailSent" "emailDelivered" "emailBounced" "emailOpened" "emailDropped" "emailFailedToSend" "emailReportedAsSpam" "mailFailedToCreate" "mailSent" "mailReturnedToSender" "mailDeleted" "chatPosted" "chatRead" "chatBorrowerInactivity" "blockedByComplianceGuard" "invalidContact"
subject
string

The interaction subject value to filter by.

Enum: "annualPrivacyPolicyNotice" "autopayAgreement" "autopayAmountChanged" "autopayCanceledBySystem" "autopayEnabled" "autopayEnableReminder" "autopayPaymentCanceled" "autopayPaymentMethodUpdated" "autopayPaymentReminder" "autopayPaymentRescheduled" "cardExpiresReminder" "caseEscalation" "ceaseCommunicationAcknowledgement" "ceaseCommunicationRefuseToPay" "confirmationCode" "contactTakeover" "creditNegativeInfoReported" "creditPositiveInfoReported" "custom1" "custom2" "custom3" "custom4" "custom5" "custom6" "custom7" "custom8" "custom9" "custom10" "custom11" "custom12" "custom13" "custom14" "custom15" "custom16" "custom17" "custom18" "custom19" "custom20" "debtValidationNotice" "debtValidationNoticeArizona" "debtValidationNoticeAutomatic" "debtValidationNoticeNYCYonkers" "debtValidationNoticePuertoRico" "deceasedConfirmationOfPayoff" "deceasedNoticeToRepresentative" "deceasedNotificationUponDeath" "disputeOfDebtConfirmed" "disputeOfDebtSubmitDocumentation" "disputeOfDebtSubmitDocumentationReminder" "disputeOfDebtUnableToConfirm" "disputeOfDebtUnableToResolve" "documentUploadFailed" "downpaymentFailed" "electronicConsentOptOut" "freeForm" "freeFormBranded" "futurepayCanceled" "futurepayPaymentDueReminder" "identityTheftIncompleteDocumentation" "identityTheftNotValidated" "identityTheftSubmitDocumentation" "identityTheftSubmitDocumentationFirstReminder" "identityTheftSubmitDocumentationSecondReminder" "identityTheftValidated" "loanAccelerated" "loanCanceled" "loanChargedOffUnsecured" "loanDetails" "loanFeeCharged" "loanFreeze" "loanManualPaymentDisclosure" "loanOverdueFifthNotice" "loanOverdueFirstNotice" "loanOverdueFourthNotice" "loanOverdueSecondNotice" "loanOverdueSixthNotice" "loanOverdueThirdNotice" "loanPaidOff" "loanPaymentScheduleChanged" "loanPayoffStatement" "loanRefundProcessed" "loanRightToCurePersonalUnsecured" "loanTermsChangeAgreement" "loanUnfreeze" "locCreditLimitChanged" "locInterestRateChanged" "locLineClosed" "locStatementGenerated" "locStatementRegenerated" "loginFirstPaymentReminder" "microdepositFailed" "microdepositReminder" "oneTimeCode" "paydayConsumerRightsNotice" "paydayFirstPaymentWithdrawal" "paymentDueDateReminder" "paymentFailed" "paymentProcessing" "paymentReversalFailed" "paymentReversalProcessing" "paymentSuccessful" "payoffStatementDocument" "promoProgramCanceled" "promoProgramEligibilityAtRisk" "promoProgramExercised" "promoProgramReminder" "reimbursementFailed" "reimbursementProcessed" "reimbursementScheduled" "scraApplicationDenied" "scraBenefitsApplied" "scraBenefitsExpiringNotice" "scraCGFlaggedDocumentRequest" "scraServicemanNotifiedDocumentRequest" "settlementOffer" "settlementOfferFirstReminder" "statement" "statementLOC" "unmonitoredEmailAddress" "updateBankAccountConnection"
theme
string

The interaction theme value to filter by.

Enum: "opsCollDebt" "opsCollLocateBorrower" "opsCollVerifyEmployment" "opsCollContactEmployerNotice" "opsLoanTimeBarredNotice" "opsLoanValidationOfDebtNotice" "opsServicingDebtValidation" "opsServicingNegativeCreditReportNotice" "opsServicingTimeBarredNotice" "opsServicingVerificationOfDebt" "opsServicing" "opsAccountCredentials" "inbMissingFeature" "inbEducation" "inbBug" "inbRequest" "inbHumanLove" "inbUnknown" "inbOther"
sortBy
Array of strings

The data attributes by which to sort the results.

createdAtBefore
string <date-time>

Filter only objects that were not created at or before the specified timestamp. The timestamp must include a timezone (or UTC offset).

createdAtAfter
string <date-time>

Filter only objects that were not created at or after the specified timestamp. The timestamp must include a timezone (or UTC offset).

startedAtBefore
string <date-time>

Filter only objects that were not started at or before the specified timestamp. The timestamp must include a timezone (or UTC offset).

startedAtAfter
string <date-time>

Filter only objects that were not started at or after the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtFromBefore
string <date-time>

Filter only objects with scheduledAtFrom not set before the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtFromAfter
string <date-time>

Filter only objects with scheduledAtFrom not set after the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtToBefore
string <date-time>

Filter only objects with scheduledAtTo not set before the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtToAfter
string <date-time>

Filter only objects with scheduledAtTo not set after the specified timestamp. The timestamp must include a timezone (or UTC offset).

hasVoicemail
boolean

If true match only interactions with voicemails—only valid for channel=voicecase. Note that a voicemail is different from a call recording. A voicemail is a audio message left by a caller in various circumstances, e.g., they called while the office was closed or while there were no agents available to answer their call.

hasRecording
boolean

If true match only interactions with call recordings—only valid for channel=voice. Note that a call recording is when an agent chooses to record a call, which is different from a voicemail.

Responses
200

Success

get/people/{personId}/interactions
Response samples
application/json
{
  • "total": 0,
  • "count": 0,
  • "nextUrl": "string",
  • "previousUrl": "string",
  • "data": [
    ]
}

Get interaction by ID

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
searchable
boolean
Default: false

If true, format the entire response as one suitable for an ElasticSearch search index.

Responses
200

Success

get/people/{personId}/interactions/{interactionId}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Update interaction

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

Request Body schema: application/json
Any of:
channel
string

The channel by which an interaction occurs.

Enum: "fax" "mail" "gui" "document"
content
object or null

The content and attributes of the message sent. Normally in JSON format.

contactId
string

An identifier of an existing contact.

loanId
string or null

An identifier of a loan to track interactions for. This can either be Peach's or a lender's external identifier.

loanIds
Array of strings

A list of identifiers of loans to track interactions for. This can either be Peach's or a lender's external identifiers.

subject
string

The subject of the interaction. This is relevant only if the interaction was rendered from a Peach template.

Enum: "annualPrivacyPolicyNotice" "autopayAgreement" "autopayAmountChanged" "autopayCanceledBySystem" "autopayEnabled" "autopayEnableReminder" "autopayPaymentCanceled" "autopayPaymentMethodUpdated" "autopayPaymentReminder" "autopayPaymentRescheduled" "cardExpiresReminder" "caseEscalation" "ceaseCommunicationAcknowledgement" "ceaseCommunicationRefuseToPay" "confirmationCode" "contactTakeover" "creditNegativeInfoReported" "creditPositiveInfoReported" "custom1" "custom2" "custom3" "custom4" "custom5" "custom6" "custom7" "custom8" "custom9" "custom10" "custom11" "custom12" "custom13" "custom14" "custom15" "custom16" "custom17" "custom18" "custom19" "custom20" "debtValidationNotice" "debtValidationNoticeArizona" "debtValidationNoticeAutomatic" "debtValidationNoticeNYCYonkers" "debtValidationNoticePuertoRico" "deceasedConfirmationOfPayoff" "deceasedNoticeToRepresentative" "deceasedNotificationUponDeath" "disputeOfDebtConfirmed" "disputeOfDebtSubmitDocumentation" "disputeOfDebtSubmitDocumentationReminder" "disputeOfDebtUnableToConfirm" "disputeOfDebtUnableToResolve" "documentUploadFailed" "downpaymentFailed" "electronicConsentOptOut" "freeForm" "freeFormBranded" "futurepayCanceled" "futurepayPaymentDueReminder" "identityTheftIncompleteDocumentation" "identityTheftNotValidated" "identityTheftSubmitDocumentation" "identityTheftSubmitDocumentationFirstReminder" "identityTheftSubmitDocumentationSecondReminder" "identityTheftValidated" "loanAccelerated" "loanCanceled" "loanChargedOffUnsecured" "loanDetails" "loanFeeCharged" "loanFreeze" "loanManualPaymentDisclosure" "loanOverdueFifthNotice" "loanOverdueFirstNotice" "loanOverdueFourthNotice" "loanOverdueSecondNotice" "loanOverdueSixthNotice" "loanOverdueThirdNotice" "loanPaidOff" "loanPaymentScheduleChanged" "loanPayoffStatement" "loanRefundProcessed" "loanRightToCurePersonalUnsecured" "loanTermsChangeAgreement" "loanUnfreeze" "locCreditLimitChanged" "locInterestRateChanged" "locLineClosed" "locStatementGenerated" "locStatementRegenerated" "loginFirstPaymentReminder" "microdepositFailed" "microdepositReminder" "oneTimeCode" "paydayConsumerRightsNotice" "paydayFirstPaymentWithdrawal" "paymentDueDateReminder" "paymentFailed" "paymentProcessing" "paymentReversalFailed" "paymentReversalProcessing" "paymentSuccessful" "payoffStatementDocument" "promoProgramCanceled" "promoProgramEligibilityAtRisk" "promoProgramExercised" "promoProgramReminder" "reimbursementFailed" "reimbursementProcessed" "reimbursementScheduled" "scraApplicationDenied" "scraBenefitsApplied" "scraBenefitsExpiringNotice" "scraCGFlaggedDocumentRequest" "scraServicemanNotifiedDocumentRequest" "settlementOffer" "settlementOfferFirstReminder" "statement" "statementLOC" "unmonitoredEmailAddress" "updateBankAccountConnection"
theme
string

The reason why an interaction occurred.

For example:

  • An outbound debt collection call should be marked as opsCollDebt.
  • An annual privacy policy update email should be marked as opsServicing.
  • A customer service response to borrower's inquiry should be marked as opsServicing.
  • Statements or payment reminders should be marked as outOpsLoan.
Enum: "opsCollDebt" "opsCollLocateBorrower" "opsCollVerifyEmployment" "opsCollContactEmployerNotice" "opsLoanTimeBarredNotice" "opsLoanValidationOfDebtNotice" "opsServicingDebtValidation" "opsServicingNegativeCreditReportNotice" "opsServicingTimeBarredNotice" "opsServicingVerificationOfDebt" "opsServicing" "opsAccountCredentials" "inbMissingFeature" "inbEducation" "inbBug" "inbRequest" "inbHumanLove" "inbUnknown" "inbOther"
sensitive
boolean or null
Default: false

Set this flag if this interaction has sensitive information. The flag is used for proper authorization of access to the information.

externalId
string or null [ 1 .. 255 ] characters

The lender's identifier for the interaction.

After the object is successfully created, a lender can use id or externalId identifiers to fetch the object.

To fetch the object using externalId you need to add ext- to the URL.

Note: Don't add ext- to the identifier value. For example: if the external identifier is ABCDE, then pass externalId=ACBCE and NOT ext-ABCDE when creating the object.

previousInteractionId
string or null

If a previous interaction identifier is provided, the current and previous interactions will be linked. This can either be Peach's or a lender's external identifier.

status
string

The status of an interaction. Statuses are important, as they can impact future interactions. You can update interaction statuses as they occur. For example, when an email is sent, set the status to attempted. If the email is opened, set the status to succeeded. If the email bounces, set the status to failed. attempted is assumed to be a successful interaction. Optionally, you can also use 'statusDetails' to provide additional details about status.

Enum: "scheduled" "attempted" "succeeded" "failed" "canceled" "inProgress"
metaData
object or null

Store any type of key/value pairs in the form of a JSON dictionary.

isTransactional
boolean or null

true when this interaction is considered "transactional". Transactional interactions are those which are sent via an automated system in response to an event or some action taken. e.g., an email sent because a payment has been made is transactional. An example of a non-transactional message is a one sent by an agent in response to a customer request or for collections.

Note: Can be null for interactions sent before the transactional-ness was added to the API.

direction
string
Enum: "outbound" "inbound"
contactExternalId
string or null

The lender's identifier of the contact information.

This should not include any ext- prefix as we know this is an external ID field.

statusDetails
string or null

Provides more details about the status of an interaction. For text messages the statusDetails will be empty since carriers don't provide additional details.

voiceSpokeWithFirstParty, voiceSpokeWithThirdParty, emailDelivered, emailOpened, chatRead - are considered succeeded.

voiceCallTransferred, voiceLeftVoicemailFirstParty, voiceLeftVoicemailThirdParty, voiceLeftVoicemail, voiceReachedVoicemailNoMessageLeft, voiceRangNoPickup, voiceLineBusyNoRing voicePickedHungUp, voiceDisconnectedWhileQueuedOnHold, emailSent, emailReportedAsSpam, mailSent, chatPosted - are considered attempted.

voiceFailedToInitiate, voiceNumberDisconnected, emailBounced, emailDropped, emailFailedToSend, mailReturnedToSender, chatBorrowerInactivity, blockedByComplianceGuard, invalidContact - are considered failed.

Enum: "voiceSpokeWithFirstParty" "voiceSpokeWithThirdParty" "voiceLeftVoicemailFirstParty" "voiceLeftVoicemailThirdParty" "voiceLeftVoicemail" "voiceLineBusyNoRing" "voiceReachedVoicemailNoMessageLeft" "voiceCallTransferred" "voiceRangNoPickup" "voicePickedHungUp" "voiceFailedToInitiate" "voiceNumberDisconnected" "voiceReceivedOutsideOpenHours" "voiceUnexpectedDisconnect" "voiceDisconnectedWhileQueuedOnHold" "voiceReceivedNoAgentsAvailable" "voiceLenderDisabledInboundCalls" "emailSent" "emailDelivered" "emailBounced" "emailOpened" "emailDropped" "emailFailedToSend" "emailReportedAsSpam" "mailFailedToCreate" "mailSent" "mailReturnedToSender" "mailDeleted" "chatPosted" "chatRead" "chatBorrowerInactivity" "blockedByComplianceGuard" "invalidContact"
startedAt
string <date-time>

Start time of the interaction. If not provided we'll assume it's a timestamp of the API call. If time of day is not required provide only date.

endedAt
string or null <date-time>

End time of the interaction. This attribute is optional and is used for logging only.

scheduledAtFrom
string <date-time>

Time to start the scheduled interaction.

scheduledAtTo
string <date-time>

Time to end the scheduled interaction.

failureDescriptionShort
string or null

Short text describing the failure reason. Normally displayed in UI.

failureDescriptionLong
string or null

Detailed text describing the failure reason and any appropriate actions the user may take to fix the issue.

complianceGuardRuleId
string or null

The Compliance Guard rule identifier that blocked the interaction. Only applicable if the statusDetails=blockedByComplianceGuard and a rule actually blocked the interaction. In some cases the interaction can be blocked before rules are checked (e.g. a borrower is missing an address). In such a case the complianceGuardRuleId will be empty/null.

object

Represents various users such as a borrower, co-borrower, co-signer, etc. A lender can choose to provide PII or not. If no PII is provided, Peach cannot monitor for bankruptcy, deceased and SCRA.

object (contactInformation)

The contact details. A contact can be email, phone, address, etc. The name attribute is optional, and is useful for third-party contacts such as spouse, attorney, etc.

Responses
200

Success

put/people/{personId}/interactions/{interactionId}
Request samples
application/json
{
  • "channel": "fax",
  • "content": { },
  • "contactId": "string",
  • "loanId": "string",
  • "loanIds": [
    ],
  • "subject": "annualPrivacyPolicyNotice",
  • "theme": "opsCollDebt",
  • "sensitive": false,
  • "externalId": "string",
  • "previousInteractionId": "string",
  • "status": "scheduled",
  • "metaData": { },
  • "isTransactional": true,
  • "direction": "outbound",
  • "contactExternalId": "string",
  • "statusDetails": "voiceSpokeWithFirstParty",
  • "startedAt": "2019-08-24T14:15:22Z",
  • "endedAt": "2019-08-24T14:15:22Z",
  • "scheduledAtFrom": "2019-08-24T14:15:22Z",
  • "scheduledAtTo": "2019-08-24T14:15:22Z",
  • "failureDescriptionShort": "string",
  • "failureDescriptionLong": "string",
  • "complianceGuardRuleId": "string",
  • "borrower": {
    },
  • "contact": {
    }
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Download interaction recording

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
disposition
string

Tells the response from the file download to set the Content-Disposition header to the given value.

  • attachment means "download the file"
  • inline means "open the file in the default manner". e.g., if the file were an .mp3 the browser's default audio player would open.
Enum: "inline" "attachment"
returnUrl
boolean
Default: false

If true, will return a URL to the content instead of redirecting to the content.

Responses
200

If the returnUrl parameter is true then return the url rather than redirecting.

302

Redirected to the recorded content

get/people/{personId}/interactions/{interactionId}/recording-content

Download interaction voicemail

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
disposition
string

Tells the response from the file download to set the Content-Disposition header to the given value.

  • attachment means "download the file"
  • inline means "open the file in the default manner". e.g., if the file were an .mp3 the browser's default audio player would open.
Enum: "inline" "attachment"
returnUrl
boolean
Default: false

If true, will return a URL to the content instead of redirecting to the content.

Responses
200

If the returnUrl parameter is true then return the url rather than redirecting.

302

Redirected to the recorded content

get/people/{personId}/interactions/{interactionId}/voicemail-content

Get interactions

Securityoauth2 or bearerAuth or apiKeyHeader
Request
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25

The maximum count of results to retrieve.

startingAfter
string

Return results starting after the provided object identifier.

endingBefore
string

Return results ending before the provided object identifier.

offset
integer >= 0

Offset from the start of results.

hasNoPerson
boolean

If true only return unbound interactions—those not associated with a borrower.

channel
string

The interaction channel value to filter by.

Enum: "voice" "email" "fax" "text" "chat" "mail" "gui" "document"
direction
string

The interaction direction value to filter by.

Enum: "outbound" "inbound"
status
string

The interaction status value to filter by.

Enum: "scheduled" "attempted" "succeeded" "failed" "canceled" "inProgress"
statusDetails
string or null

The interaction status details value to filter by.

Enum: "voiceSpokeWithFirstParty" "voiceSpokeWithThirdParty" "voiceLeftVoicemailFirstParty" "voiceLeftVoicemailThirdParty" "voiceLeftVoicemail" "voiceLineBusyNoRing" "voiceReachedVoicemailNoMessageLeft" "voiceCallTransferred" "voiceRangNoPickup" "voicePickedHungUp" "voiceFailedToInitiate" "voiceNumberDisconnected" "voiceReceivedOutsideOpenHours" "voiceUnexpectedDisconnect" "voiceDisconnectedWhileQueuedOnHold" "voiceReceivedNoAgentsAvailable" "voiceLenderDisabledInboundCalls" "emailSent" "emailDelivered" "emailBounced" "emailOpened" "emailDropped" "emailFailedToSend" "emailReportedAsSpam" "mailFailedToCreate" "mailSent" "mailReturnedToSender" "mailDeleted" "chatPosted" "chatRead" "chatBorrowerInactivity" "blockedByComplianceGuard" "invalidContact"
subject
string

The interaction subject value to filter by.

Enum: "annualPrivacyPolicyNotice" "autopayAgreement" "autopayAmountChanged" "autopayCanceledBySystem" "autopayEnabled" "autopayEnableReminder" "autopayPaymentCanceled" "autopayPaymentMethodUpdated" "autopayPaymentReminder" "autopayPaymentRescheduled" "cardExpiresReminder" "caseEscalation" "ceaseCommunicationAcknowledgement" "ceaseCommunicationRefuseToPay" "confirmationCode" "contactTakeover" "creditNegativeInfoReported" "creditPositiveInfoReported" "custom1" "custom2" "custom3" "custom4" "custom5" "custom6" "custom7" "custom8" "custom9" "custom10" "custom11" "custom12" "custom13" "custom14" "custom15" "custom16" "custom17" "custom18" "custom19" "custom20" "debtValidationNotice" "debtValidationNoticeArizona" "debtValidationNoticeAutomatic" "debtValidationNoticeNYCYonkers" "debtValidationNoticePuertoRico" "deceasedConfirmationOfPayoff" "deceasedNoticeToRepresentative" "deceasedNotificationUponDeath" "disputeOfDebtConfirmed" "disputeOfDebtSubmitDocumentation" "disputeOfDebtSubmitDocumentationReminder" "disputeOfDebtUnableToConfirm" "disputeOfDebtUnableToResolve" "documentUploadFailed" "downpaymentFailed" "electronicConsentOptOut" "freeForm" "freeFormBranded" "futurepayCanceled" "futurepayPaymentDueReminder" "identityTheftIncompleteDocumentation" "identityTheftNotValidated" "identityTheftSubmitDocumentation" "identityTheftSubmitDocumentationFirstReminder" "identityTheftSubmitDocumentationSecondReminder" "identityTheftValidated" "loanAccelerated" "loanCanceled" "loanChargedOffUnsecured" "loanDetails" "loanFeeCharged" "loanFreeze" "loanManualPaymentDisclosure" "loanOverdueFifthNotice" "loanOverdueFirstNotice" "loanOverdueFourthNotice" "loanOverdueSecondNotice" "loanOverdueSixthNotice" "loanOverdueThirdNotice" "loanPaidOff" "loanPaymentScheduleChanged" "loanPayoffStatement" "loanRefundProcessed" "loanRightToCurePersonalUnsecured" "loanTermsChangeAgreement" "loanUnfreeze" "locCreditLimitChanged" "locInterestRateChanged" "locLineClosed" "locStatementGenerated" "locStatementRegenerated" "loginFirstPaymentReminder" "microdepositFailed" "microdepositReminder" "oneTimeCode" "paydayConsumerRightsNotice" "paydayFirstPaymentWithdrawal" "paymentDueDateReminder" "paymentFailed" "paymentProcessing" "paymentReversalFailed" "paymentReversalProcessing" "paymentSuccessful" "payoffStatementDocument" "promoProgramCanceled" "promoProgramEligibilityAtRisk" "promoProgramExercised" "promoProgramReminder" "reimbursementFailed" "reimbursementProcessed" "reimbursementScheduled" "scraApplicationDenied" "scraBenefitsApplied" "scraBenefitsExpiringNotice" "scraCGFlaggedDocumentRequest" "scraServicemanNotifiedDocumentRequest" "settlementOffer" "settlementOfferFirstReminder" "statement" "statementLOC" "unmonitoredEmailAddress" "updateBankAccountConnection"
theme
string

The interaction theme value to filter by.

Enum: "opsCollDebt" "opsCollLocateBorrower" "opsCollVerifyEmployment" "opsCollContactEmployerNotice" "opsLoanTimeBarredNotice" "opsLoanValidationOfDebtNotice" "opsServicingDebtValidation" "opsServicingNegativeCreditReportNotice" "opsServicingTimeBarredNotice" "opsServicingVerificationOfDebt" "opsServicing" "opsAccountCredentials" "inbMissingFeature" "inbEducation" "inbBug" "inbRequest" "inbHumanLove" "inbUnknown" "inbOther"
sortBy
Array of strings

The data attributes by which to sort the results.

createdAtBefore
string <date-time>

Filter only objects that were not created at or before the specified timestamp. The timestamp must include a timezone (or UTC offset).

createdAtAfter
string <date-time>

Filter only objects that were not created at or after the specified timestamp. The timestamp must include a timezone (or UTC offset).

startedAtBefore
string <date-time>

Filter only objects that were not started at or before the specified timestamp. The timestamp must include a timezone (or UTC offset).

startedAtAfter
string <date-time>

Filter only objects that were not started at or after the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtFromBefore
string <date-time>

Filter only objects with scheduledAtFrom not set before the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtFromAfter
string <date-time>

Filter only objects with scheduledAtFrom not set after the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtToBefore
string <date-time>

Filter only objects with scheduledAtTo not set before the specified timestamp. The timestamp must include a timezone (or UTC offset).

scheduledAtToAfter
string <date-time>

Filter only objects with scheduledAtTo not set after the specified timestamp. The timestamp must include a timezone (or UTC offset).

hasVoicemail
boolean

If true match only interactions with voicemails—only valid for channel=voicecase. Note that a voicemail is different from a call recording. A voicemail is a audio message left by a caller in various circumstances, e.g., they called while the office was closed or while there were no agents available to answer their call.

hasRecording
boolean

If true match only interactions with call recordings—only valid for channel=voice. Note that a call recording is when an agent chooses to record a call, which is different from a voicemail.

include
Array of strings non-empty

A comma separated list of interaction relationships to return. When "includeFields=borrower,contact" both the borrower and contact fields will be populated in the response object (see response body for details)

Items Enum: "borrower" "contact"
Responses
200

Success

get/interactions
Response samples
application/json
{
  • "total": 0,
  • "count": 0,
  • "nextUrl": "string",
  • "previousUrl": "string",
  • "data": [
    ]
}

Get interaction by ID

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
searchable
boolean
Default: false

If true, format the entire response as one suitable for an ElasticSearch search index.

Responses
200

Success

get/interactions/{interactionId}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Download interaction recording

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
disposition
string

Tells the response from the file download to set the Content-Disposition header to the given value.

  • attachment means "download the file"
  • inline means "open the file in the default manner". e.g., if the file were an .mp3 the browser's default audio player would open.
Enum: "inline" "attachment"
returnUrl
boolean
Default: false

If true, will return a URL to the content instead of redirecting to the content.

Responses
200

If the returnUrl parameter is true then return the url rather than redirecting.

302

Redirected to the recorded content

get/interactions/{interactionId}/recording-content

Download interaction voicemail

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
interactionId
required
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

query Parameters
disposition
string

Tells the response from the file download to set the Content-Disposition header to the given value.

  • attachment means "download the file"
  • inline means "open the file in the default manner". e.g., if the file were an .mp3 the browser's default audio player would open.
Enum: "inline" "attachment"
returnUrl
boolean
Default: false

If true, will return a URL to the content instead of redirecting to the content.

Responses
200

If the returnUrl parameter is true then return the url rather than redirecting.

302

Redirected to the recorded content

get/interactions/{interactionId}/voicemail-content