[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fapi\u002Fendpoints\u002Fsubscribers\u002Fadd-subscriber":3},{"_path":4,"title":5,"description":6,"navigation":7,"image":13,"head":18,"body":32},"\u002Fdocs\u002Fapi\u002Fendpoints\u002Fsubscribers\u002Fadd-subscriber","Add Subscriber API Endpoint · Waitlister Documentation","Learn how to add subscribers to your waitlist programmatically using the Waitlister API.",{"title":8,"parent":9,"group":10,"description":11,"order":12},"Add Subscriber","Endpoints","Advanced","Add a new subscriber to your waitlist programmatically.",1,{"src":14,"width":15,"height":16,"alt":17},"https:\u002F\u002Ffirebasestorage.googleapis.com\u002Fv0\u002Fb\u002Fwaitinglist-app-c24fc.appspot.com\u002Fo\u002Fdocs-og-image.png?alt=media&token=85e60b24-c882-4f84-aa9e-ef85e1ae4bb5",400,300,"Waitlister API Add Subscriber",{"meta":19},[20,23,26,29],{"name":21,"content":22},"keywords","add subscriber, waitlist api, sign up api, api integration",{"name":24,"content":25},"robots","index, follow",{"name":27,"content":28},"author","Waitlister",{"name":30,"content":31},"copyright","© 2026 Waitlister",{"type":33,"children":34,"toc":1227},"root",[35,49,55,60,67,105,111,118,128,134,179,185,196,203,251,257,459,465,477,490,499,510,515,524,535,540,549,560,565,574,580,842,848,861,870,882,891,897,967,973,979,990,996,1005,1011,1020,1026,1035,1041,1047,1059,1070,1076,1081,1110,1116,1121,1146,1152,1157,1202,1207,1213],{"type":36,"tag":37,"props":38,"children":39},"element","p",{},[40],{"type":36,"tag":41,"props":42,"children":45},"span",{"className":43},[44],"secondary-heading",[46],{"type":47,"value":48},"text","API Reference \u002F Endpoints",{"type":36,"tag":50,"props":51,"children":53},"h1",{"id":52},"add-subscriber",[54],{"type":47,"value":8},{"type":36,"tag":37,"props":56,"children":57},{},[58],{"type":47,"value":59},"The Add Subscriber endpoint allows you to programmatically add new subscribers to your waitlist. This is useful for integrating Waitlister with your existing systems or custom sign-up forms.",{"type":36,"tag":61,"props":62,"children":64},"h2",{"id":63},"endpoint-details",[65],{"type":47,"value":66},"Endpoint Details",{"type":36,"tag":68,"props":69,"children":70},"ul",{},[71,90],{"type":36,"tag":72,"props":73,"children":74},"li",{},[75,81,83],{"type":36,"tag":76,"props":77,"children":78},"strong",{},[79],{"type":47,"value":80},"URL",{"type":47,"value":82},": ",{"type":36,"tag":84,"props":85,"children":87},"code",{"className":86},[],[88],{"type":47,"value":89},"https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002F{waitlist-key}\u002Fsign-up",{"type":36,"tag":72,"props":91,"children":92},{},[93,98,99],{"type":36,"tag":76,"props":94,"children":95},{},[96],{"type":47,"value":97},"Method",{"type":47,"value":82},{"type":36,"tag":84,"props":100,"children":102},{"className":101},[],[103],{"type":47,"value":104},"POST",{"type":36,"tag":61,"props":106,"children":108},{"id":107},"request",[109],{"type":47,"value":110},"Request",{"type":36,"tag":112,"props":113,"children":115},"h3",{"id":114},"headers",[116],{"type":47,"value":117},"Headers",{"type":36,"tag":119,"props":120,"children":122},"pre",{"code":121},"Content-Type: application\u002Fjson\nX-Api-Key: your-api-key\n",[123],{"type":36,"tag":84,"props":124,"children":126},{"__ignoreMap":125},"",[127],{"type":47,"value":121},{"type":36,"tag":112,"props":129,"children":131},{"id":130},"path-parameters",[132],{"type":47,"value":133},"Path Parameters",{"type":36,"tag":135,"props":136,"children":137},"table",{},[138,157],{"type":36,"tag":139,"props":140,"children":141},"thead",{},[142],{"type":36,"tag":143,"props":144,"children":145},"tr",{},[146,152],{"type":36,"tag":147,"props":148,"children":149},"th",{},[150],{"type":47,"value":151},"Parameter",{"type":36,"tag":147,"props":153,"children":154},{},[155],{"type":47,"value":156},"Description",{"type":36,"tag":158,"props":159,"children":160},"tbody",{},[161],{"type":36,"tag":143,"props":162,"children":163},{},[164,174],{"type":36,"tag":165,"props":166,"children":167},"td",{},[168],{"type":36,"tag":84,"props":169,"children":171},{"className":170},[],[172],{"type":47,"value":173},"waitlist-key",{"type":36,"tag":165,"props":175,"children":176},{},[177],{"type":47,"value":178},"Your unique waitlist key, found in your waitlist settings",{"type":36,"tag":112,"props":180,"children":182},{"id":181},"request-body",[183],{"type":47,"value":184},"Request Body",{"type":36,"tag":119,"props":186,"children":191},{"code":187,"language":188,"meta":125,"className":189},"{\n  \"email\": \"user@example.com\",\n  \"name\": \"John Doe\",\n  \"phone\": \"+1234567890\",\n  \"metadata\": {\n    \"referred_by\": \"happy-star-4f3d\",\n    \"referring_domain\": \"google.com\",\n    \"client_ip\": \"203.0.113.42\",\n    \"fingerprint\": \"abc123def456\",\n    \"custom_field_1\": \"value1\",\n    \"custom_field_2\": \"value2\"\n  }\n}\n","json",[190],"language-json",[192],{"type":36,"tag":84,"props":193,"children":194},{"__ignoreMap":125},[195],{"type":47,"value":187},{"type":36,"tag":197,"props":198,"children":200},"h4",{"id":199},"required-fields",[201],{"type":47,"value":202},"Required Fields",{"type":36,"tag":135,"props":204,"children":205},{},[206,226],{"type":36,"tag":139,"props":207,"children":208},{},[209],{"type":36,"tag":143,"props":210,"children":211},{},[212,217,222],{"type":36,"tag":147,"props":213,"children":214},{},[215],{"type":47,"value":216},"Field",{"type":36,"tag":147,"props":218,"children":219},{},[220],{"type":47,"value":221},"Type",{"type":36,"tag":147,"props":223,"children":224},{},[225],{"type":47,"value":156},{"type":36,"tag":158,"props":227,"children":228},{},[229],{"type":36,"tag":143,"props":230,"children":231},{},[232,241,246],{"type":36,"tag":165,"props":233,"children":234},{},[235],{"type":36,"tag":84,"props":236,"children":238},{"className":237},[],[239],{"type":47,"value":240},"email",{"type":36,"tag":165,"props":242,"children":243},{},[244],{"type":47,"value":245},"String",{"type":36,"tag":165,"props":247,"children":248},{},[249],{"type":47,"value":250},"The subscriber's email address",{"type":36,"tag":197,"props":252,"children":254},{"id":253},"optional-fields",[255],{"type":47,"value":256},"Optional Fields",{"type":36,"tag":135,"props":258,"children":259},{},[260,278],{"type":36,"tag":139,"props":261,"children":262},{},[263],{"type":36,"tag":143,"props":264,"children":265},{},[266,270,274],{"type":36,"tag":147,"props":267,"children":268},{},[269],{"type":47,"value":216},{"type":36,"tag":147,"props":271,"children":272},{},[273],{"type":47,"value":221},{"type":36,"tag":147,"props":275,"children":276},{},[277],{"type":47,"value":156},{"type":36,"tag":158,"props":279,"children":280},{},[281,302,323,345,366,387,408,437],{"type":36,"tag":143,"props":282,"children":283},{},[284,293,297],{"type":36,"tag":165,"props":285,"children":286},{},[287],{"type":36,"tag":84,"props":288,"children":290},{"className":289},[],[291],{"type":47,"value":292},"name",{"type":36,"tag":165,"props":294,"children":295},{},[296],{"type":47,"value":245},{"type":36,"tag":165,"props":298,"children":299},{},[300],{"type":47,"value":301},"The subscriber's name",{"type":36,"tag":143,"props":303,"children":304},{},[305,314,318],{"type":36,"tag":165,"props":306,"children":307},{},[308],{"type":36,"tag":84,"props":309,"children":311},{"className":310},[],[312],{"type":47,"value":313},"phone",{"type":36,"tag":165,"props":315,"children":316},{},[317],{"type":47,"value":245},{"type":36,"tag":165,"props":319,"children":320},{},[321],{"type":47,"value":322},"The subscriber's phone number",{"type":36,"tag":143,"props":324,"children":325},{},[326,335,340],{"type":36,"tag":165,"props":327,"children":328},{},[329],{"type":36,"tag":84,"props":330,"children":332},{"className":331},[],[333],{"type":47,"value":334},"metadata",{"type":36,"tag":165,"props":336,"children":337},{},[338],{"type":47,"value":339},"Object",{"type":36,"tag":165,"props":341,"children":342},{},[343],{"type":47,"value":344},"Additional information about the subscriber",{"type":36,"tag":143,"props":346,"children":347},{},[348,357,361],{"type":36,"tag":165,"props":349,"children":350},{},[351],{"type":36,"tag":84,"props":352,"children":354},{"className":353},[],[355],{"type":47,"value":356},"metadata.referred_by",{"type":36,"tag":165,"props":358,"children":359},{},[360],{"type":47,"value":245},{"type":36,"tag":165,"props":362,"children":363},{},[364],{"type":47,"value":365},"Referral code of the user who referred this subscriber",{"type":36,"tag":143,"props":367,"children":368},{},[369,378,382],{"type":36,"tag":165,"props":370,"children":371},{},[372],{"type":36,"tag":84,"props":373,"children":375},{"className":374},[],[376],{"type":47,"value":377},"metadata.referring_domain",{"type":36,"tag":165,"props":379,"children":380},{},[381],{"type":47,"value":245},{"type":36,"tag":165,"props":383,"children":384},{},[385],{"type":47,"value":386},"Domain that referred the subscriber (overrides HTTP referrer)",{"type":36,"tag":143,"props":388,"children":389},{},[390,399,403],{"type":36,"tag":165,"props":391,"children":392},{},[393],{"type":36,"tag":84,"props":394,"children":396},{"className":395},[],[397],{"type":47,"value":398},"metadata.client_ip",{"type":36,"tag":165,"props":400,"children":401},{},[402],{"type":47,"value":245},{"type":36,"tag":165,"props":404,"children":405},{},[406],{"type":47,"value":407},"The end user's IP address. When provided, enables referral fraud detection for API sign-ups. Must be a valid IPv4 address.",{"type":36,"tag":143,"props":409,"children":410},{},[411,420,424],{"type":36,"tag":165,"props":412,"children":413},{},[414],{"type":36,"tag":84,"props":415,"children":417},{"className":416},[],[418],{"type":47,"value":419},"metadata.fingerprint",{"type":36,"tag":165,"props":421,"children":422},{},[423],{"type":47,"value":245},{"type":36,"tag":165,"props":425,"children":426},{},[427,429,435],{"type":47,"value":428},"A device fingerprint for the end user. When provided alongside ",{"type":36,"tag":84,"props":430,"children":432},{"className":431},[],[433],{"type":47,"value":434},"client_ip",{"type":47,"value":436},", strengthens referral fraud detection.",{"type":36,"tag":143,"props":438,"children":439},{},[440,449,454],{"type":36,"tag":165,"props":441,"children":442},{},[443],{"type":36,"tag":84,"props":444,"children":446},{"className":445},[],[447],{"type":47,"value":448},"metadata.*",{"type":36,"tag":165,"props":450,"children":451},{},[452],{"type":47,"value":453},"Any",{"type":36,"tag":165,"props":455,"children":456},{},[457],{"type":47,"value":458},"Any additional custom fields you want to store with the subscriber",{"type":36,"tag":61,"props":460,"children":462},{"id":461},"response",[463],{"type":47,"value":464},"Response",{"type":36,"tag":37,"props":466,"children":467},{},[468,470,475],{"type":47,"value":469},"The response format depends on whether your waitlist has ",{"type":36,"tag":76,"props":471,"children":472},{},[473],{"type":47,"value":474},"double opt-in",{"type":47,"value":476}," enabled.",{"type":36,"tag":112,"props":478,"children":480},{"id":479},"standard-response-double-opt-in-disabled-200",[481,483],{"type":47,"value":482},"Standard Response (Double Opt-in Disabled) ",{"type":36,"tag":84,"props":484,"children":487},{"className":485},[486],"inline-code-green",[488],{"type":47,"value":489},"200",{"type":36,"tag":119,"props":491,"children":494},{"code":492,"language":188,"meta":125,"className":493},"{\n  \"success\": true,\n  \"is_new_sign_up\": true,\n  \"is_pending_confirmation\": false,\n  \"message\": \"Successfully signed up\",\n  \"position\": 42,\n  \"inflated_position\": 42,\n  \"points\": 50,\n  \"referral_code\": \"happy-star-4f3d\",\n  \"sign_up_token\": \"abc123xyz\",\n  \"redirect_url\": \"https:\u002F\u002Fwaitlister.me\u002Fthank-you\u002Fwaitlist-key\u002Fabc123xyz\"\n}\n",[190],[495],{"type":36,"tag":84,"props":496,"children":497},{"__ignoreMap":125},[498],{"type":47,"value":492},{"type":36,"tag":112,"props":500,"children":502},{"id":501},"double-opt-in-response-double-opt-in-enabled-200",[503,505],{"type":47,"value":504},"Double Opt-in Response (Double Opt-in Enabled) ",{"type":36,"tag":84,"props":506,"children":508},{"className":507},[486],[509],{"type":47,"value":489},{"type":36,"tag":37,"props":511,"children":512},{},[513],{"type":47,"value":514},"When double opt-in is enabled, subscribers must confirm their email before being added to your waitlist.",{"type":36,"tag":119,"props":516,"children":519},{"code":517,"language":188,"meta":125,"className":518},"{\n  \"success\": true,\n  \"is_new_sign_up\": true,\n  \"is_pending_confirmation\": true,\n  \"message\": \"Please check your email to confirm your sign-up\",\n  \"redirect_url\": \"https:\u002F\u002Fwaitlister.me\u002Fconfirm-pending\u002Fwaitlist-key\u002Fconfirmation-token\"\n}\n",[190],[520],{"type":36,"tag":84,"props":521,"children":522},{"__ignoreMap":125},[523],{"type":47,"value":517},{"type":36,"tag":112,"props":525,"children":527},{"id":526},"existing-subscriber-response-200",[528,530],{"type":47,"value":529},"Existing Subscriber Response ",{"type":36,"tag":84,"props":531,"children":533},{"className":532},[486],[534],{"type":47,"value":489},{"type":36,"tag":37,"props":536,"children":537},{},[538],{"type":47,"value":539},"If the email is already registered:",{"type":36,"tag":119,"props":541,"children":544},{"code":542,"language":188,"meta":125,"className":543},"{\n  \"success\": true,\n  \"is_new_sign_up\": false,\n  \"is_pending_confirmation\": false,\n  \"message\": \"Email already registered\",\n  \"position\": 42,\n  \"inflated_position\": 42,\n  \"referral_code\": \"happy-star-4f3d\",\n  \"sign_up_token\": \"abc123xyz\",\n  \"redirect_url\": \"https:\u002F\u002Fwaitlister.me\u002Fthank-you\u002Fwaitlist-key\u002Fabc123xyz\"\n}\n",[190],[545],{"type":36,"tag":84,"props":546,"children":547},{"__ignoreMap":125},[548],{"type":47,"value":542},{"type":36,"tag":112,"props":550,"children":552},{"id":551},"pending-confirmation-response-double-opt-in-200",[553,555],{"type":47,"value":554},"Pending Confirmation Response (Double Opt-in) ",{"type":36,"tag":84,"props":556,"children":558},{"className":557},[486],[559],{"type":47,"value":489},{"type":36,"tag":37,"props":561,"children":562},{},[563],{"type":47,"value":564},"If the email already has a pending confirmation:",{"type":36,"tag":119,"props":566,"children":569},{"code":567,"language":188,"meta":125,"className":568},"{\n  \"success\": true,\n  \"is_new_sign_up\": false,\n  \"is_pending_confirmation\": true,\n  \"message\": \"Confirmation email already sent. Please check your inbox.\",\n  \"redirect_url\": \"https:\u002F\u002Fwaitlister.me\u002Fconfirm-pending\u002Fwaitlist-key\u002Fconfirmation-token\"\n}\n",[190],[570],{"type":36,"tag":84,"props":571,"children":572},{"__ignoreMap":125},[573],{"type":47,"value":567},{"type":36,"tag":197,"props":575,"children":577},{"id":576},"response-fields",[578],{"type":47,"value":579},"Response Fields",{"type":36,"tag":135,"props":581,"children":582},{},[583,601],{"type":36,"tag":139,"props":584,"children":585},{},[586],{"type":36,"tag":143,"props":587,"children":588},{},[589,593,597],{"type":36,"tag":147,"props":590,"children":591},{},[592],{"type":47,"value":216},{"type":36,"tag":147,"props":594,"children":595},{},[596],{"type":47,"value":221},{"type":36,"tag":147,"props":598,"children":599},{},[600],{"type":47,"value":156},{"type":36,"tag":158,"props":602,"children":603},{},[604,634,668,694,715,737,758,779,800,821],{"type":36,"tag":143,"props":605,"children":606},{},[607,616,621],{"type":36,"tag":165,"props":608,"children":609},{},[610],{"type":36,"tag":84,"props":611,"children":613},{"className":612},[],[614],{"type":47,"value":615},"success",{"type":36,"tag":165,"props":617,"children":618},{},[619],{"type":47,"value":620},"Boolean",{"type":36,"tag":165,"props":622,"children":623},{},[624,626,632],{"type":47,"value":625},"Always ",{"type":36,"tag":84,"props":627,"children":629},{"className":628},[],[630],{"type":47,"value":631},"true",{"type":47,"value":633}," for successful responses",{"type":36,"tag":143,"props":635,"children":636},{},[637,646,650],{"type":36,"tag":165,"props":638,"children":639},{},[640],{"type":36,"tag":84,"props":641,"children":643},{"className":642},[],[644],{"type":47,"value":645},"is_new_sign_up",{"type":36,"tag":165,"props":647,"children":648},{},[649],{"type":47,"value":620},{"type":36,"tag":165,"props":651,"children":652},{},[653,658,660,666],{"type":36,"tag":84,"props":654,"children":656},{"className":655},[],[657],{"type":47,"value":631},{"type":47,"value":659}," if this is a new subscriber, ",{"type":36,"tag":84,"props":661,"children":663},{"className":662},[],[664],{"type":47,"value":665},"false",{"type":47,"value":667}," if the email was already registered or pending",{"type":36,"tag":143,"props":669,"children":670},{},[671,680,684],{"type":36,"tag":165,"props":672,"children":673},{},[674],{"type":36,"tag":84,"props":675,"children":677},{"className":676},[],[678],{"type":47,"value":679},"is_pending_confirmation",{"type":36,"tag":165,"props":681,"children":682},{},[683],{"type":47,"value":620},{"type":36,"tag":165,"props":685,"children":686},{},[687,692],{"type":36,"tag":84,"props":688,"children":690},{"className":689},[],[691],{"type":47,"value":631},{"type":47,"value":693}," if the subscriber needs to confirm their email (double opt-in enabled)",{"type":36,"tag":143,"props":695,"children":696},{},[697,706,710],{"type":36,"tag":165,"props":698,"children":699},{},[700],{"type":36,"tag":84,"props":701,"children":703},{"className":702},[],[704],{"type":47,"value":705},"message",{"type":36,"tag":165,"props":707,"children":708},{},[709],{"type":47,"value":245},{"type":36,"tag":165,"props":711,"children":712},{},[713],{"type":47,"value":714},"A human-readable message",{"type":36,"tag":143,"props":716,"children":717},{},[718,727,732],{"type":36,"tag":165,"props":719,"children":720},{},[721],{"type":36,"tag":84,"props":722,"children":724},{"className":723},[],[725],{"type":47,"value":726},"position",{"type":36,"tag":165,"props":728,"children":729},{},[730],{"type":47,"value":731},"Number",{"type":36,"tag":165,"props":733,"children":734},{},[735],{"type":47,"value":736},"The subscriber's real position in your waitlist",{"type":36,"tag":143,"props":738,"children":739},{},[740,749,753],{"type":36,"tag":165,"props":741,"children":742},{},[743],{"type":36,"tag":84,"props":744,"children":746},{"className":745},[],[747],{"type":47,"value":748},"inflated_position",{"type":36,"tag":165,"props":750,"children":751},{},[752],{"type":47,"value":731},{"type":36,"tag":165,"props":754,"children":755},{},[756],{"type":47,"value":757},"The public-facing position with any position inflation offset applied",{"type":36,"tag":143,"props":759,"children":760},{},[761,770,774],{"type":36,"tag":165,"props":762,"children":763},{},[764],{"type":36,"tag":84,"props":765,"children":767},{"className":766},[],[768],{"type":47,"value":769},"points",{"type":36,"tag":165,"props":771,"children":772},{},[773],{"type":47,"value":731},{"type":36,"tag":165,"props":775,"children":776},{},[777],{"type":47,"value":778},"The subscriber's points (only present when confirmed)",{"type":36,"tag":143,"props":780,"children":781},{},[782,791,795],{"type":36,"tag":165,"props":783,"children":784},{},[785],{"type":36,"tag":84,"props":786,"children":788},{"className":787},[],[789],{"type":47,"value":790},"referral_code",{"type":36,"tag":165,"props":792,"children":793},{},[794],{"type":47,"value":245},{"type":36,"tag":165,"props":796,"children":797},{},[798],{"type":47,"value":799},"The subscriber's unique referral code (only present when confirmed)",{"type":36,"tag":143,"props":801,"children":802},{},[803,812,816],{"type":36,"tag":165,"props":804,"children":805},{},[806],{"type":36,"tag":84,"props":807,"children":809},{"className":808},[],[810],{"type":47,"value":811},"sign_up_token",{"type":36,"tag":165,"props":813,"children":814},{},[815],{"type":47,"value":245},{"type":36,"tag":165,"props":817,"children":818},{},[819],{"type":47,"value":820},"A unique token for this subscriber (only present when confirmed)",{"type":36,"tag":143,"props":822,"children":823},{},[824,833,837],{"type":36,"tag":165,"props":825,"children":826},{},[827],{"type":36,"tag":84,"props":828,"children":830},{"className":829},[],[831],{"type":47,"value":832},"redirect_url",{"type":36,"tag":165,"props":834,"children":835},{},[836],{"type":47,"value":245},{"type":36,"tag":165,"props":838,"children":839},{},[840],{"type":47,"value":841},"URL to redirect the user to. Points to the thank-you page (standard) or confirm-pending page (double opt-in)",{"type":36,"tag":112,"props":843,"children":845},{"id":844},"error-responses",[846],{"type":47,"value":847},"Error Responses",{"type":36,"tag":197,"props":849,"children":851},{"id":850},"bad-request-400",[852,854],{"type":47,"value":853},"Bad Request ",{"type":36,"tag":84,"props":855,"children":858},{"className":856},[857],"inline-code-red",[859],{"type":47,"value":860},"400",{"type":36,"tag":119,"props":862,"children":865},{"code":863,"language":188,"meta":125,"className":864},"{\n  \"statusCode\": 400,\n  \"message\": \"Valid email is required\"\n}\n",[190],[866],{"type":36,"tag":84,"props":867,"children":868},{"__ignoreMap":125},[869],{"type":47,"value":863},{"type":36,"tag":197,"props":871,"children":873},{"id":872},"rate-limited-429",[874,876],{"type":47,"value":875},"Rate Limited ",{"type":36,"tag":84,"props":877,"children":879},{"className":878},[857],[880],{"type":47,"value":881},"429",{"type":36,"tag":119,"props":883,"children":886},{"code":884,"language":188,"meta":125,"className":885},"{\n  \"statusCode\": 429,\n  \"message\": \"Too many sign-up attempts. Please try again later.\",\n  \"data\": {\n    \"retry_after\": 3600\n  }\n}\n",[190],[887],{"type":36,"tag":84,"props":888,"children":889},{"__ignoreMap":125},[890],{"type":47,"value":884},{"type":36,"tag":197,"props":892,"children":894},{"id":893},"common-error-codes",[895],{"type":47,"value":896},"Common Error Codes",{"type":36,"tag":135,"props":898,"children":899},{},[900,915],{"type":36,"tag":139,"props":901,"children":902},{},[903],{"type":36,"tag":143,"props":904,"children":905},{},[906,911],{"type":36,"tag":147,"props":907,"children":908},{},[909],{"type":47,"value":910},"Status Code",{"type":36,"tag":147,"props":912,"children":913},{},[914],{"type":47,"value":156},{"type":36,"tag":158,"props":916,"children":917},{},[918,934,950],{"type":36,"tag":143,"props":919,"children":920},{},[921,929],{"type":36,"tag":165,"props":922,"children":923},{},[924],{"type":36,"tag":84,"props":925,"children":927},{"className":926},[],[928],{"type":47,"value":860},{"type":36,"tag":165,"props":930,"children":931},{},[932],{"type":47,"value":933},"Invalid email format or missing required field",{"type":36,"tag":143,"props":935,"children":936},{},[937,945],{"type":36,"tag":165,"props":938,"children":939},{},[940],{"type":36,"tag":84,"props":941,"children":943},{"className":942},[],[944],{"type":47,"value":881},{"type":36,"tag":165,"props":946,"children":947},{},[948],{"type":47,"value":949},"Rate limit exceeded",{"type":36,"tag":143,"props":951,"children":952},{},[953,962],{"type":36,"tag":165,"props":954,"children":955},{},[956],{"type":36,"tag":84,"props":957,"children":959},{"className":958},[],[960],{"type":47,"value":961},"500",{"type":36,"tag":165,"props":963,"children":964},{},[965],{"type":47,"value":966},"Internal server error",{"type":36,"tag":61,"props":968,"children":970},{"id":969},"examples",[971],{"type":47,"value":972},"Examples",{"type":36,"tag":112,"props":974,"children":976},{"id":975},"basic-sign-up",[977],{"type":47,"value":978},"Basic Sign-up",{"type":36,"tag":119,"props":980,"children":985},{"code":981,"language":982,"meta":125,"className":983},"curl -X POST \"https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002Fyour-waitlist-key\u002Fsign-up\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Api-Key: your-api-key\" \\\n  -d '{\n    \"email\": \"user@example.com\",\n    \"name\": \"John Doe\"\n  }'\n","bash",[984],"language-bash",[986],{"type":36,"tag":84,"props":987,"children":988},{"__ignoreMap":125},[989],{"type":47,"value":981},{"type":36,"tag":112,"props":991,"children":993},{"id":992},"sign-up-with-referral",[994],{"type":47,"value":995},"Sign-up with Referral",{"type":36,"tag":119,"props":997,"children":1000},{"code":998,"language":982,"meta":125,"className":999},"curl -X POST \"https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002Fyour-waitlist-key\u002Fsign-up\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Api-Key: your-api-key\" \\\n  -d '{\n    \"email\": \"friend@example.com\",\n    \"name\": \"Jane Smith\",\n    \"metadata\": {\n      \"referred_by\": \"happy-star-4f3d\"\n    }\n  }'\n",[984],[1001],{"type":36,"tag":84,"props":1002,"children":1003},{"__ignoreMap":125},[1004],{"type":47,"value":998},{"type":36,"tag":112,"props":1006,"children":1008},{"id":1007},"sign-up-with-custom-fields",[1009],{"type":47,"value":1010},"Sign-up with Custom Fields",{"type":36,"tag":119,"props":1012,"children":1015},{"code":1013,"language":982,"meta":125,"className":1014},"curl -X POST \"https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002Fyour-waitlist-key\u002Fsign-up\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Api-Key: your-api-key\" \\\n  -d '{\n    \"email\": \"user@example.com\",\n    \"name\": \"John Doe\",\n    \"metadata\": {\n      \"company\": \"Acme Inc\",\n      \"role\": \"Developer\",\n      \"how_they_heard\": \"Google Search\"\n    }\n  }'\n",[984],[1016],{"type":36,"tag":84,"props":1017,"children":1018},{"__ignoreMap":125},[1019],{"type":47,"value":1013},{"type":36,"tag":112,"props":1021,"children":1023},{"id":1022},"sign-up-with-referral-fraud-protection",[1024],{"type":47,"value":1025},"Sign-up with Referral Fraud Protection",{"type":36,"tag":119,"props":1027,"children":1030},{"code":1028,"language":982,"meta":125,"className":1029},"curl -X POST \"https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002Fyour-waitlist-key\u002Fsign-up\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Api-Key: your-api-key\" \\\n  -d '{\n    \"email\": \"friend@example.com\",\n    \"name\": \"Jane Smith\",\n    \"metadata\": {\n      \"referred_by\": \"happy-star-4f3d\",\n      \"client_ip\": \"203.0.113.42\",\n      \"fingerprint\": \"abc123def456\"\n    }\n  }'\n",[984],[1031],{"type":36,"tag":84,"props":1032,"children":1033},{"__ignoreMap":125},[1034],{"type":47,"value":1028},{"type":36,"tag":61,"props":1036,"children":1038},{"id":1037},"implementation-notes",[1039],{"type":47,"value":1040},"Implementation Notes",{"type":36,"tag":112,"props":1042,"children":1044},{"id":1043},"handling-the-response",[1045],{"type":47,"value":1046},"Handling the Response",{"type":36,"tag":37,"props":1048,"children":1049},{},[1050,1052,1057],{"type":47,"value":1051},"Check the ",{"type":36,"tag":84,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":47,"value":679},{"type":47,"value":1058}," field to determine the appropriate user experience:",{"type":36,"tag":119,"props":1060,"children":1065},{"code":1061,"language":1062,"meta":125,"className":1063},"const response = await fetch('https:\u002F\u002Fwaitlister.me\u002Fapi\u002Fv1\u002Fwaitlist\u002Fyour-key\u002Fsign-up', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application\u002Fjson',\n    'X-Api-Key': 'your-api-key'\n  },\n  body: JSON.stringify({ email: 'user@example.com', name: 'John' })\n})\n\nconst data = await response.json()\n\nif (data.is_pending_confirmation) {\n  \u002F\u002F Double opt-in: Show \"check your email\" message\n  showMessage('Please check your email to confirm your subscription.')\n  \u002F\u002F Optionally redirect to the confirm-pending page\n  \u002F\u002F window.location.href = data.redirect_url\n} else {\n  \u002F\u002F Standard flow: Show success with position\n  showMessage(`You're #${data.position} on the waitlist!`)\n  \u002F\u002F Share the referral code\n  showReferralCode(data.referral_code)\n}\n","javascript",[1064],"language-javascript",[1066],{"type":36,"tag":84,"props":1067,"children":1068},{"__ignoreMap":125},[1069],{"type":47,"value":1061},{"type":36,"tag":112,"props":1071,"children":1073},{"id":1072},"double-opt-in-flow",[1074],{"type":47,"value":1075},"Double Opt-in Flow",{"type":36,"tag":37,"props":1077,"children":1078},{},[1079],{"type":47,"value":1080},"When double opt-in is enabled for your waitlist:",{"type":36,"tag":1082,"props":1083,"children":1084},"ol",{},[1085,1090,1095,1100,1105],{"type":36,"tag":72,"props":1086,"children":1087},{},[1088],{"type":47,"value":1089},"User submits their email via the API",{"type":36,"tag":72,"props":1091,"children":1092},{},[1093],{"type":47,"value":1094},"A confirmation email is sent automatically",{"type":36,"tag":72,"props":1096,"children":1097},{},[1098],{"type":47,"value":1099},"User clicks the confirmation link in their email",{"type":36,"tag":72,"props":1101,"children":1102},{},[1103],{"type":47,"value":1104},"User is added to the waitlist and redirected to the thank-you page",{"type":36,"tag":72,"props":1106,"children":1107},{},[1108],{"type":47,"value":1109},"Welcome email is sent (if enabled)",{"type":36,"tag":112,"props":1111,"children":1113},{"id":1112},"referral-tracking",[1114],{"type":47,"value":1115},"Referral Tracking",{"type":36,"tag":37,"props":1117,"children":1118},{},[1119],{"type":47,"value":1120},"When a user signs up through a referral:",{"type":36,"tag":1082,"props":1122,"children":1123},{},[1124,1136,1141],{"type":36,"tag":72,"props":1125,"children":1126},{},[1127,1129,1134],{"type":47,"value":1128},"Include the referrer's referral code in the ",{"type":36,"tag":84,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":47,"value":356},{"type":47,"value":1135}," field",{"type":36,"tag":72,"props":1137,"children":1138},{},[1139],{"type":47,"value":1140},"The referrer gets credit once the new subscriber confirms (if double opt-in is enabled) or immediately (if disabled)",{"type":36,"tag":72,"props":1142,"children":1143},{},[1144],{"type":47,"value":1145},"The new subscriber gets a unique referral code they can share",{"type":36,"tag":112,"props":1147,"children":1149},{"id":1148},"referral-fraud-protection-for-api-users",[1150],{"type":47,"value":1151},"Referral Fraud Protection for API Users",{"type":36,"tag":37,"props":1153,"children":1154},{},[1155],{"type":47,"value":1156},"By default, referral fraud detection is skipped for API sign-ups because the IP address seen by Waitlister is your server's IP, not the end user's. To enable fraud protection for API-sourced referrals, forward the end user's real IP address and (optionally) a device fingerprint:",{"type":36,"tag":68,"props":1158,"children":1159},{},[1160,1189],{"type":36,"tag":72,"props":1161,"children":1162},{},[1163,1171,1173,1179,1181,1187],{"type":36,"tag":76,"props":1164,"children":1165},{},[1166],{"type":36,"tag":84,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":47,"value":398},{"type":47,"value":1172}," — The end user's IP address. For best results, forward the value from your request headers (e.g. ",{"type":36,"tag":84,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":47,"value":1178},"X-Forwarded-For",{"type":47,"value":1180},", ",{"type":36,"tag":84,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":47,"value":1186},"CF-Connecting-IP",{"type":47,"value":1188},", or your framework's equivalent).",{"type":36,"tag":72,"props":1190,"children":1191},{},[1192,1200],{"type":36,"tag":76,"props":1193,"children":1194},{},[1195],{"type":36,"tag":84,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":47,"value":419},{"type":47,"value":1201}," — A client-side device fingerprint.",{"type":36,"tag":37,"props":1203,"children":1204},{},[1205],{"type":47,"value":1206},"When either field is provided, Waitlister applies the same fraud detection signals used for form and landing page sign-ups, including IP deduplication, fingerprint matching, velocity checks, and self-referral detection. When neither is provided, API sign-ups work exactly as before with no fraud checks.",{"type":36,"tag":61,"props":1208,"children":1210},{"id":1209},"rate-limits",[1211],{"type":47,"value":1212},"Rate Limits",{"type":36,"tag":37,"props":1214,"children":1215},{},[1216,1218,1225],{"type":47,"value":1217},"See ",{"type":36,"tag":1219,"props":1220,"children":1222},"a",{"href":1221},"\u002Fdocs\u002Fapi\u002Frate-limits",[1223],{"type":47,"value":1224},"API Rate Limits",{"type":47,"value":1226}," for more information.",{"title":125,"searchDepth":1228,"depth":1228,"links":1229},3,[1230,1232,1241,1260,1266,1272],{"id":63,"depth":1231,"text":66},2,{"id":107,"depth":1231,"text":110,"children":1233},[1234,1235,1236],{"id":114,"depth":1228,"text":117},{"id":130,"depth":1228,"text":133},{"id":181,"depth":1228,"text":184,"children":1237},[1238,1240],{"id":199,"depth":1239,"text":202},4,{"id":253,"depth":1239,"text":256},{"id":461,"depth":1231,"text":464,"children":1242},[1243,1245,1247,1249,1253],{"id":479,"depth":1228,"text":1244},"Standard Response (Double Opt-in Disabled) 200",{"id":501,"depth":1228,"text":1246},"Double Opt-in Response (Double Opt-in Enabled) 200",{"id":526,"depth":1228,"text":1248},"Existing Subscriber Response 200",{"id":551,"depth":1228,"text":1250,"children":1251},"Pending Confirmation Response (Double Opt-in) 200",[1252],{"id":576,"depth":1239,"text":579},{"id":844,"depth":1228,"text":847,"children":1254},[1255,1257,1259],{"id":850,"depth":1239,"text":1256},"Bad Request 400",{"id":872,"depth":1239,"text":1258},"Rate Limited 429",{"id":893,"depth":1239,"text":896},{"id":969,"depth":1231,"text":972,"children":1261},[1262,1263,1264,1265],{"id":975,"depth":1228,"text":978},{"id":992,"depth":1228,"text":995},{"id":1007,"depth":1228,"text":1010},{"id":1022,"depth":1228,"text":1025},{"id":1037,"depth":1231,"text":1040,"children":1267},[1268,1269,1270,1271],{"id":1043,"depth":1228,"text":1046},{"id":1072,"depth":1228,"text":1075},{"id":1112,"depth":1228,"text":1115},{"id":1148,"depth":1228,"text":1151},{"id":1209,"depth":1231,"text":1212}]