Ping Post – Full shared

API 2.0 Specifications for Auto

Introduction

This document describes how to post full shared auto leads to PX using ping post. We accept POST requests in XML and JSON. Follow this article to read how ping post works in PX.

Posting URL

Before leads can be posted into PX’s live environment, tests need to be performed to ensure success. For testing purposes, PX will set the publisher campaign to a test mode during the integration. All the tests and responses on these tests can be found in the Test leads report.

Ping URL: https://leadapi.px.com/api/lead/ping

Post URL: https://leadapi.px.com/api/lead/post

Forcing a success: When 90100 zip code is used in the staging environment, the API will respond with success if the API is configured correctly.

Once a lead has been successfully posted and proper posting is confirmed by PX, leads can be posted to the live environment. To post into the live environment, PX will set the publisher campaign to the production mode after approving the successful test.

 

Header Fields Table

KeyRequiredValue
Content-TypeYesApplication/json for JSON requests
Application/xml for XML requests
AcceptNoApplication/json for JSON response
Application/xml for XML response

Examples

Fields Table

ParameterRequired PingRequired PostAccepted ValuesDescription (data type)
ApiTokenYesYesProvided by PXGUID format
VerticalYesYesAutoString
SubIdYesYesFormat provided at startString
Sub2IdNoNo String
Sub3IdNoNo String
Sub4IdNoNo String
Sub5IdNoNo String
UserAgentYesYes String
OriginalURLYesYesURL where the lead is fromString
SourceYesYesDiscuss with Acc. ManagerString
JornayaLeadIdYesYesJornaya LeadId (GUID format)See link on how to implement on form
Trustedform
NoNoTrustedForm Cert. URLSee link on how to implement on form
ClickConsentIDNoNoInteger
SessionLengthYesYesAmount of time spent by the user to fill out the form in seconds Integer
TcpaTextYesYesConsent languageString
VerifyAddressNoNoTrue / FalseString
TransactionIdNoYesRetrieve from Ping ResponseGUID format
FirstName No Yes String
LastNameNoYesString
AddressNoYesString
CityNoYesString
StateYesYes See accepted values listString
ZipCodeYesYes 5 digit zip codeString
EmailAddressNoYes Valid email addressString
PhoneNumberNoYes Valid 10 digit phone number without formatting 8887777777Integer
DayPhoneNumberNoYes Valid 10 digit phone number without formatting 8887777777Integer
IpAddressYesYes Example: 38.88.150.2Integer
ResidenceTypeNo
Yes
Dorm / Student housing / I am renting / My own house / Other / With my parentsString
YearsAtResidenceNo
No
See accepted valuesInteger
MonthsAtResidenceNo
Yes
Integer
FirstNameNoYesString
LastNameNoYesString
BirthDateYesYesyyyy-MM-ddString
MaritalStatusYesYesDivorced / Married / Separated / Single / WidowedString
RelationshipToApplicantNoNoSee accepted valuesString
GenderYesYesMale / FemaleString
LicenseStateYesYes String
AgeLicensedYesYes >= 16Integer
LicenseStatusYesYes Current / Expired / Permit / Suspended String
LicenseEverSuspendedRevokedYesYesYes / NoBoolean
OccupationNoNoSee accepted valuesString
YearsAtEmployerNoNo Integer
EducationNoNoSee accepted valuesString
RequiresSR22FilingYesYesYes / NoBoolean
CreditRatingYesYesExcellent / Good / Some Problems / Major ProblemsString
Date Yes when ViolationYes when Violation
yyyy-MM-ddVilolation date (String)
Description Yes when ViolationYes when Violation
See accepted valuesViolation description (String)
Date Yes when MajorViolationYes when MajorViolation
yyyy-MM-ddMajor violation date (String)
DescriptionYes when MajorViolationYes when MajorViolation
See accepted valuesMajor violation description (String)
StateNoNoSee accepted valuesString
Date Yes when AccidentYes when Accident
yyyy-MM-ddString
DescriptionYes when AccidentYes when Accident
See accepted valuesString
AtFaultYes when AccidentYes when Accident
Yes / NoBoolean
Damage Yes when AccidentYes when Accident
People / Property / Both / NotApplicableString
Amount Yes when AccidentYes when Accident
Integer
DateYes when ClaimYes when Claim
yyyy-MM-ddString
DescriptionYes when ClaimYes when Claim
See accepted valuesString
PaidAmount NoNoString
Damage Yes when ClaimYes when Claim
People / Property / Both / NotApplicableString
Field1NoNoFree text fieldString
Field2NoNoFree text fieldString
Field3NoNoFree text fieldString
Field4NoNoFree text fieldString
Field5NoNoFree text fieldString
Field6NoNoFree text fieldString
Field7NoNoFree text fieldString
Field8NoNoFree text fieldString
Field9NoNoFree text fieldString
Field10NoNoFree text fieldString
VINNoNoUse either 17 position VIN (e.g. 1N6BD06T070000000 or 1N6BD06T*7*******) or Year/Make/ModelString
YearYesYesyyyyString
MakeYesYesString
ModelYesYesString
SubModelNoNoString
WeeklyCommuteDaysNoNoMax 7Integer
GarageYesYesNo Cover / Car Port / Full Garage / On StreetString
OwnershipYesYesYes / NoBoolean
PrimaryUseYesYesSee accepted valuesString
AnnualMilesYesYes2500 / 7500 / 12500 / 1500String
ComprehensiveDeductibleNoNo100 / 250 / 500 / 1000String
OneWayDistanceNoNoSee accepted valuesString
CollisionDeductibleNoNo100 / 250 / 500 / 1000String
InsuranceCompanyYesYesSee accepted valuesString
ExpirationDateYesYesyyyy-MM-ddString
InsuredSinceYesYesyyyy-MM-ddString
CoverageTypeYesYesSuperior Protection / Standard Protection /
Basic Protection / State Minimum
String
BodilyInjuryYesYesSee accepted valuesString
PropertyDamageNoNoString
InterestedInHomeInsuranceNoNoYes/NoString
OpenSlotsYesNoString
See explanation on full shared
IncludeNoYesString
See explanation on full shared
NameYes, if Hash is not usedYes, if Hash is not usedLeg nameString
See explanation on full shared
HashYes, if Name is not usedYes, if Name is not usedSHA-1 Hashed leg nameString
See explanation on full shared

