Astoria Company Life Insurance (Shared / Bid On Legs) Integration Instructions


Contents

IMPORTANT NOTE: PLEASE ENSURE YOU CAREFULLY FOLLOW THE TESTING INSTRUCTIONS ONCE YOU'VE COMPLETED THE INTEGRATION!




Introduction to Ping/Post

Life Insurance (Shared / Bid On Legs) is a two-step integration process. Commonly, it is referred to as ping/post, i.e. first you send us a 'ping' (all data EXCEPT PII) and we respond with a bid (or outright rejection). Assuming we are the winning bidder, you would then 'post' the lead data (this time including PII), along with the <confirmation> code you received in the ping response.

Please review the following to complete the integration. When you believe you are ready, please follow these steps to test your integration, and then email us at tech@astoriacompany.com

Back to contents




Introduction to Bid on Legs (BoL)

Bid on Legs (BoL) is a variation of ping/post. By adding a simple parameter to your 'ping' request, our system responses will be altered to bid on specific 'legs' of a lead for a given carrier on agent. Assuming we are the winning bidder, you would then 'post' the lead data (this time including PII), along with the <confirmation> code you received in the ping response AND the information about which 'legs' we won.

Back to contents




Help / Support

For help or support, or if you have any questions during the integration, please email us at tech@astoriacompany.com

Back to contents




Ping:

What is a Ping?

A Ping is a call to our API with all of the lead data EXCEPT the PII. It's purpose is to determine if there is any interest in purchasing the lead, and if there is, to establish the price we would be willing to pay if a subsequent Post for the same lead is accepted.

IMPORTANT NOTE: TO ENSURE YOUR ACCOUNT IS NOT TEMPORARILY SUSPENDED BY OUR AUTO-THROTTLING MECHANISM, PLEASE DO NOT EXCEED 300 PINGS IN ANY 5 MINUTE PERIOD.

Field names and acceptable values

The absence of any required field (Required) will result in an error. If you do not collect the data for a required field, please refer to the 'Suggested Default' column.
Preferred fields (Preferred) may be omitted, but doing so could reduce a lead's chances of finding a buyer.
Optional fields (Optional) can be omitted without any major impact.

Field Contents Suggested Default Required?
bid_on_leg Determines that this is a Bid on Legs (BoL) lead.
MUST be '1' to receive a BoL formatted response.
1 Required
lead_type Determines the type of lead.
MUST be '19' for Life Insurance (Shared / Bid On Legs)
19 Required
lead_mode Determines if the lead should be treated as a test lead or a live lead.
0 = TEST LEAD
1 = LIVE LEAD
Click here for full testing instructions.
Required
vendor_id This is the VID code you were provided by Astoria; if you do not know it, please contact us.
Please ensure you are using the correct code, otherwise your leads may be credited to another partner!
Required
sub_id Code of your choosing for your own tracking purposes, e.g. '123-ABC'
This should enable us to distinguish your lead sources from each other, so that we can optimize lead flow to buyers.
There is a maximum length of 35 characters, and it may only contain letters, numbers, underscores and hyphens.
Required
tcpa_optin Indicates whether or not the consumer was presented with, and accepted, unambiguous consent to be contacted via automated telephone systems pursuant to TCPA requirements.
0 = No
1 = Yes
Click here for more information.
0 Required
tcpa_text Contains the TCPA language the consumer was presented with on the form where their information was submitted,
e.g. 'By submitting this form…'
Click here for more information.
Required
universal_leadid Unique LeadiD as generated by LeadiD.com,
e.g. '4F4DEAB5-95BC-C39D-4375-46291D95297A'
Required
origination_datetime Date/time when lead was submitted by consumer, in format 'YYYY-MM-DD hh:mm:ss',
e.g. '2019-06-24 17:04:04'
Required
origination_timezone The timezone for the date/time passed in origination_datetime.
1 = EST / EDT
2 = CST / CDT
3 = MST / MDT
4 = PST / PDT
Required
ipaddress Applicants IP address, e.g. '34.228.194.177' Required
user_agent The user agent string for the browser used by the applicant when their information was submitted,
e.g. 'CCBot/2.0 (https://commoncrawl.org/faq/)'
Preferred
vendor_lead_id Your internal ID for this lead (useful if we need to contact you about a specific lead and when processing returns),
e.g. '8972174'
Preferred
url URL of form where lead was generated, e.g. 'http://ratechecker.com/life-insurance/' Preferred
minimum_price Minimum price you would accept for this lead, no $ symbol or commas, e.g. '2.00'
NOTE: For test leads (i.e. where lead_mode=0), our 'buyers' return very low prices (for safety). If you choose to include this optional parameter, then please set it to just '0.01' when testing to ensure you receive the expected responses.
WARNING: Setting a minimum_price will cause you to sell fewer leads!
Optional
zip Valid 5-digit US Zip Code.
Can be used when lead_mode=0 to influence test results.
Click here for full testing instructions.
Required
phone_last_4 Last 4 digits of primary_phone.
REQUESTED ON PING ONLY! REQUIRED by one of our largest buyers.
Preferred
residence_type Applicants residence status.
0 = Own
1 = Rent
1 Required
years_at_residence Applicants years at residence.
0 = 0 Years
1 = 1 Year
2 = 2 Years
3 = 3 Years
4 = 4 Years
5 = 5 Years
6 = 6 Years
7 = 7 Years
8 = 8 Years
9 = 9 Years
10 = 10 or more Years
3 Required
months_at_residence Applicants months at residence.
0 = 0 Months
1 = 1 Month
2 = 2 Months
3 = 3 Months
4 = 4 Months
5 = 5 Months
6 = 6 Months
7 = 7 Months
8 = 8 Months
9 = 9 Months
10 = 10 Months
11 = 11 Months
0 Required
dob Applicants date of birth, in the format YYYY-MM-DD, e.g. '1994-04-18' Required
gender Applicants gender.
0 = Male
1 = Female
0 Required
marital_status Applicants marital status.
1 = Single
2 = Married
3 = Separated
4 = Divorced
5 = Domestic Partner
6 = Widowed
1 Required
education_level Applicants education level - see Education Level Values 3 Required
occupation Applicants occupation - see Occupation Values 123 Required
student Is applicant a Student?
0 = No
1 = Yes
0 Required
height_feet Applicants Height (Feet)
Either 4, 5, 6 or 7.
5 Required
height_inches Applicants Height (Inches)
From 1 to 11.
8 Required
weight Applicants Weight (lbs)
Maximum 3 digits, no dashes or spaces
180 Required
dui Does applicant have any DUIs?
0 = No
1 = Yes
0 Required
policy_for Who is this Policy for?
1 = Self
2 = Spouse
3 = Child
4 = Parent
5 = Other
1 Required
previously_denied Has applicant been previously denied Life Insurance?
0 = No
1 = Yes
0 Required
hazard_pilot Does applicant pilot small aircraft?
0 = No
1 = Yes
0 Required
hazard_felony Does applicant have a felony?
0 = No
1 = Yes
0 Required
hazard_other Does applicant participate in any other hazardous activities, e.g. skydiving, scuba diving, etc?
0 = No
1 = Yes
0 Required
is_smoker Is applicant a smoker?
0 = No
1 = Yes
0 Required
expectant_parent Is applicant an Expectant Parent?
0 = No
1 = Yes
0 Required
relative_heart Does applicant have any close relative with a Heart Condition?
0 = No
1 = Yes
0 Required
relative_cancer Does applicant have any close relative with Cancer?
0 = No
1 = Yes
0 Required
hospitalized Has applicant been hospitalized for any health issue?
0 = No
1 = Yes
0 Required
ongoing_medical_treatment Is applicants recieving any ongoing medical treatment?
0 = No
1 = Yes
0 Required
requested_coverage_type Requested Coverage Type
See Requested Coverage Type Values
Required
insurance_amount Insurance Amount
5000 (five thousand) to 2500000 (two million, five hundred thousand) - no $, commas, or decimals
Required
CoverageTerm Coverage Term - see Current Coverage Term Values 7 Required
haveInsurance Indicates whether applicant has a current life insurance policy or not.
0 = No
1 = Yes
0 Required

