Skip to main content

Lead Price Reject

Introduction#

The Lead Price Reject API allows a lead provider to submit borrower lead information to Lokyata for real-time evaluation. Lokyata evaluates the lead and determines whether the lender is willing to purchase it at the submitted price.

If the submitted lead price is acceptable, the API returns an approved response. If the submitted lead price is higher than the price Lokyata is willing to pay, the API returns a denied response and includes the maximum acceptable price.

How Lead Price Reject Works#

The request includes the submitted lead price in lead_price.

Lokyata evaluates the lead and calculates the maximum acceptable price.

If lead_price is less than or equal to the calculated price, the lead can be accepted.

If lead_price is greater than the calculated price, the lead is rejected.

A price rejection includes max_acceptable_price, which is the price the lender is willing to pay for the lead.

The lead provider may submit the same request_id again with a price at or below max_acceptable_price.

Endpoint#

ItemValue
MethodPOST
URLhttps://api.xrv3.lokyata.com/process-lp-lr-lead
Content Typeapplication/json
AuthenticationAPI key passed in the x-api-key request header

Authentication#

Each request must include a valid client-specific API key in the x-api-key request header. Lokyata provides the API hostname and API key for each environment and client integration.

{  "x-api-key": "<provided-by-lokyata>",  "Content-Type": "application/json"}

Processing Behavior#

  • The endpoint reads the request body as JSON. Malformed JSON returns a denial-shaped response with the comment Invalid JSON.
  • The x-api-key and lead_provider_id are used to resolve the client's Lead Buy portfolio.
  • A normal submission must use a unique request_id. A duplicate request ID is denied unless the request is fulfilling an active lead-price suggestion.
  • The workflow is selected using the configured campaign and workflow load-balancing configuration.
  • Campaign status and throttle capacity are checked before full evaluation.
  • If the workflow calculates a maximum acceptable price and the submitted lead_price is higher, the response is denied and includes max_acceptable_price.
  • If the lead provider resubmits the same request_id at or below the suggested price before expiration, the duplicate check is bypassed and the lead can continue through evaluation.

Request#

