ICON Developer Center

Guides and reference

Field dictionary

The lead fields ICON reads, where it stores them, the other names it accepts and the values it stores.

Send these fields and values and every offer receives what it expects. The tables are generated from ICON's field value standards.

#Shape of a lead

Send the lead nested, as ICON stores it:

json
{
  "lead": {
    "personal": {
      "first_name": "Ada",
      "last_name": "Lovelace",
      "email": "ada.lovelace@mail.test",
      "phone": "6025552368",
      "date_of_birth": "1990-04-07"
    },
    "address": {
      "address_line_1": "123 N Main St",
      "city": "Phoenix",
      "state": "AZ",
      "zip_code": "85004"
    },
    "education": {
      "education_level": "bachelors",
      "high_school_graduation_year": "2008",
      "start_timeline": "1_3_months",
      "learning_preference": "online"
    },
    "background": {
      "military_affiliation": "none",
      "us_citizen": "yes"
    }
  },
  "tracking": {
    "ip_address": "203.0.113.9",
    "subid": "pub-42",
    "subid2": "creative-7",
    "utm_source": "partner",
    "utm_medium": "email",
    "utm_campaign": "fall-enrollment"
  }
}

Flat keys are accepted too (the Also accepted column): email, phone, zip, dob, … . Prefer the nested form.

#Identity and control fields

FieldTypeRequiredDescription
icon_campaign_idstringrequired (search + submit)ICON campaign ID (UUID) of the campaign this request is for. Required on every search and every submit: ICON never picks a campaign for you.
icon_affiliate_idstringrequired (search + submit)Your ICON affiliate ID (UUID). Required on every search and every submit, and must be the affiliate your API key belongs to. ICON records the affiliate from the key; this value is only checked against it.
icon_offer_idstringrequired for direct postingThe ICON offer id (UUID). Required when you post a lead straight to an offer; taken from the result when you submit an icon_result_id.
icon_lead_idstringoptional (submit)The icon_lead_id ICON returned for a lead you posted directly: send it when you retry that post, so ICON recognises the lead. A request that would change a submitted lead is refused (403). Not used on a result submit (send search_lead_id).

#Contact, address and formatted fields

Send each in the format shown.

FieldStored atAlso acceptedFormat
high_school_graduation_yearlead.education.high_school_graduation_yearhigh_school_graduation_year, grad_yearFour digits, e.g. 2012.
emaillead.personal.emailemailAn email address.
phonelead.personal.phonephoneThe 10-digit US number, digits only (e.g. 6025552368).
first_namelead.personal.first_namefirst_name, firstnameText.
last_namelead.personal.last_namelast_name, lastnameText.
address_line_1lead.address.address_line_1address, address_line1The street line.
address_line_2lead.address.address_line_2address2, address_line2Unit / apartment line.
citylead.address.citycityText.
statelead.address.statestateThe two-letter US state code. Values: AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY, DC, AS, GU, MP, PR, VI, UM
zip_codelead.address.zip_codezip, zip_codeThe 5-digit ZIP.
date_of_birthlead.personal.date_of_birthdobYYYY-MM-DD.
agelead.personal.ageageWhole number of years.
year_bornyear_born—Four digits.
ip_addresstracking.ip_addressipThe consumer's own public IPv4 or IPv6 address (not your server's). Required from affiliates.
UTM parameterstracking.utm_source, tracking.utm_medium, tracking.utm_campaign, tracking.utm_content, tracking.utm_termutm_source, utm_medium, utm_campaign, utm_content, utm_termText, trimmed; case is kept.
Click ids and sub idstracking.gclid, tracking.gbraid, tracking.wbraid, tracking.fbclid, tracking.msclkid, tracking.ttclid, tracking.click_id, tracking.subid, tracking.subid2, tracking.subid3, tracking.subid4, tracking.subid5gclid, fbclid, msclkid, click_id, subid, subid2, subid3, subid4, subid5Text, trimmed; case is kept.

#Answers with fixed values

Send one of the listed values, exactly as written.

FieldStored atAlso acceptedValues
rn_licenselead.background.rn_licensern_licensern, lpn_lvn, no
military_affiliationlead.background.military_affiliationmilitary_affiliationnone, affiliated, active_duty, veteran, spouse_dependent
us_citizenlead.background.us_citizenus_citizenyes, no
has_internet_accesslead.background.has_internet_accesshas_internet_accessyes, no
teaching_certificatelead.education.teaching_certificateteaching_certificateyes, no
currently_enrolledcurrently_enrolled—yes, no
education_levellead.education.education_leveleducation_levelno_hs_diploma, ged, high_school, some_college, associates, bachelors, masters, doctorate
start_timelinelead.education.start_timelinestart_timeline, start_dateimmediately, 1_3_months, 4_6_months, 7_12_months, over_1_year, not_sure
learning_preferencelead.education.learning_preferencelearning_preferenceonline, campus, either
genderlead.personal.gendergenderfemale, male

#Questions an offer adds

An offer can ask more than the fields above (a program, a licence, a school-specific question). Those come with each result as form_fields: send each answer on submit under the question's name. See Results.

Send the values exactly as listed. A value ICON does not recognise is kept as sent, never guessed; an offer that needs a recognised value refuses it as INVALID_FIELD with the field named.

Generated 2026-09-28 from ICON's API definitions. Every page is also available as Markdown; the index is llms.txt.