If haveInsurance = 1 (Yes) then the following fields are required.

CurrentCoverageType Current Coverage Type - see Current Coverage Type Values Required
current_insurance_company Applicants current insurance company - see Current Insurance Company Values
Note that we do NOT recommend a default mapping of '1' (Company Not Listed) for this field as doing so will result in very few leads being accepted.
1 Required
current_policy_expiration_date Applicants current policy expiration date, in the format YYYY-MM-DD, e.g. '2019-07-08'
Note: Could be the current date, or a future date.
Required
insured_since_date Date applicant has carried life insurance since, in the format YYYY-MM-DD, e.g. '2019-01-07'
Note: Should be a date in the past.
Required
treated Treated - see Current Treated Values 1 Required

Sending a Ping Request

Ping Request Using HTTP/1.1 POST

Our PING URL is https://api.astoriacompany.com/v2/ping/. Please do not begin posting with lead_mode=1 until we have manually verified your test data (in addition to our automatic validation process), and we've explicitly notified you that your campaign has been activated within our system. Any leads posted to the live address while your campaign is still in test mode will return an error and neither be counted nor returned.

The data in the request should be URLENCODED to ensure it is received as intended.

Example Request

URL: https://api.astoriacompany.com/v2/ping/
Content-Type: application/x-www-form-urlencoded

bid_on_legs=1&lead_type=19&lead_mode=0&vendor_id=76&sub_id=6&tcpa_optin=1&tcpa_text=By+submitting+this+form...&universal_leadid=4F4DEAB5-95BC-C39D-4375-46291D95297A&origination_datetime=2019-06-24+17%3A04%3A04&origination_timezone=1&ipaddress=34.228.194.177&user_agent=CCBot%2F2.0+%28https%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&vendor_lead_id=8972174&url=http%3A%2F%2Fratechecker.com%2Flife-insurance%2F&zip=35222&residence_type=1&years_at_residence=3&months_at_residence=0&dob=1994-04-18&gender=0&marital_status=1&education_level=3&occupation=123&student=0&height_feet=5&height_inches=8&weight=180&medical_condition=0&dui=0&previously_denied=0&is_smoker=0&expectant_parent=0&relative_heart=0&relative_cancer=0&requested_coverage_type=1&policy_for=1&hazard_pilot=0&hazard_felony=0&hazard_other=0&hospitalized=0&ongoing_medical_treatment=0&insurance_amount=50000&CoverageTerm=7&treated=1&haveInsurance=0

Back to contents




Ping Responses

This is exact text that will definitely be present.
This indicates variable data, or nodes that may or may not be present.

Accept:

NOTE: An 'Accepted' response on the PING does NOT indicate we purchased the lead, but ONLY that the lead has passed validation, has not been identified as a duplicate, and that we are responding with a bid for that lead. The 'Response' tag will always contain 'Accepted', but the 'Confirmation' code will differ for each response, and the 'LegPrice' may differ for each 'Leg'.

