[{"data":1,"prerenderedAt":1141},["ShallowReactive",2],{"docs-page-meta":3,"docs-page-\u002Fgetting-started\u002Ftemplate-helpers":32},{"pageMeta":4,"generatedAt":31},{"\u002Fall-endpoints\u002Fcreate-flow":5,"\u002Fall-endpoints\u002Fdelete-flow":7,"\u002Fall-endpoints\u002Fget-flow-input":8,"\u002Fall-endpoints\u002Fget-flow-output":9,"\u002Fall-endpoints\u002Fget-flow":10,"\u002Fall-endpoints\u002Fget-template":11,"\u002Fall-endpoints\u002Flist-flow-inputs":12,"\u002Fall-endpoints\u002Flist-flow-outputs":13,"\u002Fall-endpoints\u002Flist-flows":14,"\u002Fall-endpoints\u002Flist-templates":15,"\u002Fall-endpoints\u002Fstart-abort-flow":16,"\u002Fall-endpoints\u002Fupload-flow-input":17,"\u002Fgetting-started\u002Fauthentication":18,"\u002Fgetting-started\u002Fflow-lifecycle":19,"\u002Fgetting-started\u002Fflow":21,"\u002Fgetting-started\u002Fopenapi":22,"\u002Fgetting-started\u002Fplans-and-policies":23,"\u002Fgetting-started\u002Fquickstart":24,"\u002Fgetting-started\u002Ftemplate-helpers":25,"\u002Fgetting-started\u002Ftemplate-image-to-3d":26,"\u002Fgetting-started\u002Ftemplate-optimize-model":27,"\u002Fgetting-started\u002Ftemplate-text-to-3d":28,"\u002Fgetting-started\u002Ftemplates":29,"\u002Fgetting-started\u002Ftroubleshooting":30},{"lastUpdated":6},"2026-08-14T13:36:05.144Z",{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":6},{"lastUpdated":20},"2026-08-14T13:36:05.145Z",{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},{"lastUpdated":20},"2026-08-14T13:38:49.206Z",{"id":33,"title":34,"body":35,"description":1134,"extension":1135,"meta":1136,"navigation":101,"path":1137,"seo":1138,"stem":1139,"__hash__":1140},"docs\u002Fgetting-started\u002Ftemplate-helpers.md","Template Helpers",{"type":36,"value":37,"toc":1126},"minimark",[38,42,46,51,214,218,515,523,950,954,1092,1096,1099,1122],[39,40,34],"h1",{"id":41},"template-helpers",[43,44,45],"p",{},"Use these reusable helpers with all template guides.",[47,48,50],"h2",{"id":49},"authentication-setup-environment-variable","Authentication Setup (Environment Variable)",[52,53,58],"pre",{"className":54,"code":55,"language":56,"meta":57,"style":57},"language-python shiki shiki-themes github-light github-light github-dark","import os\nimport requests\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nAPI_KEY = os.getenv(\"GENERIO_API_KEY\")\nif not API_KEY:\n    raise RuntimeError(\"Missing GENERIO_API_KEY in environment\")\n\nBASE_URL = \"https:\u002F\u002Fflows.generio.ai\"\nHEADERS = {\"Authorization\": f\"Bearer {API_KEY}\"}\n","python","",[59,60,61,74,82,96,103,109,114,134,149,166,171,182],"code",{"__ignoreMap":57},[62,63,66,70],"span",{"class":64,"line":65},"line",1,[62,67,69],{"class":68},"sDD9d","import",[62,71,73],{"class":72},"sVPnS"," os\n",[62,75,77,79],{"class":64,"line":76},2,[62,78,69],{"class":68},[62,80,81],{"class":72}," requests\n",[62,83,85,88,91,93],{"class":64,"line":84},3,[62,86,87],{"class":68},"from",[62,89,90],{"class":72}," dotenv ",[62,92,69],{"class":68},[62,94,95],{"class":72}," load_dotenv\n",[62,97,99],{"class":64,"line":98},4,[62,100,102],{"emptyLinePlaceholder":101},true,"\n",[62,104,106],{"class":64,"line":105},5,[62,107,108],{"class":72},"load_dotenv()\n",[62,110,112],{"class":64,"line":111},6,[62,113,102],{"emptyLinePlaceholder":101},[62,115,117,121,124,127,131],{"class":64,"line":116},7,[62,118,120],{"class":119},"sUNQB","API_KEY",[62,122,123],{"class":68}," =",[62,125,126],{"class":72}," os.getenv(",[62,128,130],{"class":129},"s-HEn","\"GENERIO_API_KEY\"",[62,132,133],{"class":72},")\n",[62,135,137,140,143,146],{"class":64,"line":136},8,[62,138,139],{"class":68},"if",[62,141,142],{"class":68}," not",[62,144,145],{"class":119}," API_KEY",[62,147,148],{"class":72},":\n",[62,150,152,155,158,161,164],{"class":64,"line":151},9,[62,153,154],{"class":68},"    raise",[62,156,157],{"class":119}," RuntimeError",[62,159,160],{"class":72},"(",[62,162,163],{"class":129},"\"Missing GENERIO_API_KEY in environment\"",[62,165,133],{"class":72},[62,167,169],{"class":64,"line":168},10,[62,170,102],{"emptyLinePlaceholder":101},[62,172,174,177,179],{"class":64,"line":173},11,[62,175,176],{"class":119},"BASE_URL",[62,178,123],{"class":68},[62,180,181],{"class":129}," \"https:\u002F\u002Fflows.generio.ai\"\n",[62,183,185,188,190,193,196,199,202,205,208,211],{"class":64,"line":184},12,[62,186,187],{"class":119},"HEADERS",[62,189,123],{"class":68},[62,191,192],{"class":72}," {",[62,194,195],{"class":129},"\"Authorization\"",[62,197,198],{"class":72},": ",[62,200,201],{"class":68},"f",[62,203,204],{"class":129},"\"Bearer ",[62,206,207],{"class":119},"{API_KEY}",[62,209,210],{"class":129},"\"",[62,212,213],{"class":72},"}\n",[47,215,217],{"id":216},"polling-helper","Polling Helper",[52,219,221],{"className":54,"code":220,"language":56,"meta":57,"style":57},"import time\n\nPOLL_INTERVAL_SECONDS = 3\nMAX_WAIT_SECONDS = 360\n\ndef wait_for_flow(flow_id: str):\n    start = time.time()\n    while True:\n        res = requests.get(f\"{BASE_URL}\u002Fflows\u002F{flow_id}\", headers=HEADERS)\n        if res.status_code != 200:\n            raise RuntimeError(f\"Status check failed: {res.status_code} {res.text}\")\n\n        flow = res.json()\n        state = flow.get(\"state\")\n        if state in (\"completed\", \"failed\", \"aborted\"):\n            return flow\n\n        if time.time() - start > MAX_WAIT_SECONDS:\n            raise TimeoutError(\"Flow polling timed out\")\n\n        time.sleep(POLL_INTERVAL_SECONDS)\n",[59,222,223,230,234,244,254,258,276,287,297,341,357,389,393,404,420,449,458,463,485,500,505],{"__ignoreMap":57},[62,224,225,227],{"class":64,"line":65},[62,226,69],{"class":68},[62,228,229],{"class":72}," time\n",[62,231,232],{"class":64,"line":76},[62,233,102],{"emptyLinePlaceholder":101},[62,235,236,239,241],{"class":64,"line":84},[62,237,238],{"class":119},"POLL_INTERVAL_SECONDS",[62,240,123],{"class":68},[62,242,243],{"class":119}," 3\n",[62,245,246,249,251],{"class":64,"line":98},[62,247,248],{"class":119},"MAX_WAIT_SECONDS",[62,250,123],{"class":68},[62,252,253],{"class":119}," 360\n",[62,255,256],{"class":64,"line":105},[62,257,102],{"emptyLinePlaceholder":101},[62,259,260,263,267,270,273],{"class":64,"line":111},[62,261,262],{"class":68},"def",[62,264,266],{"class":265},"sgQzM"," wait_for_flow",[62,268,269],{"class":72},"(flow_id: ",[62,271,272],{"class":119},"str",[62,274,275],{"class":72},"):\n",[62,277,278,281,284],{"class":64,"line":116},[62,279,280],{"class":72},"    start ",[62,282,283],{"class":68},"=",[62,285,286],{"class":72}," time.time()\n",[62,288,289,292,295],{"class":64,"line":136},[62,290,291],{"class":68},"    while",[62,293,294],{"class":119}," True",[62,296,148],{"class":72},[62,298,299,302,304,307,309,311,314,317,320,323,326,328,331,335,337,339],{"class":64,"line":151},[62,300,301],{"class":72},"        res ",[62,303,283],{"class":68},[62,305,306],{"class":72}," requests.get(",[62,308,201],{"class":68},[62,310,210],{"class":129},[62,312,313],{"class":119},"{BASE_URL}",[62,315,316],{"class":129},"\u002Fflows\u002F",[62,318,319],{"class":119},"{",[62,321,322],{"class":72},"flow_id",[62,324,325],{"class":119},"}",[62,327,210],{"class":129},[62,329,330],{"class":72},", ",[62,332,334],{"class":333},"sde8i","headers",[62,336,283],{"class":68},[62,338,187],{"class":119},[62,340,133],{"class":72},[62,342,343,346,349,352,355],{"class":64,"line":168},[62,344,345],{"class":68},"        if",[62,347,348],{"class":72}," res.status_code ",[62,350,351],{"class":68},"!=",[62,353,354],{"class":119}," 200",[62,356,148],{"class":72},[62,358,359,362,364,366,368,371,373,376,378,380,383,385,387],{"class":64,"line":173},[62,360,361],{"class":68},"            raise",[62,363,157],{"class":119},[62,365,160],{"class":72},[62,367,201],{"class":68},[62,369,370],{"class":129},"\"Status check failed: ",[62,372,319],{"class":119},[62,374,375],{"class":72},"res.status_code",[62,377,325],{"class":119},[62,379,192],{"class":119},[62,381,382],{"class":72},"res.text",[62,384,325],{"class":119},[62,386,210],{"class":129},[62,388,133],{"class":72},[62,390,391],{"class":64,"line":184},[62,392,102],{"emptyLinePlaceholder":101},[62,394,396,399,401],{"class":64,"line":395},13,[62,397,398],{"class":72},"        flow ",[62,400,283],{"class":68},[62,402,403],{"class":72}," res.json()\n",[62,405,407,410,412,415,418],{"class":64,"line":406},14,[62,408,409],{"class":72},"        state ",[62,411,283],{"class":68},[62,413,414],{"class":72}," flow.get(",[62,416,417],{"class":129},"\"state\"",[62,419,133],{"class":72},[62,421,423,425,428,431,434,437,439,442,444,447],{"class":64,"line":422},15,[62,424,345],{"class":68},[62,426,427],{"class":72}," state ",[62,429,430],{"class":68},"in",[62,432,433],{"class":72}," (",[62,435,436],{"class":129},"\"completed\"",[62,438,330],{"class":72},[62,440,441],{"class":129},"\"failed\"",[62,443,330],{"class":72},[62,445,446],{"class":129},"\"aborted\"",[62,448,275],{"class":72},[62,450,452,455],{"class":64,"line":451},16,[62,453,454],{"class":68},"            return",[62,456,457],{"class":72}," flow\n",[62,459,461],{"class":64,"line":460},17,[62,462,102],{"emptyLinePlaceholder":101},[62,464,466,468,471,474,477,480,483],{"class":64,"line":465},18,[62,467,345],{"class":68},[62,469,470],{"class":72}," time.time() ",[62,472,473],{"class":68},"-",[62,475,476],{"class":72}," start ",[62,478,479],{"class":68},">",[62,481,482],{"class":119}," MAX_WAIT_SECONDS",[62,484,148],{"class":72},[62,486,488,490,493,495,498],{"class":64,"line":487},19,[62,489,361],{"class":68},[62,491,492],{"class":119}," TimeoutError",[62,494,160],{"class":72},[62,496,497],{"class":129},"\"Flow polling timed out\"",[62,499,133],{"class":72},[62,501,503],{"class":64,"line":502},20,[62,504,102],{"emptyLinePlaceholder":101},[62,506,508,511,513],{"class":64,"line":507},21,[62,509,510],{"class":72},"        time.sleep(",[62,512,238],{"class":119},[62,514,133],{"class":72},[47,516,518,519,522],{"id":517},"output-download-helper-asset_id","Output Download Helper (",[59,520,521],{},"asset_id",")",[52,524,526],{"className":54,"code":525,"language":56,"meta":57,"style":57},"import base64\nfrom pathlib import Path\n\ndef download_outputs(flow_id: str, out_dir: str = \"out\"):\n    out_path = Path(out_dir)\n    out_path.mkdir(parents=True, exist_ok=True)\n\n    outputs_res = requests.get(f\"{BASE_URL}\u002Fflows\u002F{flow_id}\u002Foutputs\", headers=HEADERS)\n    if outputs_res.status_code != 200:\n        raise RuntimeError(f\"Output list failed: {outputs_res.status_code} {outputs_res.text}\")\n\n    outputs = outputs_res.json().get(\"outputs\", [])\n    for item in outputs:\n        asset_id = item[\"asset_id\"]\n        asset_res = requests.get(\n            f\"{BASE_URL}\u002Fflows\u002F{flow_id}\u002Foutputs\u002F{asset_id}?include_data=true\",\n            headers=HEADERS\n        )\n        if asset_res.status_code != 200:\n            raise RuntimeError(f\"Asset download failed for {asset_id}: {asset_res.status_code}\")\n\n        data_uri = asset_res.json()[\"data\"]\n        raw = base64.b64decode(data_uri.split(\",\", 1)[1])\n        file_path = out_path \u002F f\"{asset_id}.glb\"\n        file_path.write_bytes(raw)\n        print(f\"Saved: {file_path}\")\n",[59,527,528,535,547,551,574,584,608,612,648,662,694,698,714,727,743,753,785,795,800,813,845,849,865,892,920,926],{"__ignoreMap":57},[62,529,530,532],{"class":64,"line":65},[62,531,69],{"class":68},[62,533,534],{"class":72}," base64\n",[62,536,537,539,542,544],{"class":64,"line":76},[62,538,87],{"class":68},[62,540,541],{"class":72}," pathlib ",[62,543,69],{"class":68},[62,545,546],{"class":72}," Path\n",[62,548,549],{"class":64,"line":84},[62,550,102],{"emptyLinePlaceholder":101},[62,552,553,555,558,560,562,565,567,569,572],{"class":64,"line":98},[62,554,262],{"class":68},[62,556,557],{"class":265}," download_outputs",[62,559,269],{"class":72},[62,561,272],{"class":119},[62,563,564],{"class":72},", out_dir: ",[62,566,272],{"class":119},[62,568,123],{"class":68},[62,570,571],{"class":129}," \"out\"",[62,573,275],{"class":72},[62,575,576,579,581],{"class":64,"line":105},[62,577,578],{"class":72},"    out_path ",[62,580,283],{"class":68},[62,582,583],{"class":72}," Path(out_dir)\n",[62,585,586,589,592,594,597,599,602,604,606],{"class":64,"line":111},[62,587,588],{"class":72},"    out_path.mkdir(",[62,590,591],{"class":333},"parents",[62,593,283],{"class":68},[62,595,596],{"class":119},"True",[62,598,330],{"class":72},[62,600,601],{"class":333},"exist_ok",[62,603,283],{"class":68},[62,605,596],{"class":119},[62,607,133],{"class":72},[62,609,610],{"class":64,"line":116},[62,611,102],{"emptyLinePlaceholder":101},[62,613,614,617,619,621,623,625,627,629,631,633,635,638,640,642,644,646],{"class":64,"line":136},[62,615,616],{"class":72},"    outputs_res ",[62,618,283],{"class":68},[62,620,306],{"class":72},[62,622,201],{"class":68},[62,624,210],{"class":129},[62,626,313],{"class":119},[62,628,316],{"class":129},[62,630,319],{"class":119},[62,632,322],{"class":72},[62,634,325],{"class":119},[62,636,637],{"class":129},"\u002Foutputs\"",[62,639,330],{"class":72},[62,641,334],{"class":333},[62,643,283],{"class":68},[62,645,187],{"class":119},[62,647,133],{"class":72},[62,649,650,653,656,658,660],{"class":64,"line":151},[62,651,652],{"class":68},"    if",[62,654,655],{"class":72}," outputs_res.status_code ",[62,657,351],{"class":68},[62,659,354],{"class":119},[62,661,148],{"class":72},[62,663,664,667,669,671,673,676,678,681,683,685,688,690,692],{"class":64,"line":168},[62,665,666],{"class":68},"        raise",[62,668,157],{"class":119},[62,670,160],{"class":72},[62,672,201],{"class":68},[62,674,675],{"class":129},"\"Output list failed: ",[62,677,319],{"class":119},[62,679,680],{"class":72},"outputs_res.status_code",[62,682,325],{"class":119},[62,684,192],{"class":119},[62,686,687],{"class":72},"outputs_res.text",[62,689,325],{"class":119},[62,691,210],{"class":129},[62,693,133],{"class":72},[62,695,696],{"class":64,"line":173},[62,697,102],{"emptyLinePlaceholder":101},[62,699,700,703,705,708,711],{"class":64,"line":184},[62,701,702],{"class":72},"    outputs ",[62,704,283],{"class":68},[62,706,707],{"class":72}," outputs_res.json().get(",[62,709,710],{"class":129},"\"outputs\"",[62,712,713],{"class":72},", [])\n",[62,715,716,719,722,724],{"class":64,"line":395},[62,717,718],{"class":68},"    for",[62,720,721],{"class":72}," item ",[62,723,430],{"class":68},[62,725,726],{"class":72}," outputs:\n",[62,728,729,732,734,737,740],{"class":64,"line":406},[62,730,731],{"class":72},"        asset_id ",[62,733,283],{"class":68},[62,735,736],{"class":72}," item[",[62,738,739],{"class":129},"\"asset_id\"",[62,741,742],{"class":72},"]\n",[62,744,745,748,750],{"class":64,"line":422},[62,746,747],{"class":72},"        asset_res ",[62,749,283],{"class":68},[62,751,752],{"class":72}," requests.get(\n",[62,754,755,758,760,762,764,766,768,770,773,775,777,779,782],{"class":64,"line":451},[62,756,757],{"class":68},"            f",[62,759,210],{"class":129},[62,761,313],{"class":119},[62,763,316],{"class":129},[62,765,319],{"class":119},[62,767,322],{"class":72},[62,769,325],{"class":119},[62,771,772],{"class":129},"\u002Foutputs\u002F",[62,774,319],{"class":119},[62,776,521],{"class":72},[62,778,325],{"class":119},[62,780,781],{"class":129},"?include_data=true\"",[62,783,784],{"class":72},",\n",[62,786,787,790,792],{"class":64,"line":460},[62,788,789],{"class":333},"            headers",[62,791,283],{"class":68},[62,793,794],{"class":119},"HEADERS\n",[62,796,797],{"class":64,"line":465},[62,798,799],{"class":72},"        )\n",[62,801,802,804,807,809,811],{"class":64,"line":487},[62,803,345],{"class":68},[62,805,806],{"class":72}," asset_res.status_code ",[62,808,351],{"class":68},[62,810,354],{"class":119},[62,812,148],{"class":72},[62,814,815,817,819,821,823,826,828,830,832,834,836,839,841,843],{"class":64,"line":502},[62,816,361],{"class":68},[62,818,157],{"class":119},[62,820,160],{"class":72},[62,822,201],{"class":68},[62,824,825],{"class":129},"\"Asset download failed for ",[62,827,319],{"class":119},[62,829,521],{"class":72},[62,831,325],{"class":119},[62,833,198],{"class":129},[62,835,319],{"class":119},[62,837,838],{"class":72},"asset_res.status_code",[62,840,325],{"class":119},[62,842,210],{"class":129},[62,844,133],{"class":72},[62,846,847],{"class":64,"line":507},[62,848,102],{"emptyLinePlaceholder":101},[62,850,852,855,857,860,863],{"class":64,"line":851},22,[62,853,854],{"class":72},"        data_uri ",[62,856,283],{"class":68},[62,858,859],{"class":72}," asset_res.json()[",[62,861,862],{"class":129},"\"data\"",[62,864,742],{"class":72},[62,866,868,871,873,876,879,881,884,887,889],{"class":64,"line":867},23,[62,869,870],{"class":72},"        raw ",[62,872,283],{"class":68},[62,874,875],{"class":72}," base64.b64decode(data_uri.split(",[62,877,878],{"class":129},"\",\"",[62,880,330],{"class":72},[62,882,883],{"class":119},"1",[62,885,886],{"class":72},")[",[62,888,883],{"class":119},[62,890,891],{"class":72},"])\n",[62,893,895,898,900,903,906,909,911,913,915,917],{"class":64,"line":894},24,[62,896,897],{"class":72},"        file_path ",[62,899,283],{"class":68},[62,901,902],{"class":72}," out_path ",[62,904,905],{"class":68},"\u002F",[62,907,908],{"class":68}," f",[62,910,210],{"class":129},[62,912,319],{"class":119},[62,914,521],{"class":72},[62,916,325],{"class":119},[62,918,919],{"class":129},".glb\"\n",[62,921,923],{"class":64,"line":922},25,[62,924,925],{"class":72},"        file_path.write_bytes(raw)\n",[62,927,929,932,934,936,939,941,944,946,948],{"class":64,"line":928},26,[62,930,931],{"class":119},"        print",[62,933,160],{"class":72},[62,935,201],{"class":68},[62,937,938],{"class":129},"\"Saved: ",[62,940,319],{"class":119},[62,942,943],{"class":72},"file_path",[62,945,325],{"class":119},[62,947,210],{"class":129},[62,949,133],{"class":72},[47,951,953],{"id":952},"data-url-helpers","Data URL Helpers",[52,955,957],{"className":54,"code":956,"language":56,"meta":57,"style":57},"from pathlib import Path\nfrom base64 import b64encode\n\ndef image_to_data_url(path: Path, mime: str = \"image\u002Fpng\") -> str:\n    encoded = b64encode(path.read_bytes()).decode()\n    return f\"data:{mime};base64,{encoded}\"\n\ndef glb_to_data_url(path: Path) -> str:\n    encoded = b64encode(path.read_bytes()).decode()\n    return f\"data:model\u002Fgltf-binary;base64,{encoded}\"\n",[59,958,959,969,981,985,1009,1019,1049,1053,1067,1075],{"__ignoreMap":57},[62,960,961,963,965,967],{"class":64,"line":65},[62,962,87],{"class":68},[62,964,541],{"class":72},[62,966,69],{"class":68},[62,968,546],{"class":72},[62,970,971,973,976,978],{"class":64,"line":76},[62,972,87],{"class":68},[62,974,975],{"class":72}," base64 ",[62,977,69],{"class":68},[62,979,980],{"class":72}," b64encode\n",[62,982,983],{"class":64,"line":84},[62,984,102],{"emptyLinePlaceholder":101},[62,986,987,989,992,995,997,999,1002,1005,1007],{"class":64,"line":98},[62,988,262],{"class":68},[62,990,991],{"class":265}," image_to_data_url",[62,993,994],{"class":72},"(path: Path, mime: ",[62,996,272],{"class":119},[62,998,123],{"class":68},[62,1000,1001],{"class":129}," \"image\u002Fpng\"",[62,1003,1004],{"class":72},") -> ",[62,1006,272],{"class":119},[62,1008,148],{"class":72},[62,1010,1011,1014,1016],{"class":64,"line":105},[62,1012,1013],{"class":72},"    encoded ",[62,1015,283],{"class":68},[62,1017,1018],{"class":72}," b64encode(path.read_bytes()).decode()\n",[62,1020,1021,1024,1026,1029,1031,1034,1036,1039,1041,1044,1046],{"class":64,"line":111},[62,1022,1023],{"class":68},"    return",[62,1025,908],{"class":68},[62,1027,1028],{"class":129},"\"data:",[62,1030,319],{"class":119},[62,1032,1033],{"class":72},"mime",[62,1035,325],{"class":119},[62,1037,1038],{"class":129},";base64,",[62,1040,319],{"class":119},[62,1042,1043],{"class":72},"encoded",[62,1045,325],{"class":119},[62,1047,1048],{"class":129},"\"\n",[62,1050,1051],{"class":64,"line":116},[62,1052,102],{"emptyLinePlaceholder":101},[62,1054,1055,1057,1060,1063,1065],{"class":64,"line":136},[62,1056,262],{"class":68},[62,1058,1059],{"class":265}," glb_to_data_url",[62,1061,1062],{"class":72},"(path: Path) -> ",[62,1064,272],{"class":119},[62,1066,148],{"class":72},[62,1068,1069,1071,1073],{"class":64,"line":151},[62,1070,1013],{"class":72},[62,1072,283],{"class":68},[62,1074,1018],{"class":72},[62,1076,1077,1079,1081,1084,1086,1088,1090],{"class":64,"line":168},[62,1078,1023],{"class":68},[62,1080,908],{"class":68},[62,1082,1083],{"class":129},"\"data:model\u002Fgltf-binary;base64,",[62,1085,319],{"class":119},[62,1087,1043],{"class":72},[62,1089,325],{"class":119},[62,1091,1048],{"class":129},[47,1093,1095],{"id":1094},"next-step","Next Step",[43,1097,1098],{},"Use these helpers with:",[1100,1101,1102,1110,1116],"ul",{},[1103,1104,1105],"li",{},[1106,1107,1109],"a",{"href":1108},"\u002Fgetting-started\u002Ftemplate-text-to-3d","Text to 3D",[1103,1111,1112],{},[1106,1113,1115],{"href":1114},"\u002Fgetting-started\u002Ftemplate-image-to-3d","Image to 3D",[1103,1117,1118],{},[1106,1119,1121],{"href":1120},"\u002Fgetting-started\u002Ftemplate-optimize-model","Optimize Model",[1123,1124,1125],"style",{},"html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}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 .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 .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 .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sde8i, html code.shiki .sde8i{--shiki-default:#E36209;--shiki-light:#E36209;--shiki-dark:#FFAB70}",{"title":57,"searchDepth":76,"depth":76,"links":1127},[1128,1129,1130,1132,1133],{"id":49,"depth":76,"text":50},{"id":216,"depth":76,"text":217},{"id":517,"depth":76,"text":1131},"Output Download Helper (asset_id)",{"id":952,"depth":76,"text":953},{"id":1094,"depth":76,"text":1095},"Reusable Python helpers for auth, polling, data-url conversion, and output download.","md",{},"\u002Fgetting-started\u002Ftemplate-helpers",{"title":34,"description":1134},"getting-started\u002Ftemplate-helpers","J6GrVv8QjJYo_mHkdO0pe8BE36d75SrZUMI_1Q4Ayok",1786714762983]