NameTypeRequiredConstraintsDescription
request_idstringYes1-64 charsUnique ID for the API request. Can be any unique ID generated by the lead provider.
lead_provider_idstringYes1-30 charsUnique ID for lead provider or submitter. Values are provided by Lokyata.
campaign_idstringYes1-64 charsCampaign configured by lender in the lead provider system. Values are provided by Lokyata.
affiliate_idstringYes1-64 charsUnique ID for affiliate provider. Can be any ID from the submitter's system.
affiliate_sub_idstringNomax 64 charsUnique ID for sub-affiliates.
lead_pricenumberYesLender's cost to purchase the lead.
application_websitestringYes1-300 charsWebsite used by the customer during application.
ip_addressstringYesmax 39 charsCustomer's IP address. Accepts both IPv4 and IPv6 format.
requested_amountintegerYesRequested loan amount in USD, including dollars and cents.
ssnstringYesexactly 9 charsCustomer's social security number. Format: all digits; no dashes.
dobstringYesyyyy-mm-ddCustomer's date of birth.
genderstringNomax 7 charsCustomer's gender.
first_namestringYes1-50 charsCustomer's first name.
middle_initialstringNomax 1 charCustomer's middle initial.
last_namestringYes1-50 charsCustomer's last name.
addressstringYesmax 300 charsCustomer's home street address.
address2stringNomax 100 charsCustomer's home address line 2 - apartment or suite number.
citystringYesmax 100 charsCity of customer's home street address.
statestringYesexactly 2 charsState where the customer resides. Format is state two-letter abbreviation.
zip_codestringYesmax 10 charsCustomer's home address zip code. Format is either nnnnn or nnnnn-nnnn.
home_phonestringYesnumeric, max 50 charsCustomer's home phone number. Format: all numeric digits; no special characters.
mobile_phonestringYesnumeric, max 50 charsCustomer's mobile phone number. Format: all numeric digits; no special characters.
work_phonestringYesnumeric, max 50 charsCustomer's work phone number. Format: all numeric digits; no special characters.
drivers_license_statestringYesexactly 2 charsState where customer's driver's license was issued. Format is state two-letter abbreviation.
drivers_license_numberstringYes1-20 charsCustomer's driver's license number. Format: no special characters.
contact_timestringNomax 9 charsBest time to contact the customer.
is_militarybooleanYestrue or falsetrue = customer is a member of the US military or dependent of someone in the US military; false = customer is not in the US military and not dependent of someone in the US military.
residence_typestringYesmax 10 charsWhether the customer owns or rents the residence.
emailstringYesmax 300 charsCustomer's email address. Format is abcd@abcd.abc.
residence_monthsintegerYesNumber of months the customer is living in the current residence.
is_citizenbooleanYestrue or falsetrue = customer is a US citizen and at least 18 years old; false = customer is not a US citizen or not at least 18 years old.
is_subscribed_future_offersbooleanNotrue or falsetrue = customer subscribed to future offers; false = customer did not subscribe to future offers.
num_installmentsintegerNoNumber of installments for the loan schedule.
interest_rateintegerNoInterest rate to be charged on the loan.
languagestringNomax 300 charsLanguage which customer speaks. If no value is specified, English is used by default.
income_typestringYesmax 20 charsCustomer's income type.
payment_typestringYesmax 20 charsCustomer's payment type.
employment_typestringYesmax 20 charsDoes the customer work full or part-time.
employment_monthsintegerYesNumber of months the customer has been working with the current employer.
employer_namestringYes1-100 charsName of customer's current employer.
employment_addressstringYes1-300 charsStreet address of the customer's current employer.
employment_address2stringNomax 100 charsSuite or apartment address of the customer's current employer.
employment_citystringNomax 50 charsCity where the customer's employer is located.
employment_statestringNoexactly 2 charsState where the customer's employer is located. Format is state two-letter abbreviation.
employment_zip_codestringNomax 10 charsEmployer's zip code. Format is either nnnnn or nnnnn-nnnn.
employer_phonestringYesnumeric, max 13 charsPhone number of the customer's employer. Format: all numeric digits; no special characters.
employment_phone_extstringNomax 6 charsPhone number extension of the customer's employer.
employment_faxstringNonumeric, max 13 charsFax number of the customer's employer. Format: all numeric digits; no special characters.
supervisor_namestringYes1-100 charsName of the customer's supervisor.
supervisor_phonestringNonumeric, max 13 charsWork phone number of the customer's supervisor. Format: all numeric digits; no special characters.
supervisor_phone_extstringNomax 6 charsWork phone number extension for the customer's supervisor.
job_titlestringNomax 100 charsCustomer's job title.
work_shiftstringNomax 15 charsCustomer's work shift.
pay_frequencystringYesmax 15 charsCustomer's pay schedule.
last_paydatestringYesyyyy-mm-ddCustomer's most recent pay date.
next_paydatestringYesyyyy-mm-ddCustomer's next pay date.
second_next_paydatestringNoyyyy-mm-ddCustomer second pay date after the loan.
net_monthly_incomeintegerYesCustomer's net monthly income after taxes and other withholding.
gross_monthly_incomeintegerNoCustomer's gross monthly income before withholding.
bank_account_holderstringNomax 100 charsName of the holder of the bank account.
bank_namestringYes1-50 charsCustomer's bank name.
bank_phonestringNonumeric, max 13 charsPhone number of the customer's bank. Format: all numeric digits; no special characters.
bank_account_typestringYesmax 10 charsCustomer's type of bank account.
bank_routing_numberstringYesexactly 9 charsAmerican Bankers Association (ABA) routing number for the customer's bank. Format: all digits; no dashes (nnnnnnnnn).
bank_account_numberstringYes1-17 charsCustomer's bank account number.
bank_monthsintegerYesNumber of months the customer has had the bank account.
is_direct_depositbooleanYestrue or falseCustomer has direct deposit (true or false).
outstanding_amtnumberNoOutstanding balance of the customer on other loans.
reference_first_namestringNomax 30 charsReference's first name.
reference_last_namestringNomax 30 charsReference's last name.
reference_phonestringNonumeric, max 10 charsReference's phone number. Format: all numeric digits; no special characters.
reference_relationshipstringNomax 15 charsCustomer's relationship with the reference.
user_stringstringYesUser agent from the loan application.
sms_opt_inbooleanNotrue or falseIf the customer has opted in for SMS notifications.