<PingResponse>
<Response>Accepted</Response>
<Confirmation>12345678901</Confirmation>
<Price>11.73</Price>
<Legs>
		<Leg>
			<LegID>222</LegID>
			<LegPrice>5.41</LegPrice>
			<CarrierID>85</CarrierID>
			<CarrierName>Farmers Union</CarrierName>
			<LicenseNumber/>
		</Leg>
		<Leg>
			<LegID>223</LegID>
			<LegPrice>6.32</LegPrice>
			<CarrierID>0</CarrierID>
			<CarrierName>Independent</CarrierName>
			<LicenseNumber>149340</LicenseNumber>
		</Leg>
</Legs>
</PingResponse>

Reject:

NOTE: There are many reasons why we might reject a ping - below you will see all the possible rejection responses. The 'Response' tag will always contain 'Rejected', and the 'Price' will always be '0.00'. The 'Confirmation' code will differ for each response.

For rejected responses, we also add two extra tags: 'Reason' tells you why the lead was rejected, and 'Message' gives some more descriptive text.

Also, where 'Reason' is 'Errors Detected', we add an 'Errors' section with a separate 'Error' node for each error - see the example below! This is designed to help you troubleshoot and fix any errors found.

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>No Buyers Found</Reason>
<Message>There were no buyers available to bid on this lead</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>No Buyers Found</Reason>
<Message>Bids do not meet minimum_price requirement</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Maintenance Mode</Reason>
<Message>Our system is currently in maintenance mode</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Post data is empty</Reason>
<Message>Please check your integration</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_type</Reason>
<Message>Please pass a valid lead_type as per our specs</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_type for this vendor_id</Reason>
<Message>You are not currently approved to send leads of the given lead_type</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_mode</Reason>
<Message>Please ensure lead_mode is either '0' for TEST or '1' for LIVE</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid vendor_id</Reason>
<Message>Please check the vendor_id is correct</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Provided vendor_id is in TEST MODE</Reason>
<Message>Please contact us if you believe your account should be in LIVE MODE</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Daily Cap Exhausted</Reason>
<Message>Please contact us to increase your daily cap</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Per Minute Cap Exhausted</Reason>
<Message>Please contact us to increase your per minute cap</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Errors Detected</Reason>
<Message>The following errors were detected in this lead:</Message>
<Errors>
<Error>1</Error>
<Error>2</Error>
<Error>3</Error>
</Errors>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Duplicate Lead</Reason>
<Message>Lead was identified as a duplicate in our system</Message>
<Legs/>
</PingResponse>

<PingResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Blacklisted Data</Reason>
<Message>The lead matches data on our internal blacklist - please investigate the lead source</Message>
<Legs/>
</PingResponse>

Back to contents




Sample Ping Code

Here is some sample PHP code to help you create your call to our API. This is simple stuff, so you should be able to readily convery it into another programming language if necessary.

$apiUrl = 'https://api.astoriacompany.com/v2/ping/';

$headers = array('Content-Type: application/x-www-form-urlencoded');

$request = 'bid_on_legs=1&lead_type=19&lead_mode=0&vendor_id=76&sub_id=6&tcpa_optin=1&tcpa_text=By+submitting+this+form...&universal_leadid=4F4DEAB5-95BC-C39D-4375-46291D95297A&origination_datetime=2019-06-24+17%3A04%3A04&origination_timezone=1&ipaddress=34.228.194.177&user_agent=CCBot%2F2.0+%28https%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&vendor_lead_id=8972174&url=http%3A%2F%2Fratechecker.com%2Flife-insurance%2F&zip=35222&residence_type=1&years_at_residence=3&months_at_residence=0&dob=1994-04-18&gender=0&marital_status=1&education_level=3&occupation=123&student=0&height_feet=5&height_inches=8&weight=180&medical_condition=0&dui=0&previously_denied=0&is_smoker=0&expectant_parent=0&relative_heart=0&relative_cancer=0&requested_coverage_type=1&policy_for=1&hazard_pilot=0&hazard_felony=0&hazard_other=0&hospitalized=0&ongoing_medical_treatment=0&insurance_amount=50000&CoverageTerm=7&treated=1&haveInsurance=0';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

$response = curl_exec($ch);
curl_close($ch);

Back to contents




Post:

What is a Post?

A Post is a call to our API with all of the lead data INCLUDING the PII. It's purpose is to attempt delivery of the actual lead to us, for the price established on the ping.

Field names and acceptable values

The absence of any required field (Required) will result in an error. If you do not collect the data for a required field, please refer to the 'Suggested Default' column.
Preferred fields (Preferred) may be omitted, but doing so could reduce a lead's chances of finding a buyer.
Optional fields (Optional) can be omitted without any major impact.

To make things easier for you, we have highlighted in green the additional fields that were not included in the Ping, but need to be added for the Post to pass validation.