Responses

PX responds with accurate feedback on how to update your request for it to be accepted by the API.


Success – Ping



{
    "TransactionId": "394d89a8-fae9-4a08-92cd-b5bf97f8455e",
    "Success": true,
    "Payout": null,
    "Message": null,
    "Errors": null,
    "Sold": null,
    "RedirectUrl": null,
    "BuyerRawResponse": null,
    "Environment": "Testing",
    "Legs": [
        {
            "Name": null,
            "Hash": "462c49f8-9288-4d7a-aab6-48a6406a0d82",
            "Payout": 12.34,
            "Status": "Success"
        },
        {
            "Name": null,
            "Hash": "cb3be58b-ef2f-4b5d-8418-e68f3c5872ee",
            "Payout": 23.45,
            "Status": "Success"
        },
        {
            "Name": null,
            "Hash": "303e7ec3-589f-497e-9107-2c04efaac98e",
            "Payout": 34.56,
            "Status": "Success"
        }
    ]
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <TransactionId>643fd719-bd29-4825-b859-e172bc31acf1</TransactionId>
   <Success>true</Success>
   <Payout xsi:nil="true" />
   <Sold xsi:nil="true" />
   <Environment>Testing</Environment>
   <Legs>
      <Leg>
         <Hash>f37eff48-6f79-4174-b770-9c6ed7166d1f</Hash>
         <Payout>12.34</Payout>
         <Status>Success</Status>
      </Leg>
      <Leg>
         <Hash>adc73637-6c51-446d-8b03-c1ef1d7aa94e</Hash>
         <Payout>23.45</Payout>
         <Status>Success</Status>
      </Leg>
      <Leg>
         <Hash>df053300-a1cc-4e4b-8423-4abcca644e72</Hash>
         <Payout>34.56</Payout>
         <Status>Success</Status>
      </Leg>
   </Legs>
</Result>

Success – Post


{
    "TransactionId": "394d89a8-fae9-4a08-92cd-b5bf97f8455e",
    "Success": true,
    "Payout": null,
    "Message": null,
    "Errors": null,
    "Sold": null,
    "RedirectUrl": null,
    "BuyerRawResponse": null,
    "Environment": "Testing",
    "Legs": [
        {
            "Name": null,
            "Hash": "ebd3d4aa-d3dc-448a-9947-034b1dbd3c65",
            "Payout": 12.34,
            "Status": "Success"
        },
        {
            "Name": null,
            "Hash": "3d4c2e34-17d9-4c65-9094-9aa6682f6a82",
            "Payout": 23.45,
            "Status": "Success"
        },
        {
            "Name": null,
            "Hash": "7940786d-5f2d-48f4-a896-9bd53bb9c6f8",
            "Payout": 34.56,
            "Status": "Success"
        }
    ]
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <TransactionId>790B52B0-FE5D-48E3-B81C-91992017A659</TransactionId>
   <Success>true</Success>
   <Payout xsi:nil="true" />
   <Sold xsi:nil="true" />
   <Environment>Testing</Environment>
   <Legs>
      <Leg>
         <Hash>e3f54b53-39f0-4fd7-ad9c-3786ba5cafc1</Hash>
         <Payout>12.34</Payout>
         <Status>Success</Status>
      </Leg>
      <Leg>
         <Hash>764d649e-0c7f-4274-8558-3aba963c28e2</Hash>
         <Payout>23.45</Payout>
         <Status>Success</Status>
      </Leg>
      <Leg>
         <Hash>be713280-abb4-4975-8c78-ae2921a4cc9c</Hash>
         <Payout>34.56</Payout>
         <Status>Success</Status>
      </Leg>
   </Legs>
</Result>



Failure


{
    "TransactionId": "49CE4DB7-775B-405B-BBBD-B23FB003073A",
    "Success": false,
    "Payout": null,
    "Message": "BadRequest",
    "Errors": [
        "'License Status' must not be empty.",
        "'License Status' must be one of Current, Expired, Permit, Suspended. Your value is ''."
    ]
    "Sold": null,
    "RedirectUrl": null,
    "BuyerRawResponse": null,
    "Environment": null,
    "Legs": null
}


<?xml version="1.0" encoding="UTF-8"?>
<Result xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <TransactionId>49CE4DB7-775B-405B-BBBD-B23FB003073A</TransactionId>
   <Success>false</Success>
   <Payout xsi:nil="true" />
   <Message>BadRequest</Message>
   <Errors>
      
      <string>'License Status' must not be empty.</string> 
      <string>'License Status' must be one of Current, Expired, Permit, Suspended. Your value is ''.</string>
   </Errors>
   <Sold xsi:nil="true" />
</Result>

The responses from our API shows if a Ping/Post has been successful or not, and if the lead wasn’t successful, why the Ping/Post has been rejected.

  • The “Message” parameter gives a general error code.
  • The “Errors” parameter gives the specific cause of the error, such as an invalid or missing value for a specific field.

If the Ping/Post was unsuccessful, the Payout and Sold field will show a “Null” value.

States

ALAKAZARCACOCTDEFLGA
HIIDILINIAKSKYLAMEMD
MAMIMNMSMOMTNENVNHNJ
NMNYNCNDOHOKORPARISC
SDTNTXUTVTVAWAWVWIWY

Accident.Description

  • Collided with another car
  • Hit an obstruction. Single car accident
  • Hit by another person
  • Hit while stopped
  • Hit a pedestrian
  • Other Unlisted Accident
  • Rearended by another person
  • VehicleHitProperty
  • VehicleDamagedAvoidingAccident
  • OtherVehicleHitYours
  • AtFaultAccidentNotListed
  • NotAtFaultAccidentNotListed

Claim.Description

  • Act of Nature
  • Car fire
  • Flood damage
  • Hail damage
  • Hit an animal
  • Other Unlisted Claim
  • Theft of stereo
  • Theft of vehicle
  • Towing service
  • Vandalism
  • Windshield Replacement
  • AutoCylinders

BodilyInjury

  • 25/50
  • 50/100
  • 100/300
  • 250/500
  • 300,000
  • 500,000

Occupation

  • Employeed
  • Government
  • Homemaker
  • Retired
  • Student Living w/ Parents
  • Student not Living w/ Parents
  • Unemployed
  • Sales
  • Marketing
  • IT
  • Medical
  • Unknown
  • BusinessOwner
  • Student
  • SalesInside
  • SalesOutside
  • Scientist
  • OtherTechnical
  • MilitaryEnlisted
  • Architect
  • Other

Education

  • Bachelors Degree
  • Doctorate Degree
  • High school diploma
  • Masters Degree
  • Other
  • None
  • Some College
  • Associate Degree
  • Marketing
  • IT
  • Medical
  • Unknown
  • BusinessOwner
  • Student
  • SalesInside
  • SalesOutside
  • Scientist
  • OtherTechnical
  • MilitaryEnlisted
  • Architect
  • Other

OneWayDistance

  • 0
  • 1-3
  • 4-5
  • 6-9
  • 10-19
  • 20-49
  • 50+

PrimaryUse

  • Commute To/From Work
  • Commute To/From School
  • Business Individual
  • Business Corporate
  • Pleasure
  • Farm
  • Government

InsuranceCompany

  • 21st Century Insurance
  • AAA
  • AIG
  • Alfa Insurance
  • Allied
  • Allstate
  • American Alliance Insurance
  • American Deposit Insurance
  • American Family
  • American Family Insurance
  • American Home Assurance
  • American International Insurance
  • American International Pacific
  • American Motorists Insurance
  • American National
  • American Premier Insurance
  • American Protection Insurance
  • American Skyline Insurance
  • Amica
  • Arbella
  • Assurant
  • Atlanta Casualty
  • Atlantic Indemnity
  • Auto Club Insurance Company
  • Owners Insurance
  • Bristol West Insurance
  • California State Automobile Association
  • Chubb
  • Citizens
  • Clarendon Insurance
  • Clearcover
  • CNA
  • Company not listed
  • Cotton States
  • COUNTRY Financial
  • Country Insurance and Financial Services
  • CSE Insurance Group
  • Currently not insured
  • Dairyland Insurance
  • Direct auto
  • Electric Insurance
  • Elephant Insurance
  • Encova Insurance
  • Erie Insurance
  • Esurance
  • Farm Bureau
  • Farmers
  • Foremost
  • GAINSCO
  • Geico
  • Guaranty National Insurance
  • Hanover Insurance Group
  • Hugo Insurance
  • Infinity Insurance
  • Kemper
  • Leader Insurance
  • Liberty Mutual
  • MAPFRE Insurance
  • Maryland Casualty
  • Mercury Insurance
  • MetLife Auto and Home
  • Mid Century Insurance
  • Mile Auto
  • National General Insurance
  • National Union Fire Insurance
  • Nationwide
  • NJM Insurance
  • Omni Insurance
  • Orion Insurance
  • Pacific Insurance
  • Pafco General Insurance
  • Patriot General Insurance
  • Peak Property and Casualty Insurance
  • PEMCO Insurance
  • Plymouth Rock Assurance
  • Progressive
  • Prudential Guarantee
  • Republic Indemnity
  • Response Insurance
  • Root Insurance
  • SafeAuto
  • SAFECO Insurance
  • Safeway Insurance
  • Security Insurance
  • Sentinel Insurance
  • Sentry Insurance
  • Shelter Insurance
  • St. Paul Insurance
  • State Farm
  • Stillwater Insurance
  • The General
  • The Hartford
  • Titan
  • Travelers Insurance
  • Twin City Fire Insurance
  • Unitrin Direct (now Kemper Direct)
  • USAA
  • USF&G (United States Fidelity and Guaranty)
  • Viking Insurance
  • Wawanesa Insurance
  • Western Mutual
  • Windsor Insurance
  • Zurich North America

RelationshipToApplicant

  • Self
  • Spouse
  • Child
  • Sibling
  • Parent
  • Grandparent
  • Grandchild
  • Other

YearsAtResidence

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 15
  • 20
  • 25
  • 30

Violation.Description

  • Careless driving
  • Carpool lane violation
  • Child not in car seat
  • Defective Equipment
  • Defective vehicle (reduced violation)
  • Driving without a license
  • Excessive noise
  • Exhibition driving
  • Expired drivers license
  • Expired emmissions
  • Expired Registration
  • Failure to obey traffic signal
  • Failure to signal
  • Failure to stop
  • Failure to yield
  • Following too close
  • Illegal lane change
  • Illegal passing
  • Illegal turn
  • Illegal turn on red
  • Illegal U Turn
  • Inattentive driving
  • No helmet
  • No insurance
  • No seatbelt
  • Passing a school bus
  • Passing in a no-passing zone
  • Passing on shoulder
  • Ran a red light
  • Ran a stop sign
  • Reckless driving
  • Reckless endangerment
  • Wrong way on a one way
  • Other Unlisted Moving Violation
  • Driving too fast for conditions

MajorViolation.Description

  • DUI/DWAI
  • License was suspended
  • Minor in possession
  • Open container
  • Drug possession
  • DrivingWhileUnderTheInfluenceOfDrugs
  • DrivingUnderInfluenceOfAlcolholOrWhileIntoxicated
  • DrivingUnderInfluenceOfAlcolholOrWhileIntoxicated

Implementing Jornaya LeadId

To start generating the Jornaya LeadId token on your leads from your page, a script needs to be added to your website. Follow the guidance on how to implement this script.

Implementing TrustedForm

To start generating the TrustedForm CertURL on your leads from your page, a script needs to be added to your website. Follow the guidance on how to implement this script.

Full Shared

PX provides you with the ability to sell us a specific leg only. On the ping response we will tell you the bid per every leg (by name or hashed), and, in the response, should this price be satisfactory for you, you can initiate the post and thus selling us that leg – all through one API ping/post call.

Parameters explained

  • OpenSlots – This indicates how many times the lead can still be sold by PX
  • Include/Exclude – What action will PX take on this lead? For Full Shared it will always be include since we are including this buyer in the bidding process.
  • Name – This is the leg name of the buyer.
  • Hash – This is the hashed leg name of the buyer. Hashing is done using the
  • SHA-1 hashing method. The hashed value needs to be the buyer’s 1800 phone number.

Full Shared Lead Flow

  • Publisher pings PX with a ping request
  • PX responds with bids per buyer
  • Publisher decides which buyers to include on the post and forms the post request including the buyer’s leg / hashed leg names
  • PX responds with the result of the sale per leg name.

Lost bids

This request is initiated after the ping response is received and instructs our API what price the lead has been sold when our bid was lower. This helps us and our lead buyers to optimize the bids.
Lost bids Post URL: https://secureopenapi.px.com/px

Code examples


Post
<?xml version="1.0" encoding="utf-8"?>
<LeadData Target="Lead.RejectWinner" Partner="{Username}" Password="{password}" AffiliateId="{PublisherID}">
    <Payout>{payout}</Payout>
    <TransactionId>{TransactionId}</TransactionId>
</LeadData>


Post
{
    "type": "jsonwsp/request", 
    "version": "1.0", 
    "methodname": "Lead.RejectWinner", 
    "LeadData":
    {
        "Target" : "Lead.RejectWinner",
        "Partner" : "{Username}",
        "Password" : "{Password}",
        "AffiliateId" : "{PublisherID}",
        "Payout" : "{Payout}",
        "TransactionId" : "{TransactionId}"
    }
}

In addition, HTTP format can be used:

Post
https://secureopenapi.px.com/px?Command=HTTPPost&Target=Lead.RejectWinner&Partner={Username}&Password={Password}&AffiliateId={PublisherID}&Payout={Payout}&TransactiondId={TransactionId}

 

Fields table

ParameterExplanationDescription (data type)
Target=”Lead.RejectWinner”This indicates that my system needs to treat this request as a price update and not a normal leadString
PartnerThe username used to login the account, specifically the account for this campaign (Not MasterAccount)String
PasswordThe password used to login the account, specifically the account for this campaign (Not MasterAccount) 
AffiliateIdThe publisherID provided at the start of the integrationString
PayoutThe price you sold the lead for to another buyer / the price we lost the lead toString
TransactionIdThe same as you would on the post. We return a TransactionId on the ping and you return this here to match ping with the lost bid. Should you have problems retrieving our TransactionId from the response it is also possible to parse your own unique id on the ping in the TransactionId parameter.String