Example Request#

curl --location "https://api.xrv3.lokyata.com/process-lp-lr-lead" \  --header "x-api-key: <provided-by-lokyata>" \  --header "Content-Type: application/json" \  --data-raw '{    "request_id": "AKLJOIUWF-956888340",    "bank_name": "ABCD bank",    "lead_provider_id": "LP",    "campaign_id": "lead_price_reject",    "affiliate_id": "342256601",    "affiliate_sub_id": "54321",    "lead_price": 4,    "application_website": "abcd.com",    "ip_address": "124.110.100.54",    "requested_amount": 500,    "ssn": "876543210",    "dob": "1994-03-07",    "gender": "Male",    "first_name": "Charlie",    "middle_initial": "A",    "last_name": "Chaplin",    "address": "123 Main Street",    "address2": "Apt 301",    "city": "Philadelphia",    "state": "PA",    "zip_code": "54465",    "home_phone": "1234567890",    "mobile_phone": "1357924680",    "work_phone": "9998887770",    "drivers_license_state": "PA",    "drivers_license_number": "10637365",    "contact_time": "Morning",    "is_military": false,    "residence_type": "Rent",    "email": "charliechappie@gmail.com",    "residence_months": 48,    "is_citizen": true,    "is_subscribed_future_offers": true,    "num_installments": 20,    "interest_rate": 60,    "language": "English",    "income_type": "Employed",    "payment_type": "Direct Deposit",    "employment_type": "Full Time",    "employment_months": 15,    "employer_name": "Anime Pub",    "employment_address": "west block, Clinton Lane",    "employment_address2": "1145, 8th floor, Empire Plaza",    "employment_city": "Philadelphia",    "employment_state": "PA",    "employment_zip_code": "54465",    "employer_phone": "9998887776",    "employment_phone_ext": null,    "employment_fax": null,    "supervisor_name": "William Hill",    "supervisor_phone": "1231231234",    "supervisor_phone_ext": null,    "job_title": "Bartender",    "work_shift": "First Shift",    "pay_frequency": "Twice-Monthly",    "last_paydate": "2021-05-29",    "next_paydate": "2021-06-14",    "second_next_paydate": "2021-06-29",    "net_monthly_income": 3500,    "gross_monthly_income": 3800,    "bank_account_holder": "Charlie Chaplin",    "bank_phone": "1112223330",    "bank_account_type": "Checking",    "bank_routing_number": "123456789",    "bank_account_number": "98765432",    "bank_months": 36,    "is_direct_deposit": true,    "outstanding_amt": 500,    "reference_first_name": "Jennifer",    "reference_last_name": "Lawrence",    "reference_phone": "1234567890",    "reference_relationship": "Spouse",    "user_string": "Mozilla/5.0 (Linux; Android 12; SM-S906N Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.119 Mobile Safari/537.36",    "sms_opt_in": true  }'

Response Structure#

Business accept, reject, and price decisions are returned in the response body. Normal business denials are not necessarily HTTP transport errors.

NameTypeDescription
request_idstring or nullRequest ID submitted by the lead provider.
decisionstringApproved when the lead can be purchased, or Denied when the lead is rejected.
commentstring or nullAdditional status or denial information.
redirect_urlstring or nullRedirect URL when one is available for an approved lead.
lead_provider_idstringLead provider ID from the request.
campaign_idstringCampaign ID from the request.
requested_pricenumber or nullLead price submitted in the request.
max_acceptable_pricenumber or nullMaximum price Lokyata is willing to pay when a lower price is suggested.
reject_reasonstring or nullMachine-readable rejection reason when available.
timestampstringResponse timestamp in ISO 8601 format when available.

Sample Responses#

Accepted Lead#