Field Contents Suggested Default Required?
bid_on_leg Determines that this is a Bid on Legs (BoL) lead.
MUST be '1' to receive a BoL formatted response.
1 Required
confirmation_id Astoria provided <Confirmation> code from corresponding ping repsonse.
MUST be provided on Post, else it will be treated as a fresh Ping.
Required
leg_id_list Comma separated list of Astoria provided <LegID>'s from corresponding BoL ping repsonse.
MUST be provided on Post, else it will be rejected.
Required
lead_type Determines the type of lead.
MUST be '19' for Life Insurance (Shared / Bid On Legs)
19 Required
lead_mode Determines if the lead should be treated as a test lead or a live lead.
0 = TEST LEAD
1 = LIVE LEAD
Click here for full testing instructions.
Required
vendor_id This is the VID code you were provided by Astoria; if you do not know it, please contact us.
Please ensure you are using the correct code, otherwise your leads may be credited to another partner!
Required
sub_id Code of your choosing for your own tracking purposes, e.g. '123-ABC'
This should enable us to distinguish your lead sources from each other, so that we can optimize lead flow to buyers.
There is a maximum length of 35 characters, and it may only contain letters, numbers, underscores and hyphens.
Required
tcpa_optin Indicates whether or not the consumer was presented with, and accepted, unambiguous consent to be contacted via automated telephone systems pursuant to TCPA requirements.
0 = No
1 = Yes
Click here for more information.
0 Required
tcpa_text Contains the TCPA language the consumer was presented with on the form where their information was submitted,
e.g. 'By submitting this form…'
Click here for more information.
Required
universal_leadid Unique LeadiD as generated by LeadiD.com,
e.g. '4F4DEAB5-95BC-C39D-4375-46291D95297A'
Required
origination_datetime Date/time when lead was submitted by consumer, in format 'YYYY-MM-DD hh:mm:ss',
e.g. '2019-06-24 17:04:04'
Required
origination_timezone The timezone for the date/time passed in origination_datetime.
1 = EST / EDT
2 = CST / CDT
3 = MST / MDT
4 = PST / PDT
Required
ipaddress Applicants IP address, e.g. '34.228.194.177' Required
user_agent The user agent string for the browser used by the applicant when their information was submitted,
e.g. 'CCBot/2.0 (https://commoncrawl.org/faq/)'
Preferred
vendor_lead_id Your internal ID for this lead (useful if we need to contact you about a specific lead and when processing returns),
e.g. '8972174'
Preferred
url URL of form where lead was generated, e.g. 'http://ratechecker.com/life-insurance/' Preferred
minimum_price Minimum price you would accept for this lead, no $ symbol or commas, e.g. '2.00'
NOTE: For test leads (i.e. where lead_mode=0), our 'buyers' return very low prices (for safety). If you choose to include this optional parameter, then please set it to just '0.01' when testing to ensure you receive the expected responses.
WARNING: Setting a minimum_price will cause you to sell fewer leads!
Optional
first_name Applicants first name. Required
last_name Applicants last name. Required
email Email address Required
address Street Address Required
zip Valid 5-digit US Zip Code.
Can be used when lead_mode=0 to influence test results.
Click here for full testing instructions.
Required
primary_phone Primary phone number, exactly 10 digits (3 For PhoneAreaCode, 3 For PhoneExchange and 4 For PhoneSuffix ) no (), -, or spaces Required
secondary_phone Secondary phone number, exactly 10 digits (3 For PhoneAreaCode, 3 For PhoneExchange and 4 For PhoneSuffix ) no (), -, or spaces Optional
residence_type Applicants residence status.
0 = Own
1 = Rent
1 Required
years_at_residence Applicants years at residence.
0 = 0 Years
1 = 1 Year
2 = 2 Years
3 = 3 Years
4 = 4 Years
5 = 5 Years
6 = 6 Years
7 = 7 Years
8 = 8 Years
9 = 9 Years
10 = 10 or more Years
3 Required
months_at_residence Applicants months at residence.
0 = 0 Months
1 = 1 Month
2 = 2 Months
3 = 3 Months
4 = 4 Months
5 = 5 Months
6 = 6 Months
7 = 7 Months
8 = 8 Months
9 = 9 Months
10 = 10 Months
11 = 11 Months
0 Required
dob Applicants date of birth, in the format YYYY-MM-DD, e.g. '1994-04-18' Required
gender Applicants gender.
0 = Male
1 = Female
0 Required
marital_status Applicants marital status.
1 = Single
2 = Married
3 = Separated
4 = Divorced
5 = Domestic Partner
6 = Widowed
1 Required
education_level Applicants education level - see Education Level Values 3 Required
occupation Applicants occupation - see Occupation Values 123 Required
student Is applicant a Student?
0 = No
1 = Yes
0 Required
height_feet Applicants Height (Feet)
Either 4, 5, 6 or 7.
5 Required
height_inches Applicants Height (Inches)
From 1 to 11.
8 Required
weight Applicants Weight (lbs)
Maximum 3 digits, no dashes or spaces
180 Required
dui Does applicant have any DUIs?
0 = No
1 = Yes
0 Required
policy_for Who is this Policy for?
1 = Self
2 = Spouse
3 = Child
4 = Parent
5 = Other
1 Required
previously_denied Has applicant been previously denied Life Insurance?
0 = No
1 = Yes
0 Required
hazard_pilot Does applicant pilot small aircraft?
0 = No
1 = Yes
0 Required
hazard_felony Does applicant have a felony?
0 = No
1 = Yes
0 Required
hazard_other Does applicant participate in any other hazardous activities, e.g. skydiving, scuba diving, etc?
0 = No
1 = Yes
0 Required
is_smoker Is applicant a smoker?
0 = No
1 = Yes
0 Required
expectant_parent Is applicant an Expectant Parent?
0 = No
1 = Yes
0 Required
relative_heart Does applicant have any close relative with a Heart Condition?
0 = No
1 = Yes
0 Required
relative_cancer Does applicant have any close relative with Cancer?
0 = No
1 = Yes
0 Required
hospitalized Has applicant been hospitalized for any health issue?
0 = No
1 = Yes
0 Required
ongoing_medical_treatment Is applicants recieving any ongoing medical treatment?
0 = No
1 = Yes
0 Required
requested_coverage_type Requested Coverage Type
See Requested Coverage Type Values
Required
insurance_amount Insurance Amount
5000 (five thousand) to 2500000 (two million, five hundred thousand) - no $, commas, or decimals
Required
CoverageTerm Coverage Term - see Current Coverage Term Values 7 Required
haveInsurance Indicates whether applicant has a current life insurance policy or not.
0 = No
1 = Yes
0 Required

