[{"data":1,"prerenderedAt":1208},["ShallowReactive",2],{"docs-nav-\u002Fdocs\u002Faccount-takeover\u002Fadvanced\u002Fcustom-implementation":3,"\u002Fdocs\u002Faccount-takeover\u002Fadvanced\u002Fcustom-implementation":45},[4],{"title":5,"path":6,"stem":7,"children":8,"page":26},"Account Takeover","\u002Fdocs\u002Faccount-takeover","1.docs\u002F3.account takeover",[9,13,17,27,36],{"title":10,"path":11,"stem":12},"How it works","\u002Fdocs\u002Faccount-takeover\u002Fhow-account-takeover-protection-works","1.docs\u002F3.account takeover\u002F0.how-account-takeover-protection-works",{"title":14,"path":15,"stem":16},"Quick start","\u002Fdocs\u002Faccount-takeover\u002Fquick-start","1.docs\u002F3.account takeover\u002F1.quick start",{"title":18,"path":19,"stem":20,"children":21,"page":26},"Concepts","\u002Fdocs\u002Faccount-takeover\u002Fconcepts","1.docs\u002F3.account takeover\u002F2.Concepts",[22],{"title":23,"path":24,"stem":25},"Evaluations","\u002Fdocs\u002Faccount-takeover\u002Fconcepts\u002Fevaluations","1.docs\u002F3.account takeover\u002F2.Concepts\u002F0.evaluations",false,{"title":28,"path":29,"stem":30,"children":31,"page":26},"Advanced","\u002Fdocs\u002Faccount-takeover\u002Fadvanced","1.docs\u002F3.account takeover\u002F3.Advanced",[32],{"title":33,"path":34,"stem":35},"Custom implementation","\u002Fdocs\u002Faccount-takeover\u002Fadvanced\u002Fcustom-implementation","1.docs\u002F3.account takeover\u002F3.Advanced\u002F1.custom-implementation",{"title":37,"path":38,"stem":39,"children":40,"page":26},"Migrations","\u002Fdocs\u002Faccount-takeover\u002Fmigrations","1.docs\u002F3.account takeover\u002F4.migrations",[41],{"title":42,"path":43,"stem":44},"Identify → Evaluations","\u002Fdocs\u002Faccount-takeover\u002Fmigrations\u002Fmigrate-from-identify-to-evaluate","1.docs\u002F3.account takeover\u002F4.migrations\u002F0.Migrate-from-identify-to-evaluate",{"id":46,"title":33,"body":47,"description":58,"extension":1201,"meta":1202,"navigation":1204,"path":34,"seo":1205,"sitemap":1206,"stem":35,"__hash__":1207},"docs\u002F1.docs\u002F3.account takeover\u002F3.Advanced\u002F1.custom-implementation.md",{"type":48,"value":49,"toc":1194},"minimark",[50,55,59,66,71,76,83,87,94,138,143,177,180,218,231,240,288,296,299,303,339,431,447,650,717,728,840,867,886,926,970,975,985,1028,1084,1091,1105,1141,1184,1190],[51,52,54],"h1",{"id":53},"account-takeover-protection","Account takeover protection",[56,57,58],"p",{},"Rupt offers a comprehensive account takeover protection solution. Rupt understands if the account is being accessed from a new device or geo-location, or if the account is being used in an unusual way. If so, Rupt will recommend that you challenge or block the login attempt.",[60,61,63],"alert",{"type":62},"tip",[56,64,65],{},"This feature operates under the Zero Trust security model. This is why none of the information about the devices or accounts is seen by the client. The client only gets a hash array that can be used to complete the identification on the server side.",[67,68,70],"h2",{"id":69},"how-to-use-rupt-for-account-takeover-protection","How to use Rupt for account takeover protection",[72,73,75],"h3",{"id":74},"account-takeover-protection-flow","Account takeover protection flow",[56,77,78],{},[79,80],"img",{"alt":81,"src":82},"Account takeover flow","\u002Fimg\u002Fdocs\u002Faccount-takeover-flow.png",[72,84,86],{"id":85},"browser-side","Browser side",[88,89,90],"ol",{},[91,92,93],"li",{},"Install the Rupt Browser SDK:",[95,96,101],"pre",{"className":97,"code":98,"language":99,"meta":100,"style":100},"language-bash shiki shiki-themes material-theme-lighter one-dark-pro monokai","yarn add rupt\n#OR\nnpm install rupt\n","bash","",[102,103,104,120,127],"code",{"__ignoreMap":100},[105,106,109,113,117],"span",{"class":107,"line":108},"line",1,[105,110,112],{"class":111},"sHrIR","yarn",[105,114,116],{"class":115},"siibJ"," add",[105,118,119],{"class":115}," rupt\n",[105,121,123],{"class":107,"line":122},2,[105,124,126],{"class":125},"s42Qa","#OR\n",[105,128,130,133,136],{"class":107,"line":129},3,[105,131,132],{"class":111},"npm",[105,134,135],{"class":115}," install",[105,137,119],{"class":115},[88,139,140],{"start":122},[91,141,142],{},"Include the Rupt Browser SDK on the authentication page:",[95,144,148],{"className":145,"code":146,"language":147,"meta":100,"style":100},"language-js shiki shiki-themes material-theme-lighter one-dark-pro monokai","import Rupt from \"rupt\";\n","js",[102,149,150],{"__ignoreMap":100},[105,151,152,156,160,163,167,170,173],{"class":107,"line":108},[105,153,155],{"class":154},"sAPXc","import",[105,157,159],{"class":158},"seeE2"," Rupt",[105,161,162],{"class":154}," from",[105,164,166],{"class":165},"s9QZx"," \"",[105,168,169],{"class":115},"rupt",[105,171,172],{"class":165},"\"",[105,174,176],{"class":175},"shEKG",";\n",[56,178,179],{},"Or include the Rupt Browser SDK from a CDN:",[95,181,185],{"className":182,"code":183,"language":184,"meta":100,"style":100},"language-html shiki shiki-themes material-theme-lighter one-dark-pro monokai","\u003Cscript src=\"https:\u002F\u002Fcdn.rupt.dev\u002Fjs\u002Frupt.js\">\u003C\u002Fscript>\n","html",[102,186,187],{"__ignoreMap":100},[105,188,189,192,196,200,203,205,208,210,213,215],{"class":107,"line":108},[105,190,191],{"class":175},"\u003C",[105,193,195],{"class":194},"slwgX","script",[105,197,199],{"class":198},"sXIpk"," src",[105,201,202],{"class":175},"=",[105,204,172],{"class":165},[105,206,207],{"class":115},"https:\u002F\u002Fcdn.rupt.dev\u002Fjs\u002Frupt.js",[105,209,172],{"class":165},[105,211,212],{"class":175},">\u003C\u002F",[105,214,195],{"class":194},[105,216,217],{"class":175},">\n",[60,219,220],{"type":62},[56,221,222,223,226,227,230],{},"When using HTML script tags, be sure to wait for the script to be loaded. Rupt will be injected into the ",[102,224,225],{},"window"," so you can use ",[102,228,229],{},"window.Rupt"," instead of Rupt.",[88,232,233],{"start":129},[91,234,235,236,239],{},"Call the ",[102,237,238],{},"getHash"," method from the browser SDK:",[95,241,243],{"className":145,"code":242,"language":147,"meta":100,"style":100},"const [fingerprint, lastFingerprint] = await Rupt.getHash();\n",[102,244,245],{"__ignoreMap":100},[105,246,247,251,254,258,261,264,267,271,274,276,279,282,286],{"class":107,"line":108},[105,248,250],{"class":249},"sHm3x","const",[105,252,253],{"class":175}," [",[105,255,257],{"class":256},"sZ9uN","fingerprint",[105,259,260],{"class":175},",",[105,262,263],{"class":256}," lastFingerprint",[105,265,266],{"class":175},"]",[105,268,270],{"class":269},"sut_7"," =",[105,272,273],{"class":154}," await",[105,275,159],{"class":256},[105,277,278],{"class":175},".",[105,280,238],{"class":281},"sjp9t",[105,283,285],{"class":284},"sJCYa","()",[105,287,176],{"class":175},[56,289,290,291,278],{},"This returns a fingerprint hash array containing the current fingerprint and the last saved fingerprint. These should be sent to the server side separately in your authentication flow. For more information, see ",[292,293,295],"a",{"href":294},"\u002Fapi\u002Fdevices\u002Fretrieve-device-hash","retrieve a device hash",[297,298],"hr",{},[72,300,302],{"id":301},"server-side","Server side",[304,305,308,309],"div",{"className":306},[307],"relative","\n  ",[304,310,315,316,315,322,308],{"className":311},[312,313,314],"absolute","right-0","top-[-40px]","\n    ",[105,317,321],{"className":318},[319,320],"text-sm","pr-2","Language",[323,324,329,330,329,335,315],"select",{"id":325,"className":326},"languageSelect",[323,327,328],"select-bordered","select-sm","\n      ",[331,332,334],"option",{"value":333},"node","Node",[331,336,338],{"value":337},"curl","cURL",[304,340,343,348,374,379],{"className":341},[342],"language-node",[88,344,345],{},[91,346,347],{},"Include the Rupt Node SDK:",[95,349,351],{"className":97,"code":350,"language":99,"meta":100,"style":100},"yarn add @ruptjs\u002Fcore\n#OR\nnpm install @ruptjs\u002Fcore\n",[102,352,353,362,366],{"__ignoreMap":100},[105,354,355,357,359],{"class":107,"line":108},[105,356,112],{"class":111},[105,358,116],{"class":115},[105,360,361],{"class":115}," @ruptjs\u002Fcore\n",[105,363,364],{"class":107,"line":122},[105,365,126],{"class":125},[105,367,368,370,372],{"class":107,"line":129},[105,369,132],{"class":111},[105,371,135],{"class":115},[105,373,361],{"class":115},[88,375,376],{"start":122},[91,377,378],{},"Initialize the Rupt Node SDK with your project API secret:",[95,380,382],{"className":145,"code":381,"language":147,"meta":100,"style":100},"import Rupt from \"@ruptjs\u002Fcore\";\nconst rupt = new Rupt(\"API_SECRET\");\n",[102,383,384,401],{"__ignoreMap":100},[105,385,386,388,390,392,394,397,399],{"class":107,"line":108},[105,387,155],{"class":154},[105,389,159],{"class":158},[105,391,162],{"class":154},[105,393,166],{"class":165},[105,395,396],{"class":115},"@ruptjs\u002Fcore",[105,398,172],{"class":165},[105,400,176],{"class":175},[105,402,403,405,408,410,414,416,419,421,424,426,429],{"class":107,"line":122},[105,404,250],{"class":249},[105,406,407],{"class":256}," rupt",[105,409,270],{"class":269},[105,411,413],{"class":412},"srTuz"," new",[105,415,159],{"class":281},[105,417,418],{"class":284},"(",[105,420,172],{"class":165},[105,422,423],{"class":115},"API_SECRET",[105,425,172],{"class":165},[105,427,428],{"class":284},")",[105,430,176],{"class":175},[56,432,433,437,442,443,446],{},[105,434,436],{"className":435},[342],"3.",[105,438,441],{"className":439},[440],"language-curl","1."," Call the ",[102,444,445],{},"evaluate"," method using the login action and the fingerprint hash and other user information in your authentication flow:",[304,448,450],{"className":449},[342],[95,451,453],{"className":145,"code":452,"language":147,"meta":100,"style":100},"const res = await rupt.evaluate({\n  action: \"login\",\n  user: \"USER_ID\",\n  fingerprint: REQUEST_FINGERPRINT,\n  last_fingerprint: REQUEST_LAST_FINGERPRINT,\n  version: \"2.32.0\",\n  ip: \"IP_ADDRESS\",\n  email: \"EMAIL\",\n  phone: \"PHONE\",\n  metadata: {\n    key: \"value\",\n  },\n});\n",[102,454,455,477,496,512,525,538,555,572,589,606,617,634,640],{"__ignoreMap":100},[105,456,457,459,462,464,466,468,470,472,474],{"class":107,"line":108},[105,458,250],{"class":249},[105,460,461],{"class":256}," res",[105,463,270],{"class":269},[105,465,273],{"class":154},[105,467,407],{"class":256},[105,469,278],{"class":175},[105,471,445],{"class":281},[105,473,418],{"class":284},[105,475,476],{"class":175},"{\n",[105,478,479,483,486,488,491,493],{"class":107,"line":122},[105,480,482],{"class":481},"sUwfj","  action",[105,484,485],{"class":175},":",[105,487,166],{"class":165},[105,489,490],{"class":115},"login",[105,492,172],{"class":165},[105,494,495],{"class":175},",\n",[105,497,498,501,503,505,508,510],{"class":107,"line":129},[105,499,500],{"class":481},"  user",[105,502,485],{"class":175},[105,504,166],{"class":165},[105,506,507],{"class":115},"USER_ID",[105,509,172],{"class":165},[105,511,495],{"class":175},[105,513,515,518,520,523],{"class":107,"line":514},4,[105,516,517],{"class":481},"  fingerprint",[105,519,485],{"class":175},[105,521,522],{"class":256}," REQUEST_FINGERPRINT",[105,524,495],{"class":175},[105,526,528,531,533,536],{"class":107,"line":527},5,[105,529,530],{"class":481},"  last_fingerprint",[105,532,485],{"class":175},[105,534,535],{"class":256}," REQUEST_LAST_FINGERPRINT",[105,537,495],{"class":175},[105,539,541,544,546,548,551,553],{"class":107,"line":540},6,[105,542,543],{"class":481},"  version",[105,545,485],{"class":175},[105,547,166],{"class":165},[105,549,550],{"class":115},"2.32.0",[105,552,172],{"class":165},[105,554,495],{"class":175},[105,556,558,561,563,565,568,570],{"class":107,"line":557},7,[105,559,560],{"class":481},"  ip",[105,562,485],{"class":175},[105,564,166],{"class":165},[105,566,567],{"class":115},"IP_ADDRESS",[105,569,172],{"class":165},[105,571,495],{"class":175},[105,573,575,578,580,582,585,587],{"class":107,"line":574},8,[105,576,577],{"class":481},"  email",[105,579,485],{"class":175},[105,581,166],{"class":165},[105,583,584],{"class":115},"EMAIL",[105,586,172],{"class":165},[105,588,495],{"class":175},[105,590,592,595,597,599,602,604],{"class":107,"line":591},9,[105,593,594],{"class":481},"  phone",[105,596,485],{"class":175},[105,598,166],{"class":165},[105,600,601],{"class":115},"PHONE",[105,603,172],{"class":165},[105,605,495],{"class":175},[105,607,609,612,614],{"class":107,"line":608},10,[105,610,611],{"class":481},"  metadata",[105,613,485],{"class":175},[105,615,616],{"class":175}," {\n",[105,618,620,623,625,627,630,632],{"class":107,"line":619},11,[105,621,622],{"class":481},"    key",[105,624,485],{"class":175},[105,626,166],{"class":165},[105,628,629],{"class":115},"value",[105,631,172],{"class":165},[105,633,495],{"class":175},[105,635,637],{"class":107,"line":636},12,[105,638,639],{"class":175},"  },\n",[105,641,643,646,648],{"class":107,"line":642},13,[105,644,645],{"class":175},"}",[105,647,428],{"class":284},[105,649,176],{"class":175},[304,651,653],{"className":652},[440],[95,654,656],{"className":97,"code":655,"language":99,"meta":100,"style":100},"curl -X POST https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fdevices\u002Fevaluate \\\n  -H \"Authorization: Bearer API_SECRET\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"action\": \"login\", \"user\": \"USER_ID\", \"fingerprint\": \"REQUEST_FINGERPRINT\", \"last_fingerprint\": \"REQUEST_LAST_FINGERPRINT\", \"version\": \"2.32.0\", \"ip\": \"IP_ADDRESS\", \"email\": \"EMAIL\", \"phone\": \"PHONE\", \"metadata\": {\"key\": \"value\"}}'\n",[102,657,658,676,690,703],{"__ignoreMap":100},[105,659,660,662,666,669,672],{"class":107,"line":108},[105,661,337],{"class":111},[105,663,665],{"class":664},"spvyc"," -X",[105,667,668],{"class":115}," POST",[105,670,671],{"class":115}," https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fdevices\u002Fevaluate",[105,673,675],{"class":674},"sIaD8"," \\\n",[105,677,678,681,683,686,688],{"class":107,"line":122},[105,679,680],{"class":664},"  -H",[105,682,166],{"class":165},[105,684,685],{"class":115},"Authorization: Bearer API_SECRET",[105,687,172],{"class":165},[105,689,675],{"class":674},[105,691,692,694,696,699,701],{"class":107,"line":129},[105,693,680],{"class":664},[105,695,166],{"class":165},[105,697,698],{"class":115},"Content-Type: application\u002Fjson",[105,700,172],{"class":165},[105,702,675],{"class":674},[105,704,705,708,711,714],{"class":107,"line":514},[105,706,707],{"class":664},"  -d",[105,709,710],{"class":165}," '",[105,712,713],{"class":115},"{\"action\": \"login\", \"user\": \"USER_ID\", \"fingerprint\": \"REQUEST_FINGERPRINT\", \"last_fingerprint\": \"REQUEST_LAST_FINGERPRINT\", \"version\": \"2.32.0\", \"ip\": \"IP_ADDRESS\", \"email\": \"EMAIL\", \"phone\": \"PHONE\", \"metadata\": {\"key\": \"value\"}}",[105,715,716],{"class":165},"'\n",[56,718,719,723,727],{},[105,720,722],{"className":721},[342],"4.",[105,724,726],{"className":725},[440],"2."," Rupt returns a response that looks like this:",[95,729,733],{"className":730,"code":731,"language":732,"meta":100,"style":100},"language-json shiki shiki-themes material-theme-lighter one-dark-pro monokai","{\n  \"verdict\": \"challenge\",\n  \"fingerprint_id\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n  \"reasons\": [\"new_device\", \"new_ip\"],\n  \"challenge_id\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n}\n","json",[102,734,735,739,764,784,816,835],{"__ignoreMap":100},[105,736,737],{"class":107,"line":108},[105,738,476],{"class":175},[105,740,741,745,749,751,753,756,760,762],{"class":107,"line":122},[105,742,744],{"class":743},"s32IW","  \"",[105,746,748],{"class":747},"s49Q_","verdict",[105,750,172],{"class":743},[105,752,485],{"class":175},[105,754,166],{"class":755},"sw10c",[105,757,759],{"class":758},"s9uTm","challenge",[105,761,172],{"class":755},[105,763,495],{"class":175},[105,765,766,768,771,773,775,777,780,782],{"class":107,"line":129},[105,767,744],{"class":743},[105,769,770],{"class":747},"fingerprint_id",[105,772,172],{"class":743},[105,774,485],{"class":175},[105,776,166],{"class":755},[105,778,779],{"class":758},"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",[105,781,172],{"class":755},[105,783,495],{"class":175},[105,785,786,788,791,793,795,797,799,802,804,806,808,811,813],{"class":107,"line":514},[105,787,744],{"class":743},[105,789,790],{"class":747},"reasons",[105,792,172],{"class":743},[105,794,485],{"class":175},[105,796,253],{"class":175},[105,798,172],{"class":755},[105,800,801],{"class":758},"new_device",[105,803,172],{"class":755},[105,805,260],{"class":175},[105,807,166],{"class":755},[105,809,810],{"class":758},"new_ip",[105,812,172],{"class":755},[105,814,815],{"class":175},"],\n",[105,817,818,820,823,825,827,829,831,833],{"class":107,"line":527},[105,819,744],{"class":743},[105,821,822],{"class":747},"challenge_id",[105,824,172],{"class":743},[105,826,485],{"class":175},[105,828,166],{"class":755},[105,830,779],{"class":758},[105,832,172],{"class":755},[105,834,495],{"class":175},[105,836,837],{"class":107,"line":540},[105,838,839],{"class":175},"}\n",[56,841,842,843,845,846,845,849,845,852,855,856,859,860,862,863,278],{},"The verdict will be either ",[102,844,759],{},", ",[102,847,848],{},"allow",[102,850,851],{},"restrict",[102,853,854],{},"challenge_and_restrict",", or ",[102,857,858],{},"deny",". The ",[102,861,822],{}," can be used to perform a two-factor authentication challenge using the send challenge code method. For more information, see ",[292,864,866],{"href":865},"\u002Fapi\u002Fchallenges\u002Fsend-challenge-code","send a challenge code",[56,868,869,873,876,877,879,880,882,883,885],{},[105,870,872],{"className":871},[342],"5.",[105,874,436],{"className":875},[440]," If the verdict is ",[102,878,759],{},", a ",[102,881,822],{}," is returned. Using the ",[102,884,822],{},", send the challenge code to the user and wait for the response:",[304,887,889],{"className":888},[342],[95,890,892],{"className":145,"code":891,"language":147,"meta":100,"style":100},"const { challenge_id } = await rupt.sendChallengeCode(challenge_id);\n",[102,893,894],{"__ignoreMap":100},[105,895,896,898,901,904,907,909,911,913,915,918,920,922,924],{"class":107,"line":108},[105,897,250],{"class":249},[105,899,900],{"class":175}," {",[105,902,903],{"class":256}," challenge_id",[105,905,906],{"class":175}," }",[105,908,270],{"class":269},[105,910,273],{"class":154},[105,912,407],{"class":256},[105,914,278],{"class":175},[105,916,917],{"class":281},"sendChallengeCode",[105,919,418],{"class":284},[105,921,822],{"class":158},[105,923,428],{"class":284},[105,925,176],{"class":175},[304,927,929],{"className":928},[440],[95,930,932],{"className":97,"code":931,"language":99,"meta":100,"style":100},"curl -X POST https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fsend \\\n  -H \"Authorization: Bearer API_SECRET\" \\\n  -H \"Content-Type: application\u002Fjson\"\n",[102,933,934,947,959],{"__ignoreMap":100},[105,935,936,938,940,942,945],{"class":107,"line":108},[105,937,337],{"class":111},[105,939,665],{"class":664},[105,941,668],{"class":115},[105,943,944],{"class":115}," https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fsend",[105,946,675],{"class":674},[105,948,949,951,953,955,957],{"class":107,"line":122},[105,950,680],{"class":664},[105,952,166],{"class":165},[105,954,685],{"class":115},[105,956,172],{"class":165},[105,958,675],{"class":674},[105,960,961,963,965,967],{"class":107,"line":129},[105,962,680],{"class":664},[105,964,166],{"class":165},[105,966,698],{"class":115},[105,968,969],{"class":165},"\"\n",[56,971,972,973,278],{},"This will send a challenge code to the user. For more information, see ",[292,974,866],{"href":865},[56,976,977,981,984],{},[105,978,980],{"className":979},[342],"6.",[105,982,722],{"className":983},[440]," With the user provided challenge code, verify the response:",[304,986,988],{"className":987},[342],[95,989,991],{"className":145,"code":990,"language":147,"meta":100,"style":100},"const { success } = await rupt.verifyChallengeCode(challenge_id, code);\n",[102,992,993],{"__ignoreMap":100},[105,994,995,997,999,1002,1004,1006,1008,1010,1012,1015,1017,1019,1021,1024,1026],{"class":107,"line":108},[105,996,250],{"class":249},[105,998,900],{"class":175},[105,1000,1001],{"class":256}," success",[105,1003,906],{"class":175},[105,1005,270],{"class":269},[105,1007,273],{"class":154},[105,1009,407],{"class":256},[105,1011,278],{"class":175},[105,1013,1014],{"class":281},"verifyChallengeCode",[105,1016,418],{"class":284},[105,1018,822],{"class":158},[105,1020,260],{"class":175},[105,1022,1023],{"class":158}," code",[105,1025,428],{"class":284},[105,1027,176],{"class":175},[304,1029,1031],{"className":1030},[440],[95,1032,1034],{"className":97,"code":1033,"language":99,"meta":100,"style":100},"curl -X POST https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fverify \\\n  -H \"Authorization: Bearer API_SECRET\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"code\": \"123456\"}'\n",[102,1035,1036,1049,1061,1073],{"__ignoreMap":100},[105,1037,1038,1040,1042,1044,1047],{"class":107,"line":108},[105,1039,337],{"class":111},[105,1041,665],{"class":664},[105,1043,668],{"class":115},[105,1045,1046],{"class":115}," https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fverify",[105,1048,675],{"class":674},[105,1050,1051,1053,1055,1057,1059],{"class":107,"line":122},[105,1052,680],{"class":664},[105,1054,166],{"class":165},[105,1056,685],{"class":115},[105,1058,172],{"class":165},[105,1060,675],{"class":674},[105,1062,1063,1065,1067,1069,1071],{"class":107,"line":129},[105,1064,680],{"class":664},[105,1066,166],{"class":165},[105,1068,698],{"class":115},[105,1070,172],{"class":165},[105,1072,675],{"class":674},[105,1074,1075,1077,1079,1082],{"class":107,"line":514},[105,1076,707],{"class":664},[105,1078,710],{"class":165},[105,1080,1081],{"class":115},"{\"code\": \"123456\"}",[105,1083,716],{"class":165},[56,1085,1086,1087,278],{},"For more information, see ",[292,1088,1090],{"href":1089},"\u002Fapi\u002Fchallenges\u002Fverify-challenge-code","verify a challenge code",[56,1092,1093,1097,1100,1101,1104],{},[105,1094,1096],{"className":1095},[342],"7.",[105,1098,872],{"className":1099},[440]," Complete the challenge following verification. This will ensure that the user will not be asked to verify the challenge code again for the same reasons. You can use the ",[102,1102,1103],{},"completeChallenge"," method:",[304,1106,1108],{"className":1107},[342],[95,1109,1111],{"className":145,"code":1110,"language":147,"meta":100,"style":100},"const { success } = await rupt.completeChallenge(challenge_id);\n",[102,1112,1113],{"__ignoreMap":100},[105,1114,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139],{"class":107,"line":108},[105,1116,250],{"class":249},[105,1118,900],{"class":175},[105,1120,1001],{"class":256},[105,1122,906],{"class":175},[105,1124,270],{"class":269},[105,1126,273],{"class":154},[105,1128,407],{"class":256},[105,1130,278],{"class":175},[105,1132,1103],{"class":281},[105,1134,418],{"class":284},[105,1136,822],{"class":158},[105,1138,428],{"class":284},[105,1140,176],{"class":175},[304,1142,1144],{"className":1143},[440],[95,1145,1147],{"className":97,"code":1146,"language":99,"meta":100,"style":100},"curl -X POST https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fcomplete \\\n  -H \"Authorization: Bearer API_SECRET\" \\\n  -H \"Content-Type: application\u002Fjson\"\n",[102,1148,1149,1162,1174],{"__ignoreMap":100},[105,1150,1151,1153,1155,1157,1160],{"class":107,"line":108},[105,1152,337],{"class":111},[105,1154,665],{"class":664},[105,1156,668],{"class":115},[105,1158,1159],{"class":115}," https:\u002F\u002Fapi.rupt.com\u002Fv2\u002Fchallenges\u002FCHALLENGE_ID\u002Fcomplete",[105,1161,675],{"class":674},[105,1163,1164,1166,1168,1170,1172],{"class":107,"line":122},[105,1165,680],{"class":664},[105,1167,166],{"class":165},[105,1169,685],{"class":115},[105,1171,172],{"class":165},[105,1173,675],{"class":674},[105,1175,1176,1178,1180,1182],{"class":107,"line":129},[105,1177,680],{"class":664},[105,1179,166],{"class":165},[105,1181,698],{"class":115},[105,1183,969],{"class":165},[56,1185,1086,1186,278],{},[292,1187,1189],{"href":1188},"\u002Fapi\u002Fchallenges\u002Fcomplete-challenge","complete a challenge",[1191,1192,1193],"style",{},"html pre.shiki code .sHrIR, html code.shiki .sHrIR{--shiki-light:#E2931D;--shiki-default:#61AFEF;--shiki-dark:#A6E22E}html pre.shiki code .siibJ, html code.shiki .siibJ{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#E6DB74}html pre.shiki code .s42Qa, html code.shiki .s42Qa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7F848E;--shiki-default-font-style:italic;--shiki-dark:#88846F;--shiki-dark-font-style:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sAPXc, html code.shiki .sAPXc{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#C678DD;--shiki-default-font-style:inherit;--shiki-dark:#F92672;--shiki-dark-font-style:inherit}html pre.shiki code .seeE2, html code.shiki .seeE2{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#F8F8F2}html pre.shiki code .s9QZx, html code.shiki .s9QZx{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#E6DB74}html pre.shiki code .shEKG, html code.shiki .shEKG{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#F8F8F2}html pre.shiki code .slwgX, html code.shiki .slwgX{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#F92672}html pre.shiki code .sXIpk, html code.shiki .sXIpk{--shiki-light:#9C3EDA;--shiki-default:#D19A66;--shiki-dark:#A6E22E}html pre.shiki code .sHm3x, html code.shiki .sHm3x{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#C678DD;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .sZ9uN, html code.shiki .sZ9uN{--shiki-light:#90A4AE;--shiki-default:#E5C07B;--shiki-dark:#F8F8F2}html pre.shiki code .sut_7, html code.shiki .sut_7{--shiki-light:#39ADB5;--shiki-default:#56B6C2;--shiki-dark:#F92672}html pre.shiki code .sjp9t, html code.shiki .sjp9t{--shiki-light:#6182B8;--shiki-default:#61AFEF;--shiki-dark:#A6E22E}html pre.shiki code .sJCYa, html code.shiki .sJCYa{--shiki-light:#90A4AE;--shiki-default:#ABB2BF;--shiki-dark:#F8F8F2}html pre.shiki code .srTuz, html code.shiki .srTuz{--shiki-light:#39ADB5;--shiki-default:#C678DD;--shiki-dark:#F92672}html pre.shiki code .sUwfj, html code.shiki .sUwfj{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#F8F8F2}html pre.shiki code .spvyc, html code.shiki .spvyc{--shiki-light:#91B859;--shiki-default:#D19A66;--shiki-dark:#AE81FF}html pre.shiki code .sIaD8, html code.shiki .sIaD8{--shiki-light:#90A4AE;--shiki-default:#56B6C2;--shiki-dark:#AE81FF}html pre.shiki code .s32IW, html code.shiki .s32IW{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#E06C75;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .s49Q_, html code.shiki .s49Q_{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#E06C75;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .sw10c, html code.shiki .sw10c{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#CFCFC2}html pre.shiki code .s9uTm, html code.shiki .s9uTm{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#CFCFC2}",{"title":100,"searchDepth":122,"depth":122,"links":1195},[1196],{"id":69,"depth":122,"text":70,"children":1197},[1198,1199,1200],{"id":74,"depth":129,"text":75},{"id":85,"depth":129,"text":86},{"id":301,"depth":129,"text":302},"md",{"head":1203},{"title":54},true,{"title":33,"description":58},{"loc":34},"WFiR99aZCnSCuAxW60ccqY_6vEF1_3hTy_-qFhF5EPw",1780344897749]