{  "request_id": "AKLJOIUWF-956888340",  "decision": "Approved",  "comment": null,  "redirect_url": null,  "lead_provider_id": "LP",  "campaign_id": "lead_price_reject",  "requested_price": 5,  "max_acceptable_price": null,  "reject_reason": null,  "timestamp": "2026-06-01T00:00:00+00:00"}

Rejected Lead With Suggested Price#

{  "request_id": "AKLJOIUWF-956888340",  "decision": "Denied",  "comment": "Lead price (25.0) is higher than suggested max price (5.0)",  "redirect_url": null,  "lead_provider_id": "LP",  "campaign_id": "lead_price_reject",  "requested_price": 25,  "max_acceptable_price": 5,  "reject_reason": "Lead price exceeds threshold",  "timestamp": "2026-06-01T00:00:00+00:00"}

Accepted Lead After Suggested Price#

If the lead provider submits the same request_id again with lead_price at or below max_acceptable_price, the lead can be accepted. The response is the same shape as an accepted lead on the first try.

{  "request_id": "AKLJOIUWF-956888340",  "decision": "Approved",  "comment": null,  "redirect_url": null,  "lead_provider_id": "LP",  "campaign_id": "lead_price_reject",  "requested_price": 5,  "max_acceptable_price": null,  "reject_reason": null,  "timestamp": "2026-06-01T00:01:00+00:00"}

Denied Lead#

{  "request_id": "AKLJOIUWF-956888340",  "decision": "Denied",  "comment": "This request_id is already present in Lokyata system. Please provide a unique request_id.",  "redirect_url": null,  "lead_provider_id": "LP",  "campaign_id": "lead_price_reject",  "requested_price": 5,  "max_acceptable_price": null,  "reject_reason": null,  "timestamp": "2026-06-01T00:00:00+00:00"}

Invalid JSON#

{  "request_id": null,  "decision": "Denied",  "comment": "Invalid JSON",  "redirect_url": null}

Missing API Key#

{  "decision": "DENY",  "comment": "Input Validation Failed",  "validation_errors": [    {      "field": "x-api-key",      "reason": "Field required"    }  ]}

Comments - Additional Messages#

Based on the request, campaign, workflow, and price-suggestion configuration for the client, the API can return the following messages in the "comment" field. Workflow-level underwriting rules can also return client-specific denial reasons.

Status MessageDescription/Notes
Invalid Lead ProviderThe API key and lead_provider_id did not resolve to an active Lead Buy portfolio.
This request_id is already present in Lokyata system. Please provide a unique request_id.The submitted request_id has already been evaluated and cannot be reused unless it is fulfilling an active lead-price suggestion.
Invalid Campaign Id: <campaign_id>The submitted campaign_id did not resolve to an active workflow for the portfolio.
Lead price (<lead_price>) is higher than suggested max price (<suggested_price>)The workflow calculated a maximum acceptable price and the submitted price was higher. The response includes max_acceptable_price.
Lead price (<lead_price>) is higher than last suggested price (<suggested_price>)The lead provider resubmitted the same request_id, but the new lead_price was still above the stored suggested price.

When Campaign Throttling Is Enabled#

If campaign throttling is enabled for the client, the API can deny a lead when the portfolio or campaign is inactive, or when the configured campaign capacity has been reached.

Message PatternDescription/Notes
Not Accepting Leads - Portfolio Not ActiveThe portfolio is not accepting leads.
Not Accepting Leads - Campaign Not ActiveThe campaign is not accepting leads.
Not Accepting Leads - Profile Not ActiveThe configured campaign profile is not accepting leads.
Not Accepting Leads - Profile Day Not Active
Not Accepting Leads - Profile Out of Window
Not Accepting Leads - No Active Group
The lead was submitted outside an active configured schedule window.
Not Accepting Leads - <Campaign/Profile/Group> Daily Cap ReachedA configured daily capacity limit has been reached.
Not Accepting Leads - <Profile/Group> Hourly Cap Reached (Resets in <n> mins)A configured hourly capacity limit has been reached.
Not Accepting Leads - <Profile/Group> Hourly Deadzone (Ends in <n> mins)A configured hourly pause window is active before hourly tracking resumes.