If haveInsurance = 1 (Yes) then the following fields are required.

CurrentCoverageType Current Coverage Type - see Current Coverage Type Values Required
current_insurance_company Applicants current insurance company - see Current Insurance Company Values
Note that we do NOT recommend a default mapping of '1' (Company Not Listed) for this field as doing so will result in very few leads being accepted.
1 Required
current_policy_expiration_date Applicants current policy expiration date, in the format YYYY-MM-DD, e.g. '2019-07-08'
Note: Could be the current date, or a future date.
Required
insured_since_date Date applicant has carried life insurance since, in the format YYYY-MM-DD, e.g. '2019-01-07'
Note: Should be a date in the past.
Required
treated Treated - see Current Treated Values 1 Required

Sending a Post Request

Post Request Using HTTP/1.1 POST

Our POST URL is https://api.astoriacompany.com/v2/post/. Please do not begin posting with lead_mode=1 until we have manually verified your test data (in addition to our automatic validation process), and we've explicitly notified you that your campaign has been activated within our system. Any leads posted to the live address while your campaign is still in test mode will return an error and neither be counted nor returned.

The data in the request should be URLENCODED to ensure it is received as intended.

Example Request

URL: https://api.astoriacompany.com/v2/post/
Content-Type: application/x-www-form-urlencoded

bid_on_legs=1&leg_id_list=222%2C223&lead_type=19&lead_mode=0&vendor_id=76&sub_id=6&tcpa_optin=1&tcpa_text=By+submitting+this+form...&universal_leadid=4F4DEAB5-95BC-C39D-4375-46291D95297A&origination_datetime=2019-06-24+17%3A04%3A04&origination_timezone=1&ipaddress=34.228.194.177&user_agent=CCBot%2F2.0+%28https%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&vendor_lead_id=8972174&url=http%3A%2F%2Fratechecker.com%2Flife-insurance%2F&zip=35222&residence_type=1&years_at_residence=3&months_at_residence=0&dob=1994-04-18&gender=0&marital_status=1&education_level=3&occupation=123&student=0&height_feet=5&height_inches=8&weight=180&medical_condition=0&dui=0&previously_denied=0&is_smoker=0&expectant_parent=0&relative_heart=0&relative_cancer=0&requested_coverage_type=1&policy_for=1&hazard_pilot=0&hazard_felony=0&hazard_other=0&hospitalized=0&ongoing_medical_treatment=0&insurance_amount=50000&CoverageTerm=7&treated=1&haveInsurance=0&confirmation_id=12345&first_name=John&last_name=Smith&email=test%40test.com&address=123+High+Street&primary_phone=6105551212

Back to contents




Post Responses

This is exact text that will definitely be present.
This indicates variable data, or nodes that may or may not be present.

Accept:

NOTE: An 'Accept' response on the POST indicates we HAVE purchased AT LEAST ONE LEG of that lead (BUT NOT NECESSARILY ALL OF THE LEGS). The 'Confirmation' code will differ for each response, and the 'LegPrice' may differ for each 'Leg'. The 'LegResponse' tag for any accepted 'Leg' will contain 'Accepted', while for rejected 'Leg's it will contain 'Rejected'. PLEASE TAKE CARE to ensure you correctly identify which 'Leg's were accepted, and which were rejected.

<PostResponse>
<Response>Accepted</Response>
<Confirmation>12345678901</Confirmation>
<Price>5.41</Price>
	<Legs>
		<Leg>
			<LegID>222</LegID>
			<LegPrice>5.41</LegPrice>
			<LegResponse>Accepted</LegResponse>
		</Leg>
		<Leg>
			<LegID>225</LegID>
			<LegPrice>0.00</LegPrice>
			<LegResponse>Rejected</LegResponse>
		</Leg>
	</Legs>
</PostResponse>

Reject:

NOTE: There are many reasons why we might reject a post - below you will see all the possible rejection responses. The 'Response' tag will always contain 'Rejected', and the 'Price' will always be '0.00'. The 'Confirmation' code will differ for each response.

For rejected responses, we also add two extra tags: 'Reason' tells you why the lead was rejected, and 'Message' gives some more descriptive text.

Also, where 'Reason' is 'Errors Detected', we add an 'Errors' section with a separate 'Error' node for each error - see the example below! This is designed to help you troubleshoot and fix any errors found.

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Unable to Monetize</Reason>
<Message>All buyers rejected this lead (IF POSSIBLE, WE WILL ATTEMPT TO EXPLAIN WHY HERE)</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Unable to Monetize</Reason>
<Message>Bids do not meet minimum_price requirement</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Maintenance Mode</Reason>
<Message>Our system is currently in maintenance mode</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Post data is empty</Reason>
<Message>Please check your integration</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid Confirmation ID</Reason>
<Message>You have passed a confirmation_id which is invalid</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_type</Reason>
<Message>Please pass a valid lead_type as per our specs</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_type for this vendor_id</Reason>
<Message>You are not currently approved to send leads of the given lead_type</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid lead_mode</Reason>
<Message>Please ensure lead_mode is either '0' for TEST or '1' for LIVE</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Invalid vendor_id</Reason>
<Message>Please check the vendor_id is correct</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Provided vendor_id is in TEST MODE</Reason>
<Message>Please contact us if you believe your account should be in LIVE MODE</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Daily Cap Exhausted</Reason>
<Message>Please contact us to increase your daily cap</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Per Minute Cap Exhausted</Reason>
<Message>Please contact us to increase your per minute cap</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Errors Detected</Reason>
<Message>The following errors were detected in this lead:</Message>
<Errors>
<Error>1</Error>
<Error>2</Error>
<Error>3</Error>
</Errors>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Duplicate Lead</Reason>
<Message>Lead was identified as a duplicate in our system</Message>
<Legs/>
</PostResponse>

<PostResponse>
<Response>Rejected</Response>
<Confirmation>12345678901</Confirmation>
<Price>0.00</Price>
<Reason>Blacklisted Data</Reason>
<Message>The lead matches data on our internal blacklist - please investigate the lead source</Message>
<Legs/>
</PostResponse>

Back to contents




Sample Post Code

Here is some sample PHP code to help you create your call to our API. This is simple stuff, so you should be able to readily convery it into another programming language if necessary.

$apiUrl = 'https://api.astoriacompany.com/v2/post/';
$headers = array('Content-Type: application/x-www-form-urlencoded');

$request = 'bid_on_legs=1&leg_id_list=222%2C223&lead_type=19&lead_mode=0&vendor_id=76&sub_id=6&tcpa_optin=1&tcpa_text=By+submitting+this+form...&universal_leadid=4F4DEAB5-95BC-C39D-4375-46291D95297A&origination_datetime=2019-06-24+17%3A04%3A04&origination_timezone=1&ipaddress=34.228.194.177&user_agent=CCBot%2F2.0+%28https%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&vendor_lead_id=8972174&url=http%3A%2F%2Fratechecker.com%2Flife-insurance%2F&zip=35222&residence_type=1&years_at_residence=3&months_at_residence=0&dob=1994-04-18&gender=0&marital_status=1&education_level=3&occupation=123&student=0&height_feet=5&height_inches=8&weight=180&medical_condition=0&dui=0&previously_denied=0&is_smoker=0&expectant_parent=0&relative_heart=0&relative_cancer=0&requested_coverage_type=1&policy_for=1&hazard_pilot=0&hazard_felony=0&hazard_other=0&hospitalized=0&ongoing_medical_treatment=0&insurance_amount=50000&CoverageTerm=7&treated=1&haveInsurance=0&confirmation_id=12345&first_name=John&last_name=Smith&email=test%40test.com&address=123+High+Street&primary_phone=6105551212';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);

$response = curl_exec($ch);
curl_close($ch);

Back to contents




Common Mistakes

  • Values must be URL encoded. For example, james.doe@example.com should be james.doe%40example.com and 4 Pennsylvania Plaza should be 4+Pennsylvania+Plaza.
  • All field names and explicitly allowed values (employment_in_month, is_rented, income_payment_type, etc.) are case-sensitive.
  • Passing unlisted values (for example: family for reference_relationship1) will result in errors. Likewise, do not pass empty fields; instead omit the fields.
  • Out-of-range or logically impossible values, like stay_in_month=100, or stay_in_year=100 when dob=1980, will fail.
  • Remember to set lead_mode=1 when you go live!

Back to contents




Testing

For testing, i.e. when lead_mode=0, please attempt at least three different leads, each with a different zip code. One should end with and even number, one should end with an odd number, and one should end with a 0 (zero). The responses generated will vary based on the zip code used, as follows:

  • If you PING a test lead with a zip code that ends with a ZERO (e.g. 19460), you will receive the 'No Coverage' response, i.e. it will be REJECTED on the PING.
  • If you PING a test lead with a zip code that ends with an ODD number (e.g. 19461), you will receive a bid, i.e. it will be ACCEPTED on the PING. When you POST that same lead to us, it will be REJECTED on the POST.
  • If you PING a test lead with a zip code that ends with an EVEN number (e.g. 19462), you will receive a bid. When you POST that same lead to us, it will be ACCEPTED on the POST.

Please email all of the ping and post requests AND their corresponding responses to tech@astoriacompany.com so that we can verify the tests and activate your account.

Testing via a Third Party Service

If you are having issues getting the response you expect, please use hurl.it or a similar service to hit our API with the following settings (refer to this image):

  1. Go to: hurl.it
  2. Select 'POST' in the first dropdown
  3. For the URL, enter: https://api.astoriacompany.com/v2/ping/ (or https://api.astoriacompany.com/v2/post/ if testing a post)
  4. Add a Header: 'Content-Type' with a value of 'application/x-www-form-urlencoded'
  5. Paste your ping or post request into the 'Parameters' text area
  6. Click: Launch Request

Back to contents




Parameter Values

Field Contents Values Allowed Required?
education Education Level 1 => Less than High School
2 => Some or No High School
3 => High School Diploma
4 => Some College
5 => Associate Degree
6 => Bachelors Degree
7 => Masters Degree
8 => Doctorate Degree
9 => Other
Required
Field Contents Values Allowed Required?
occupation Occupation 1 => Accounts Pay/Rec.
2 => Actor
3 => Administration/Management
4 => Appraiser
5 => Architect
6 => Artist
7 => Assembler
8 => Auditor
9 => Baker
10 => Bank Teller
11 => Banker
12 => Bartender
13 => Broker
14 => Cashier
15 => Casino Worker
16 => CEO
17 => Certified Public Accountant
18 => Chemist
19 => Child Care
20 => City Worker
21 => Claims Adjuster
22 => Clergy
23 => Clerical/Technical
24 => College Professor
25 => Computer Tech
26 => Construction
27 => Contractor
28 => Counselor
29 => Craftsman/Skilled Worker
30 => Customer Support Rep
31 => Custodian
32 => Dancer
33 => Decorator
34 => Delivery Driver
35 => Dentist
36 => Director
37 => Disabled
38 => Drivers
39 => Electrician
40 => Engineer-Aeronautical
41 => Engineer-Aerospace
42 => Engineer-Chemical
43 => Engineer-Civil
44 => Engineer-Electrical
45 => Engineer-Gas
46 => Engineer-Geophysical
47 => Engineer-Mechanical
48 => Engineer-Nuclear
49 => Engineer-Other
50 => Engineer-Petroleum
51 => Engineer-Structural
52 => Entertainer
53 => Farmer
54 => Fire Fighter
55 => Flight Attend.
56 => Food Service
57 => Health Care
58 => Installer
59 => Instructor
60 => Journalist
61 => Journeyman
62 => LabTech.
63 => Laborer/Unskilled Worker
64 => Lawyer
65 => Machine Operator
66 => Machinist
67 => Maintenance
68 => Manufacturer
69 => Marketing
70 => Mechanic
71 => Model
72 => Nanny
73 => Nurse/CNA
74 => Other
75 => Painter
76 => Para-Legal
77 => Paramedic
78 => Personal Trainer
79 => Photographer
80 => Physician
81 => Pilot
82 => Plumber
83 => Police Officer
84 => Postal Worker
85 => Preacher
86 => Pro Athlete
87 => Production
88 => Prof-College Degree
89 => Prof-Specialty Degree
90 => Programmer
91 => Real Estate
92 => Receptionist
93 => Reservation Agent
94 => Restaurant Manager
95 => Retail
96 => Roofer
97 => Sales
98 => Scientist
99 => Secretary
100 => Security
101 => Social Worker
102 => Stocker
103 => Store Owner
104 => Stylist
105 => Supervisor
106 => Teacher
107 => Teacher - with Credentials
108 => Technical/Supervisory
109 => Travel Agent
110 => Truck Driver
111 => Vet
112 => Waitress
113 => Welder
114 => Government
115 => Housewife/Househusband
116 => Retired
117 => Student Not Living w/Parents
118 => Unemployed
119 => Military E1 - E4
120 => Military E5 - E7
121 => Military Officer
122 => Military Other
123 => Unknown
124 => Self Employed
125 => Student Living w/Parents
Required
Field Contents Values Allowed Required?
RequestedCoverageType Requested Coverage Type 1 => CashValue
2 => Investment
3 => Term
4 => UniversalLife
5 => UnsureLife
6 => Variable
7 => WholeLife
Required
Field Contents Values Allowed Required?
CoverageTerm Coverage Term 1 => AnnuallyRenewable
2 => 5 Year
3 => 10 Year
4 => 15 Year
5 => 20 Year
6 => 25 Year
7 => NotSure
Required
Field Contents Values Allowed Required?
CurrentCoverageType Current Coverage Type 1 => CashValue
2 => Investment
3 => Term
4 => UniversalLife
5 => UnsureLife
6 => Variable
7 => WholeLife
Required
Field Contents Values Allowed Required?
insuranceCompany Insurance Company 1 => Company Not Listed
2 => 21st Century Insurance
3 => AAA Insurance Co.
4 => AARP
5 => AETNA
6 => AFLAC
7 => AIG
8 => AIU Insurance
9 => Allied
10 => Allstate County Mutual
11 => Allstate Indemnity
12 => Allstate Insurance
13 => American Alliance Insurance
14 => American Automobile Insurance
15 => American Casualty
16 => American Deposit Insurance
17 => American Direct Business Insurance
18 => American Empire Insurance
19 => American Family Insurance
20 => American Family Mutual
21 => American Financial
22 => American Health Underwriters
23 => American Home Assurance
24 => American Insurance
25 => American International Ins
26 => American International Pacific
27 => American International South
28 => American Manufacturers
29 => American Mayflower Insurance
30 => American Motorists Insurance
31 => American National Insurance
32 => American Premier Insurance
33 => American Protection Insurance
34 => American Republic
35 => American Savers Plan
36 => American Service Insurance
37 => American Skyline Insurance Company
38 => American Spirit Insurance
39 => American Standard Insurance - OH
40 => American Standard Insurance - WI
41 => AmeriPlan
42 => Amica Insurance
43 => Answer Financial
44 => Arbella
45 => Associated Indemnity
46 => Assurant
47 => Atlanta Casualty
48 => Atlantic Indemnity
49 => Auto Club Insurance Company
50 => AXA Advisors
51 => Bankers Life and Casualty
52 => Banner Life
53 => Best Agency USA
54 => Blue Cross and Blue Shield
55 => Brooke Insurance
56 => Cal Farm Insurance
57 => California State Automobile Association
58 => Chubb
59 => Citizens
60 => Clarendon American Insurance
61 => Clarendon National Insurance
62 => CNA
63 => Colonial Insurance
64 => Comparison Market
65 => Continental Casualty
66 => Continental Divide Insurance
67 => Continental Insurance
68 => Cotton States Insurance
69 => Country Insurance and Financial Services
70 => Countrywide Insurance
71 => CSE Insurance Group
72 => Dairyland County Mutual Co of TX
73 => Dairyland Insurance
74 => eHealthInsurance Services
75 => Electric Insurance
76 => Erie Insurance Company
77 => Erie Insurance Exchange
78 => Erie Insurance Group
79 => Erie Insurance Property and Casualty
80 => Esurance
81 => Farm Bureau/Farm Family/Rural
82 => Farmers Insurance
83 => Farmers Insurance Exchange
84 => Farmers TX County Mutual
85 => Farmers Union
86 => FinanceBox.com
87 => Fire and Casualty Insurance Co of CT
88 => Fireman's Fund
89 => Foremost
90 => Foresters
91 => Geico Casualty
92 => Geico General Insurance
93 => Geico Indemnity
94 => GMAC Insurance
95 => Golden Rule Insurance
96 => Government Employees Insurance
97 => Guaranty National Insurance
98 => Guide One Insurance
99 => Hanover Lloyd's Insurance Company
100 => Hartford Accident and Indemnity
101 => Hartford Casualty Insurance
102 => Hartford Fire Insurance
103 => Hartford Insurance Co of Illinois
104 => Hartford Insurance Co of the Southeast
105 => Hartford Omni
106 => Hartford Underwriters Insurance
107 => Health Benefits Direct
108 => Health Choice One
109 => Health Plus of America
110 => HealthShare American
111 => Humana
112 => IFA Auto Insurance
113 => IGF Insurance
114 => Infinity Insurance
115 => Infinity National Insurance
116 => Infinity Select Insurance
117 => Insurance Insight
118 => Insurance.com
119 => InsuranceLeads.com
120 => InsWeb
121 => Integon
122 => John Hancock
123 => Kaiser Permanente
124 => Kemper Lloyds Insurance
125 => Landmark American Insurance
126 => Leader National Insurance
127 => Leader Preferred Insurance
128 => Leader Specialty Insurance
129 => Liberty Insurance Corp
130 => Liberty Mutual Fire Insurance
131 => Liberty Mutual Insurance
132 => Liberty National
133 => Liberty Northwest Insurance
134 => Lumbermens Mutual
135 => Maryland Casualty
136 => Mass Mutual
137 => Mega/Midwest
138 => Mercury
139 => MetLife Auto and Home
140 => Metropolitan Insurance Co.
141 => Mid Century Insurance
142 => Mid-Continent Casualty
143 => Middlesex Insurance
144 => Midland National Life
145 => Mutual of New York
146 => Mutual Of Omaha
147 => National Ben Franklin Insurance
148 => National Casualty
149 => National Continental Insurance
150 => National Fire Insurance Company of Hartford
151 => National Health Insurance
152 => National Indemnity
153 => National Union Fire Insurance of LA
154 => National Union Fire Insurance of PA
155 => Nationwide General Insurance
156 => Nationwide Insurance Company
157 => Nationwide Mutual Fire Insurance
158 => Nationwide Mutual Insurance
159 => Nationwide Property and Casualty
160 => New England Financial
161 => New York Life Insurance
162 => Northwestern Mutual Life
163 => Northwestern Pacific Indemnity
164 => Omni Indemnity
165 => Omni Insurance
166 => Orion Insurance
167 => Pacific Indemnity
168 => Pacific Insurance
169 => Pafco General Insurance
170 => Patriot General Insurance
171 => Peak Property and Casualty Insurance
172 => PEMCO Insurance
173 => Physicians
174 => Progressive
175 => Progressive Auto Pro
176 => Prudential Insurance Co.
177 => Reliance Insurance
178 => Reliance National Indemnity
179 => Reliance National Insurance
180 => Republic Indemnity
181 => Response Insurance
182 => SAFECO
183 => Safeway Insurance
184 => Safeway Insurance Co of AL
185 => Safeway Insurance Co of GA
186 => Safeway Insurance Co of LA
187 => Security Insurance Co of Hartford
188 => Security National Insurance Co of FL
189 => Sentinel Insurance
190 => Sentry Insurance a Mutual Company
191 => Sentry Insurance Group
192 => Shelter Insurance Co.
193 => St. Paul
194 => St. Paul Fire and Marine
195 => St. Paul Insurance
196 => Standard Fire Insurance Company
197 => State and County Mutual Fire Insurance
198 => State Farm County
199 => State Farm Fire and Cas
200 => State Farm General
201 => State Farm Indemnity
202 => State Farm Insurance Co.
203 => State Farm Lloyds Tx
204 => State Farm Mutual Auto
205 => State Fund
206 => State National Insurance
207 => Superior American Insurance
208 => Superior Guaranty Insurance
209 => Superior Insurance
210 => Sure Health Plans
211 => The Ahbe Group
212 => The General
213 => The Hartford
214 => TICO Insurance
215 => TIG Countrywide Insurance
216 => Titan
217 => TransAmerica
218 => Travelers Indemnity
219 => Travelers Insurance Company
220 => Tri-State Consumer Insurance
221 => Twin City Fire Insurance
222 => UniCare
223 => United American/Farm and Ranch
224 => United Pacific Insurance
225 => United Security
226 => United Services Automobile Association
227 => Unitrin Direct
228 => Universal Underwriters Insurance
229 => US Financial
230 => USA Benefits/Continental General
231 => USAA
232 => USF and G
233 => Viking County Mutual Insurance
234 => Viking Insurance Co of WI
235 => Western and Southern Life
236 => Western Mutual
237 => Windsor Insurance
238 => Woodlands Financial Group
239 => Zurich North America
Required
Field Contents Values Allowed Required?
treated Treated 1 => None
2 => AIDS
3 => HIV
4 => Diabetes Type 1
5 => Liver Disease
6 => Alzheimers Disease
7 => Diabetes Type 2
8 => Lung Disease
9 => Asthma
10 => Drug Abuse
11 => Mental Illness
12 => Cancer
13 => Heart Disease
14 => Stroke
15 => Depression
16 => Kidney Disease
17 => Other
Required