[{"data":1,"prerenderedAt":4007},["ShallowReactive",2],{"navigation_docs":3,"-http-api":57,"-http-api-surround":4002},[4,8,12,16,20,24,28],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","1.introduction",{"title":9,"path":10,"stem":11},"Installation","\u002Finstallation","2.installation",{"title":13,"path":14,"stem":15},"SDKs","\u002Fsdk","3.sdk",{"title":17,"path":18,"stem":19},"Dashboard","\u002Fdashboard","4.dashboard",{"title":21,"path":22,"stem":23},"HTTP API","\u002Fhttp-api","5.http-api",{"title":25,"path":26,"stem":27},"Image Transformations","\u002Ftransformations","6.transformations",{"title":29,"path":30,"stem":31,"children":32},"Framework Components","\u002Fframeworks","frameworks",[33,37,41,45,49,53],{"title":34,"path":35,"stem":36},"Dart","\u002Fframeworks\u002Fdart","frameworks\u002Fdart",{"title":38,"path":39,"stem":40},"Flutter","\u002Fframeworks\u002Fflutter","frameworks\u002Fflutter",{"title":42,"path":43,"stem":44},"Qwik","\u002Fframeworks\u002Fqwik","frameworks\u002Fqwik",{"title":46,"path":47,"stem":48},"React","\u002Fframeworks\u002Freact","frameworks\u002Freact",{"title":50,"path":51,"stem":52},"Svelte","\u002Fframeworks\u002Fsvelte","frameworks\u002Fsvelte",{"title":54,"path":55,"stem":56},"Vue","\u002Fframeworks\u002Fvue","frameworks\u002Fvue",{"id":58,"title":21,"body":59,"description":3996,"extension":3997,"links":3998,"meta":3999,"navigation":379,"path":22,"seo":4000,"stem":23,"__hash__":4001},"docs\u002F5.http-api.md",{"type":60,"value":61,"toc":3965},"minimark",[62,66,69,92,97,108,133,144,148,155,166,170,177,184,189,214,217,221,353,355,359,667,669,673,954,956,960,1219,1221,1225,1725,1727,1731,2286,2288,2292,2295,2300,2303,2435,2439,2442,2449,2543,2547,2722,2724,2728,2731,2748,2752,2757,2761,2924,2928,2966,2968,2972,2975,2979,2982,3011,3015,3018,3025,3080,3084,3095,3099,3102,3109,3113,3120,3218,3222,3229,3234,3768,3772,3932,3952,3961],[63,64,65],"p",{},"PichaFlow can be integrated into any language or framework that supports HTTP requests.",[63,67,68],{},"The PichaFlow Edge Engine is split into two specialized endpoints:",[70,71,72,84],"ul",{},[73,74,75,79,80],"li",{},[76,77,78],"strong",{},"Uploads",": ",[81,82,83],"code",{},"https:\u002F\u002Fegn.pichaflow.com\u002Fv1",[73,85,86,79,89],{},[76,87,88],{},"Asset Delivery & Transformations",[81,90,91],{},"https:\u002F\u002Fcdn.pichaflow.com",[93,94,96],"h2",{"id":95},"authentication","Authentication",[63,98,99,100,103,104,107],{},"All requests must include your ",[76,101,102],{},"Secret Key"," in the ",[81,105,106],{},"Authorization"," header as a Bearer token.",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Authorization: Bearer sk_live_your_secret_key\n","bash","",[81,116,117],{"__ignoreMap":114},[118,119,122,126,130],"span",{"class":120,"line":121},"line",1,[118,123,125],{"class":124},"sBMFI","Authorization:",[118,127,129],{"class":128},"sfazB"," Bearer",[118,131,132],{"class":128}," sk_live_your_secret_key\n",[134,135,137,140,141,143],"alert",{"type":136},"info",[76,138,139],{},"Security Note",": For server-to-server integrations, only the ",[81,142,106],{}," header is required.",[93,145,147],{"id":146},"payload-limits-pre-optimization","Payload Limits & Pre-Optimization",[63,149,150,151,154],{},"To guarantee ultra-fast edge processing, the PichaFlow Edge Engine enforces a strict ",[76,152,153],{},"5MB"," file size limit on all direct HTTP API uploads.",[63,156,157,158,161,162,165],{},"If you are uploading via a backend server (bypassing our frontend SDKs), you ",[76,159,160],{},"must"," compress your images down to a maximum of 2048px (ideally WebP) before making the POST request. Uploads exceeding 5MB will be rejected with a ",[81,163,164],{},"413 Payload Too Large"," error.",[93,167,169],{"id":168},"directory-organization","Directory Organization",[63,171,172,173,176],{},"You can organize uploads into directories by including the optional ",[81,174,175],{},"directory"," field. The directory path becomes part of the asset's permanent delivery URL.",[134,178,180,183],{"type":179},"warning",[76,181,182],{},"URL Permanence",": Once uploaded, an asset's directory path is permanent. You cannot move or rename assets between directories — doing so would break live delivery URLs. Plan your directory structure before uploading.",[63,185,186],{},[76,187,188],{},"Rules:",[70,190,191,194,201,207],{},[73,192,193],{},"Directory names may only contain letters, numbers, hyphens, and underscores.",[73,195,196,197,200],{},"Nested directories are supported (e.g., ",[81,198,199],{},"products\u002Fsummer\u002F2026\u002F",").",[73,202,203,204,206],{},"If ",[81,205,175],{}," is omitted, assets are stored at the project root.",[73,208,209,210,213],{},"Path traversal attempts (e.g., ",[81,211,212],{},"..\u002F",") are automatically stripped.",[215,216],"hr",{},[93,218,220],{"id":219},"_1-uploading-images-curl","1. Uploading Images (cURL)",[109,222,224],{"className":111,"code":223,"language":113,"meta":114,"style":114},"curl -X POST https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload \\\n  -H \"Authorization: Bearer sk_live_...\" \\\n  -F \"file=@\u002Fpath\u002Fto\u002Fyour\u002Fimage.jpg\" \\\n  -F \"tenantId=pf_prj_your_id\" \\\n  -F \"directory=products\u002Fhero\" \\\n  -F \"alt=Description for SEO\" \\\n  -F \"tags=[\\\"ecommerce\\\", \\\"summer\\\"]\"\n",[81,225,226,244,262,277,291,305,319],{"__ignoreMap":114},[118,227,228,231,234,237,240],{"class":120,"line":121},[118,229,230],{"class":124},"curl",[118,232,233],{"class":128}," -X",[118,235,236],{"class":128}," POST",[118,238,239],{"class":128}," https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload",[118,241,243],{"class":242},"sTEyZ"," \\\n",[118,245,247,250,254,257,260],{"class":120,"line":246},2,[118,248,249],{"class":128},"  -H",[118,251,253],{"class":252},"sMK4o"," \"",[118,255,256],{"class":128},"Authorization: Bearer sk_live_...",[118,258,259],{"class":252},"\"",[118,261,243],{"class":242},[118,263,265,268,270,273,275],{"class":120,"line":264},3,[118,266,267],{"class":128},"  -F",[118,269,253],{"class":252},[118,271,272],{"class":128},"file=@\u002Fpath\u002Fto\u002Fyour\u002Fimage.jpg",[118,274,259],{"class":252},[118,276,243],{"class":242},[118,278,280,282,284,287,289],{"class":120,"line":279},4,[118,281,267],{"class":128},[118,283,253],{"class":252},[118,285,286],{"class":128},"tenantId=pf_prj_your_id",[118,288,259],{"class":252},[118,290,243],{"class":242},[118,292,294,296,298,301,303],{"class":120,"line":293},5,[118,295,267],{"class":128},[118,297,253],{"class":252},[118,299,300],{"class":128},"directory=products\u002Fhero",[118,302,259],{"class":252},[118,304,243],{"class":242},[118,306,308,310,312,315,317],{"class":120,"line":307},6,[118,309,267],{"class":128},[118,311,253],{"class":252},[118,313,314],{"class":128},"alt=Description for SEO",[118,316,259],{"class":252},[118,318,243],{"class":242},[118,320,322,324,326,329,332,335,337,340,342,345,347,350],{"class":120,"line":321},7,[118,323,267],{"class":128},[118,325,253],{"class":252},[118,327,328],{"class":128},"tags=[",[118,330,331],{"class":242},"\\\"",[118,333,334],{"class":128},"ecommerce",[118,336,331],{"class":242},[118,338,339],{"class":128},", ",[118,341,331],{"class":242},[118,343,344],{"class":128},"summer",[118,346,331],{"class":242},[118,348,349],{"class":128},"]",[118,351,352],{"class":252},"\"\n",[215,354],{},[93,356,358],{"id":357},"_2-python-integration","2. Python Integration",[109,360,364],{"className":361,"code":362,"language":363,"meta":114,"style":114},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import requests\n\nurl = \"https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload\"\nheaders = {\n    \"Authorization\": \"Bearer sk_live_your_secret_key\"\n}\nfiles = {\n    \"file\": open(\"product.jpg\", \"rb\")\n}\ndata = {\n    \"tenantId\": \"pf_prj_your_id\",\n    \"directory\": \"products\u002Fboots\",\n    \"alt\": \"Summer Collection Boot\",\n    \"tags\": \"[\\\"ecommerce\\\"]\"\n}\n\nresponse = requests.post(url, headers=headers, files=files, data=data)\nprint(response.json())\n","python",[81,365,366,375,381,396,406,425,430,439,478,483,493,515,535,556,583,588,593,648],{"__ignoreMap":114},[118,367,368,372],{"class":120,"line":121},[118,369,371],{"class":370},"s7zQu","import",[118,373,374],{"class":242}," requests\n",[118,376,377],{"class":120,"line":246},[118,378,380],{"emptyLinePlaceholder":379},true,"\n",[118,382,383,386,389,391,394],{"class":120,"line":264},[118,384,385],{"class":242},"url ",[118,387,388],{"class":252},"=",[118,390,253],{"class":252},[118,392,393],{"class":128},"https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload",[118,395,352],{"class":252},[118,397,398,401,403],{"class":120,"line":279},[118,399,400],{"class":242},"headers ",[118,402,388],{"class":252},[118,404,405],{"class":252}," {\n",[118,407,408,411,413,415,418,420,423],{"class":120,"line":293},[118,409,410],{"class":252},"    \"",[118,412,106],{"class":128},[118,414,259],{"class":252},[118,416,417],{"class":252},":",[118,419,253],{"class":252},[118,421,422],{"class":128},"Bearer sk_live_your_secret_key",[118,424,352],{"class":252},[118,426,427],{"class":120,"line":307},[118,428,429],{"class":252},"}\n",[118,431,432,435,437],{"class":120,"line":321},[118,433,434],{"class":242},"files ",[118,436,388],{"class":252},[118,438,405],{"class":252},[118,440,442,444,447,449,451,455,458,460,463,465,468,470,473,475],{"class":120,"line":441},8,[118,443,410],{"class":252},[118,445,446],{"class":128},"file",[118,448,259],{"class":252},[118,450,417],{"class":252},[118,452,454],{"class":453},"s2Zo4"," open",[118,456,457],{"class":252},"(",[118,459,259],{"class":252},[118,461,462],{"class":128},"product.jpg",[118,464,259],{"class":252},[118,466,467],{"class":252},",",[118,469,253],{"class":252},[118,471,472],{"class":128},"rb",[118,474,259],{"class":252},[118,476,477],{"class":252},")\n",[118,479,481],{"class":120,"line":480},9,[118,482,429],{"class":252},[118,484,486,489,491],{"class":120,"line":485},10,[118,487,488],{"class":242},"data ",[118,490,388],{"class":252},[118,492,405],{"class":252},[118,494,496,498,501,503,505,507,510,512],{"class":120,"line":495},11,[118,497,410],{"class":252},[118,499,500],{"class":128},"tenantId",[118,502,259],{"class":252},[118,504,417],{"class":252},[118,506,253],{"class":252},[118,508,509],{"class":128},"pf_prj_your_id",[118,511,259],{"class":252},[118,513,514],{"class":252},",\n",[118,516,518,520,522,524,526,528,531,533],{"class":120,"line":517},12,[118,519,410],{"class":252},[118,521,175],{"class":128},[118,523,259],{"class":252},[118,525,417],{"class":252},[118,527,253],{"class":252},[118,529,530],{"class":128},"products\u002Fboots",[118,532,259],{"class":252},[118,534,514],{"class":252},[118,536,538,540,543,545,547,549,552,554],{"class":120,"line":537},13,[118,539,410],{"class":252},[118,541,542],{"class":128},"alt",[118,544,259],{"class":252},[118,546,417],{"class":252},[118,548,253],{"class":252},[118,550,551],{"class":128},"Summer Collection Boot",[118,553,259],{"class":252},[118,555,514],{"class":252},[118,557,559,561,564,566,568,570,573,575,577,579,581],{"class":120,"line":558},14,[118,560,410],{"class":252},[118,562,563],{"class":128},"tags",[118,565,259],{"class":252},[118,567,417],{"class":252},[118,569,253],{"class":252},[118,571,572],{"class":128},"[",[118,574,331],{"class":242},[118,576,334],{"class":128},[118,578,331],{"class":242},[118,580,349],{"class":128},[118,582,352],{"class":252},[118,584,586],{"class":120,"line":585},15,[118,587,429],{"class":252},[118,589,591],{"class":120,"line":590},16,[118,592,380],{"emptyLinePlaceholder":379},[118,594,596,599,601,604,607,610,612,615,617,621,623,626,628,631,633,636,638,641,643,646],{"class":120,"line":595},17,[118,597,598],{"class":242},"response ",[118,600,388],{"class":252},[118,602,603],{"class":242}," requests",[118,605,606],{"class":252},".",[118,608,609],{"class":453},"post",[118,611,457],{"class":252},[118,613,614],{"class":453},"url",[118,616,467],{"class":252},[118,618,620],{"class":619},"sHdIc"," headers",[118,622,388],{"class":252},[118,624,625],{"class":453},"headers",[118,627,467],{"class":252},[118,629,630],{"class":619}," files",[118,632,388],{"class":252},[118,634,635],{"class":453},"files",[118,637,467],{"class":252},[118,639,640],{"class":619}," data",[118,642,388],{"class":252},[118,644,645],{"class":453},"data",[118,647,477],{"class":252},[118,649,651,654,656,659,661,664],{"class":120,"line":650},18,[118,652,653],{"class":453},"print",[118,655,457],{"class":252},[118,657,658],{"class":453},"response",[118,660,606],{"class":252},[118,662,663],{"class":453},"json",[118,665,666],{"class":252},"())\n",[215,668],{},[93,670,672],{"id":671},"_3-nodejs-fetch","3. Node.js (Fetch)",[109,674,678],{"className":675,"code":676,"language":677,"meta":114,"style":114},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const formData = new FormData();\nformData.append('file', fileInput.files[0]);\nformData.append('tenantId', 'pf_prj_your_id');\nformData.append('directory', 'furniture\u002Fsofas');\nformData.append('alt', 'Modern Sofa');\n\nconst response = await fetch('https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload', {\n  method: 'POST',\n  headers: {\n    'Authorization': 'Bearer sk_live_your_secret_key'\n  },\n  body: formData\n});\n\nconst result = await response.json();\n","js",[81,679,680,703,741,771,800,829,833,860,877,886,904,909,919,928,932],{"__ignoreMap":114},[118,681,682,686,689,691,694,697,700],{"class":120,"line":121},[118,683,685],{"class":684},"spNyl","const",[118,687,688],{"class":242}," formData ",[118,690,388],{"class":252},[118,692,693],{"class":252}," new",[118,695,696],{"class":453}," FormData",[118,698,699],{"class":242},"()",[118,701,702],{"class":252},";\n",[118,704,705,708,710,713,715,718,720,722,724,727,729,732,736,739],{"class":120,"line":246},[118,706,707],{"class":242},"formData",[118,709,606],{"class":252},[118,711,712],{"class":453},"append",[118,714,457],{"class":242},[118,716,717],{"class":252},"'",[118,719,446],{"class":128},[118,721,717],{"class":252},[118,723,467],{"class":252},[118,725,726],{"class":242}," fileInput",[118,728,606],{"class":252},[118,730,731],{"class":242},"files[",[118,733,735],{"class":734},"sbssI","0",[118,737,738],{"class":242},"])",[118,740,702],{"class":252},[118,742,743,745,747,749,751,753,755,757,759,762,764,766,769],{"class":120,"line":264},[118,744,707],{"class":242},[118,746,606],{"class":252},[118,748,712],{"class":453},[118,750,457],{"class":242},[118,752,717],{"class":252},[118,754,500],{"class":128},[118,756,717],{"class":252},[118,758,467],{"class":252},[118,760,761],{"class":252}," '",[118,763,509],{"class":128},[118,765,717],{"class":252},[118,767,768],{"class":242},")",[118,770,702],{"class":252},[118,772,773,775,777,779,781,783,785,787,789,791,794,796,798],{"class":120,"line":279},[118,774,707],{"class":242},[118,776,606],{"class":252},[118,778,712],{"class":453},[118,780,457],{"class":242},[118,782,717],{"class":252},[118,784,175],{"class":128},[118,786,717],{"class":252},[118,788,467],{"class":252},[118,790,761],{"class":252},[118,792,793],{"class":128},"furniture\u002Fsofas",[118,795,717],{"class":252},[118,797,768],{"class":242},[118,799,702],{"class":252},[118,801,802,804,806,808,810,812,814,816,818,820,823,825,827],{"class":120,"line":293},[118,803,707],{"class":242},[118,805,606],{"class":252},[118,807,712],{"class":453},[118,809,457],{"class":242},[118,811,717],{"class":252},[118,813,542],{"class":128},[118,815,717],{"class":252},[118,817,467],{"class":252},[118,819,761],{"class":252},[118,821,822],{"class":128},"Modern Sofa",[118,824,717],{"class":252},[118,826,768],{"class":242},[118,828,702],{"class":252},[118,830,831],{"class":120,"line":307},[118,832,380],{"emptyLinePlaceholder":379},[118,834,835,837,840,842,845,848,850,852,854,856,858],{"class":120,"line":321},[118,836,685],{"class":684},[118,838,839],{"class":242}," response ",[118,841,388],{"class":252},[118,843,844],{"class":370}," await",[118,846,847],{"class":453}," fetch",[118,849,457],{"class":242},[118,851,717],{"class":252},[118,853,393],{"class":128},[118,855,717],{"class":252},[118,857,467],{"class":252},[118,859,405],{"class":252},[118,861,862,866,868,870,873,875],{"class":120,"line":441},[118,863,865],{"class":864},"swJcz","  method",[118,867,417],{"class":252},[118,869,761],{"class":252},[118,871,872],{"class":128},"POST",[118,874,717],{"class":252},[118,876,514],{"class":252},[118,878,879,882,884],{"class":120,"line":480},[118,880,881],{"class":864},"  headers",[118,883,417],{"class":252},[118,885,405],{"class":252},[118,887,888,891,893,895,897,899,901],{"class":120,"line":485},[118,889,890],{"class":252},"    '",[118,892,106],{"class":864},[118,894,717],{"class":252},[118,896,417],{"class":252},[118,898,761],{"class":252},[118,900,422],{"class":128},[118,902,903],{"class":252},"'\n",[118,905,906],{"class":120,"line":495},[118,907,908],{"class":252},"  },\n",[118,910,911,914,916],{"class":120,"line":517},[118,912,913],{"class":864},"  body",[118,915,417],{"class":252},[118,917,918],{"class":242}," formData\n",[118,920,921,924,926],{"class":120,"line":537},[118,922,923],{"class":252},"}",[118,925,768],{"class":242},[118,927,702],{"class":252},[118,929,930],{"class":120,"line":558},[118,931,380],{"emptyLinePlaceholder":379},[118,933,934,936,939,941,943,946,948,950,952],{"class":120,"line":585},[118,935,685],{"class":684},[118,937,938],{"class":242}," result ",[118,940,388],{"class":252},[118,942,844],{"class":370},[118,944,945],{"class":242}," response",[118,947,606],{"class":252},[118,949,663],{"class":453},[118,951,699],{"class":242},[118,953,702],{"class":252},[215,955],{},[93,957,959],{"id":958},"_4-php-integration","4. PHP Integration",[109,961,965],{"className":962,"code":963,"language":964,"meta":114,"style":114},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$ch = curl_init('https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload');\n$cfile = new CURLFile('image.jpg', 'image\u002Fjpeg', 'file');\n\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, [\n    'file' => $cfile,\n    'tenantId' => 'pf_prj_your_id',\n    'directory' => 'watches\u002Fluxury',\n    'alt' => 'Luxury Watch'\n]);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'Authorization: Bearer sk_live_your_secret_key'\n]);\n\n$result = curl_exec($ch);\ncurl_close($ch);\n","php",[81,966,967,991,1033,1037,1060,1078,1097,1115,1134,1151,1156,1173,1182,1186,1190,1208],{"__ignoreMap":114},[118,968,969,972,975,977,980,982,984,986,988],{"class":120,"line":121},[118,970,971],{"class":252},"$",[118,973,974],{"class":242},"ch ",[118,976,388],{"class":252},[118,978,979],{"class":453}," curl_init",[118,981,457],{"class":252},[118,983,717],{"class":252},[118,985,393],{"class":128},[118,987,717],{"class":252},[118,989,990],{"class":252},");\n",[118,992,993,995,998,1000,1002,1005,1007,1009,1012,1014,1016,1018,1021,1023,1025,1027,1029,1031],{"class":120,"line":246},[118,994,971],{"class":252},[118,996,997],{"class":242},"cfile ",[118,999,388],{"class":252},[118,1001,693],{"class":734},[118,1003,1004],{"class":124}," CURLFile",[118,1006,457],{"class":252},[118,1008,717],{"class":252},[118,1010,1011],{"class":128},"image.jpg",[118,1013,717],{"class":252},[118,1015,467],{"class":252},[118,1017,761],{"class":252},[118,1019,1020],{"class":128},"image\u002Fjpeg",[118,1022,717],{"class":252},[118,1024,467],{"class":252},[118,1026,761],{"class":252},[118,1028,446],{"class":128},[118,1030,717],{"class":252},[118,1032,990],{"class":252},[118,1034,1035],{"class":120,"line":264},[118,1036,380],{"emptyLinePlaceholder":379},[118,1038,1039,1042,1045,1048,1050,1053,1055,1058],{"class":120,"line":279},[118,1040,1041],{"class":453},"curl_setopt",[118,1043,1044],{"class":252},"($",[118,1046,1047],{"class":242},"ch",[118,1049,467],{"class":252},[118,1051,1052],{"class":242}," CURLOPT_POST",[118,1054,467],{"class":252},[118,1056,1057],{"class":734}," 1",[118,1059,990],{"class":252},[118,1061,1062,1064,1066,1068,1070,1073,1075],{"class":120,"line":293},[118,1063,1041],{"class":453},[118,1065,1044],{"class":252},[118,1067,1047],{"class":242},[118,1069,467],{"class":252},[118,1071,1072],{"class":242}," CURLOPT_POSTFIELDS",[118,1074,467],{"class":252},[118,1076,1077],{"class":252}," [\n",[118,1079,1080,1082,1084,1086,1089,1092,1095],{"class":120,"line":307},[118,1081,890],{"class":252},[118,1083,446],{"class":128},[118,1085,717],{"class":252},[118,1087,1088],{"class":252}," =>",[118,1090,1091],{"class":252}," $",[118,1093,1094],{"class":242},"cfile",[118,1096,514],{"class":252},[118,1098,1099,1101,1103,1105,1107,1109,1111,1113],{"class":120,"line":321},[118,1100,890],{"class":252},[118,1102,500],{"class":128},[118,1104,717],{"class":252},[118,1106,1088],{"class":252},[118,1108,761],{"class":252},[118,1110,509],{"class":128},[118,1112,717],{"class":252},[118,1114,514],{"class":252},[118,1116,1117,1119,1121,1123,1125,1127,1130,1132],{"class":120,"line":441},[118,1118,890],{"class":252},[118,1120,175],{"class":128},[118,1122,717],{"class":252},[118,1124,1088],{"class":252},[118,1126,761],{"class":252},[118,1128,1129],{"class":128},"watches\u002Fluxury",[118,1131,717],{"class":252},[118,1133,514],{"class":252},[118,1135,1136,1138,1140,1142,1144,1146,1149],{"class":120,"line":480},[118,1137,890],{"class":252},[118,1139,542],{"class":128},[118,1141,717],{"class":252},[118,1143,1088],{"class":252},[118,1145,761],{"class":252},[118,1147,1148],{"class":128},"Luxury Watch",[118,1150,903],{"class":252},[118,1152,1153],{"class":120,"line":485},[118,1154,1155],{"class":252},"]);\n",[118,1157,1158,1160,1162,1164,1166,1169,1171],{"class":120,"line":495},[118,1159,1041],{"class":453},[118,1161,1044],{"class":252},[118,1163,1047],{"class":242},[118,1165,467],{"class":252},[118,1167,1168],{"class":242}," CURLOPT_HTTPHEADER",[118,1170,467],{"class":252},[118,1172,1077],{"class":252},[118,1174,1175,1177,1180],{"class":120,"line":517},[118,1176,890],{"class":252},[118,1178,1179],{"class":128},"Authorization: Bearer sk_live_your_secret_key",[118,1181,903],{"class":252},[118,1183,1184],{"class":120,"line":537},[118,1185,1155],{"class":252},[118,1187,1188],{"class":120,"line":558},[118,1189,380],{"emptyLinePlaceholder":379},[118,1191,1192,1194,1197,1199,1202,1204,1206],{"class":120,"line":585},[118,1193,971],{"class":252},[118,1195,1196],{"class":242},"result ",[118,1198,388],{"class":252},[118,1200,1201],{"class":453}," curl_exec",[118,1203,1044],{"class":252},[118,1205,1047],{"class":242},[118,1207,990],{"class":252},[118,1209,1210,1213,1215,1217],{"class":120,"line":590},[118,1211,1212],{"class":453},"curl_close",[118,1214,1044],{"class":252},[118,1216,1047],{"class":242},[118,1218,990],{"class":252},[215,1220],{},[93,1222,1224],{"id":1223},"_5-go-integration","5. Go Integration",[109,1226,1230],{"className":1227,"code":1228,"language":1229,"meta":114,"style":114},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package main\n\nimport (\n    \"bytes\"\n    \"io\"\n    \"mime\u002Fmultipart\"\n    \"net\u002Fhttp\"\n    \"os\"\n)\n\nfunc main() {\n    file, _ := os.Open(\"image.jpg\")\n    defer file.Close()\n\n    body := &bytes.Buffer{}\n    writer := multipart.NewWriter(body)\n    part, _ := writer.CreateFormFile(\"file\", \"image.jpg\")\n    io.Copy(part, file)\n    writer.WriteField(\"tenantId\", \"pf_prj_your_id\")\n    writer.WriteField(\"directory\", \"kitchen\u002Fmugs\")\n    writer.WriteField(\"alt\", \"Coffee Mug\")\n    writer.Close()\n\n    req, _ := http.NewRequest(\"POST\", \"https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload\", body)\n    req.Header.Set(\"Content-Type\", writer.FormDataContentType())\n    req.Header.Set(\"Authorization\", \"Bearer sk_live_your_secret_key\")\n\n    client := &http.Client{}\n    client.Do(req)\n}\n","go",[81,1231,1232,1240,1244,1251,1260,1269,1278,1287,1296,1300,1304,1316,1347,1363,1367,1387,1409,1446,1467,1496,1524,1552,1563,1568,1611,1646,1677,1682,1702,1720],{"__ignoreMap":114},[118,1233,1234,1237],{"class":120,"line":121},[118,1235,1236],{"class":252},"package",[118,1238,1239],{"class":124}," main\n",[118,1241,1242],{"class":120,"line":246},[118,1243,380],{"emptyLinePlaceholder":379},[118,1245,1246,1248],{"class":120,"line":264},[118,1247,371],{"class":370},[118,1249,1250],{"class":252}," (\n",[118,1252,1253,1255,1258],{"class":120,"line":279},[118,1254,410],{"class":252},[118,1256,1257],{"class":124},"bytes",[118,1259,352],{"class":252},[118,1261,1262,1264,1267],{"class":120,"line":293},[118,1263,410],{"class":252},[118,1265,1266],{"class":124},"io",[118,1268,352],{"class":252},[118,1270,1271,1273,1276],{"class":120,"line":307},[118,1272,410],{"class":252},[118,1274,1275],{"class":124},"mime\u002Fmultipart",[118,1277,352],{"class":252},[118,1279,1280,1282,1285],{"class":120,"line":321},[118,1281,410],{"class":252},[118,1283,1284],{"class":124},"net\u002Fhttp",[118,1286,352],{"class":252},[118,1288,1289,1291,1294],{"class":120,"line":441},[118,1290,410],{"class":252},[118,1292,1293],{"class":124},"os",[118,1295,352],{"class":252},[118,1297,1298],{"class":120,"line":480},[118,1299,477],{"class":252},[118,1301,1302],{"class":120,"line":485},[118,1303,380],{"emptyLinePlaceholder":379},[118,1305,1306,1309,1312,1314],{"class":120,"line":495},[118,1307,1308],{"class":252},"func",[118,1310,1311],{"class":453}," main",[118,1313,699],{"class":252},[118,1315,405],{"class":252},[118,1317,1318,1321,1323,1326,1329,1332,1334,1337,1339,1341,1343,1345],{"class":120,"line":517},[118,1319,1320],{"class":242},"    file",[118,1322,467],{"class":252},[118,1324,1325],{"class":242}," _ ",[118,1327,1328],{"class":252},":=",[118,1330,1331],{"class":242}," os",[118,1333,606],{"class":252},[118,1335,1336],{"class":453},"Open",[118,1338,457],{"class":252},[118,1340,259],{"class":252},[118,1342,1011],{"class":128},[118,1344,259],{"class":252},[118,1346,477],{"class":252},[118,1348,1349,1352,1355,1357,1360],{"class":120,"line":537},[118,1350,1351],{"class":370},"    defer",[118,1353,1354],{"class":242}," file",[118,1356,606],{"class":252},[118,1358,1359],{"class":453},"Close",[118,1361,1362],{"class":252},"()\n",[118,1364,1365],{"class":120,"line":558},[118,1366,380],{"emptyLinePlaceholder":379},[118,1368,1369,1372,1374,1377,1379,1381,1384],{"class":120,"line":585},[118,1370,1371],{"class":242},"    body ",[118,1373,1328],{"class":252},[118,1375,1376],{"class":252}," &",[118,1378,1257],{"class":124},[118,1380,606],{"class":252},[118,1382,1383],{"class":124},"Buffer",[118,1385,1386],{"class":252},"{}\n",[118,1388,1389,1392,1394,1397,1399,1402,1404,1407],{"class":120,"line":590},[118,1390,1391],{"class":242},"    writer ",[118,1393,1328],{"class":252},[118,1395,1396],{"class":242}," multipart",[118,1398,606],{"class":252},[118,1400,1401],{"class":453},"NewWriter",[118,1403,457],{"class":252},[118,1405,1406],{"class":242},"body",[118,1408,477],{"class":252},[118,1410,1411,1414,1416,1418,1420,1423,1425,1428,1430,1432,1434,1436,1438,1440,1442,1444],{"class":120,"line":595},[118,1412,1413],{"class":242},"    part",[118,1415,467],{"class":252},[118,1417,1325],{"class":242},[118,1419,1328],{"class":252},[118,1421,1422],{"class":242}," writer",[118,1424,606],{"class":252},[118,1426,1427],{"class":453},"CreateFormFile",[118,1429,457],{"class":252},[118,1431,259],{"class":252},[118,1433,446],{"class":128},[118,1435,259],{"class":252},[118,1437,467],{"class":252},[118,1439,253],{"class":252},[118,1441,1011],{"class":128},[118,1443,259],{"class":252},[118,1445,477],{"class":252},[118,1447,1448,1451,1453,1456,1458,1461,1463,1465],{"class":120,"line":650},[118,1449,1450],{"class":242},"    io",[118,1452,606],{"class":252},[118,1454,1455],{"class":453},"Copy",[118,1457,457],{"class":252},[118,1459,1460],{"class":242},"part",[118,1462,467],{"class":252},[118,1464,1354],{"class":242},[118,1466,477],{"class":252},[118,1468,1470,1473,1475,1478,1480,1482,1484,1486,1488,1490,1492,1494],{"class":120,"line":1469},19,[118,1471,1472],{"class":242},"    writer",[118,1474,606],{"class":252},[118,1476,1477],{"class":453},"WriteField",[118,1479,457],{"class":252},[118,1481,259],{"class":252},[118,1483,500],{"class":128},[118,1485,259],{"class":252},[118,1487,467],{"class":252},[118,1489,253],{"class":252},[118,1491,509],{"class":128},[118,1493,259],{"class":252},[118,1495,477],{"class":252},[118,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1520,1522],{"class":120,"line":1498},20,[118,1500,1472],{"class":242},[118,1502,606],{"class":252},[118,1504,1477],{"class":453},[118,1506,457],{"class":252},[118,1508,259],{"class":252},[118,1510,175],{"class":128},[118,1512,259],{"class":252},[118,1514,467],{"class":252},[118,1516,253],{"class":252},[118,1518,1519],{"class":128},"kitchen\u002Fmugs",[118,1521,259],{"class":252},[118,1523,477],{"class":252},[118,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1548,1550],{"class":120,"line":1526},21,[118,1528,1472],{"class":242},[118,1530,606],{"class":252},[118,1532,1477],{"class":453},[118,1534,457],{"class":252},[118,1536,259],{"class":252},[118,1538,542],{"class":128},[118,1540,259],{"class":252},[118,1542,467],{"class":252},[118,1544,253],{"class":252},[118,1546,1547],{"class":128},"Coffee Mug",[118,1549,259],{"class":252},[118,1551,477],{"class":252},[118,1553,1555,1557,1559,1561],{"class":120,"line":1554},22,[118,1556,1472],{"class":242},[118,1558,606],{"class":252},[118,1560,1359],{"class":453},[118,1562,1362],{"class":252},[118,1564,1566],{"class":120,"line":1565},23,[118,1567,380],{"emptyLinePlaceholder":379},[118,1569,1571,1574,1576,1578,1580,1583,1585,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1609],{"class":120,"line":1570},24,[118,1572,1573],{"class":242},"    req",[118,1575,467],{"class":252},[118,1577,1325],{"class":242},[118,1579,1328],{"class":252},[118,1581,1582],{"class":242}," http",[118,1584,606],{"class":252},[118,1586,1587],{"class":453},"NewRequest",[118,1589,457],{"class":252},[118,1591,259],{"class":252},[118,1593,872],{"class":128},[118,1595,259],{"class":252},[118,1597,467],{"class":252},[118,1599,253],{"class":252},[118,1601,393],{"class":128},[118,1603,259],{"class":252},[118,1605,467],{"class":252},[118,1607,1608],{"class":242}," body",[118,1610,477],{"class":252},[118,1612,1614,1616,1618,1621,1623,1626,1628,1630,1633,1635,1637,1639,1641,1644],{"class":120,"line":1613},25,[118,1615,1573],{"class":242},[118,1617,606],{"class":252},[118,1619,1620],{"class":242},"Header",[118,1622,606],{"class":252},[118,1624,1625],{"class":453},"Set",[118,1627,457],{"class":252},[118,1629,259],{"class":252},[118,1631,1632],{"class":128},"Content-Type",[118,1634,259],{"class":252},[118,1636,467],{"class":252},[118,1638,1422],{"class":242},[118,1640,606],{"class":252},[118,1642,1643],{"class":453},"FormDataContentType",[118,1645,666],{"class":252},[118,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675],{"class":120,"line":1648},26,[118,1650,1573],{"class":242},[118,1652,606],{"class":252},[118,1654,1620],{"class":242},[118,1656,606],{"class":252},[118,1658,1625],{"class":453},[118,1660,457],{"class":252},[118,1662,259],{"class":252},[118,1664,106],{"class":128},[118,1666,259],{"class":252},[118,1668,467],{"class":252},[118,1670,253],{"class":252},[118,1672,422],{"class":128},[118,1674,259],{"class":252},[118,1676,477],{"class":252},[118,1678,1680],{"class":120,"line":1679},27,[118,1681,380],{"emptyLinePlaceholder":379},[118,1683,1685,1688,1690,1692,1695,1697,1700],{"class":120,"line":1684},28,[118,1686,1687],{"class":242},"    client ",[118,1689,1328],{"class":252},[118,1691,1376],{"class":252},[118,1693,1694],{"class":124},"http",[118,1696,606],{"class":252},[118,1698,1699],{"class":124},"Client",[118,1701,1386],{"class":252},[118,1703,1705,1708,1710,1713,1715,1718],{"class":120,"line":1704},29,[118,1706,1707],{"class":242},"    client",[118,1709,606],{"class":252},[118,1711,1712],{"class":453},"Do",[118,1714,457],{"class":252},[118,1716,1717],{"class":242},"req",[118,1719,477],{"class":252},[118,1721,1723],{"class":120,"line":1722},30,[118,1724,429],{"class":252},[215,1726],{},[93,1728,1730],{"id":1729},"_6-rust-integration","6. Rust Integration",[109,1732,1736],{"className":1733,"code":1734,"language":1735,"meta":114,"style":114},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use reqwest::header::{AUTHORIZATION, HeaderValue};\nuse reqwest::multipart;\nuse std::fs;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let client = reqwest::Client::new();\n    let file_path = \"image.jpg\";\n    let file_bytes = fs::read(file_path)?;\n\n    let form = multipart::Form::new()\n        .part(\"file\", multipart::Part::bytes(file_bytes).file_name(\"image.jpg\"))\n        .text(\"tenantId\", \"pf_prj_your_id\")\n        .text(\"directory\", \"watches\u002Ftitanium\")\n        .text(\"alt\", \"Titanium Wristwatch\")\n        .text(\"tags\", \"[\\\"luxury\\\", \\\"watch\\\"]\");\n\n    let response = client\n        .post(\"https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload\")\n        .header(AUTHORIZATION, HeaderValue::from_static(\"Bearer sk_live_your_secret_key\"))\n        .multipart(form)\n        .send()\n        .await?;\n\n    println!(\"Status: {}\", response.status());\n    println!(\"Body: {}\", response.text().await?);\n\n    Ok(())\n}\n","rust",[81,1737,1738,1766,1779,1793,1797,1813,1860,1884,1901,1926,1930,1952,2001,2026,2051,2076,2118,2122,2133,2149,2178,2191,2200,2210,2214,2241,2270,2274,2282],{"__ignoreMap":114},[118,1739,1740,1743,1746,1749,1752,1755,1758,1760,1763],{"class":120,"line":121},[118,1741,1742],{"class":734},"use",[118,1744,1745],{"class":124}," reqwest",[118,1747,1748],{"class":252},"::",[118,1750,1751],{"class":124},"header",[118,1753,1754],{"class":252},"::{",[118,1756,1757],{"class":124},"AUTHORIZATION",[118,1759,467],{"class":252},[118,1761,1762],{"class":124}," HeaderValue",[118,1764,1765],{"class":252},"};\n",[118,1767,1768,1770,1772,1774,1777],{"class":120,"line":246},[118,1769,1742],{"class":734},[118,1771,1745],{"class":124},[118,1773,1748],{"class":252},[118,1775,1776],{"class":124},"multipart",[118,1778,702],{"class":252},[118,1780,1781,1783,1786,1788,1791],{"class":120,"line":264},[118,1782,1742],{"class":734},[118,1784,1785],{"class":124}," std",[118,1787,1748],{"class":252},[118,1789,1790],{"class":124},"fs",[118,1792,702],{"class":252},[118,1794,1795],{"class":120,"line":279},[118,1796,380],{"emptyLinePlaceholder":379},[118,1798,1799,1802,1805,1807,1810],{"class":120,"line":293},[118,1800,1801],{"class":252},"#[",[118,1803,1804],{"class":242},"tokio",[118,1806,1748],{"class":252},[118,1808,1809],{"class":242},"main",[118,1811,1812],{"class":252},"]\n",[118,1814,1815,1818,1821,1823,1825,1828,1831,1834,1837,1840,1843,1845,1847,1850,1852,1855,1858],{"class":120,"line":307},[118,1816,1817],{"class":734},"async",[118,1819,1820],{"class":734}," fn",[118,1822,1311],{"class":453},[118,1824,699],{"class":252},[118,1826,1827],{"class":252}," ->",[118,1829,1830],{"class":124}," Result",[118,1832,1833],{"class":252},"\u003C(),",[118,1835,1836],{"class":124}," Box",[118,1838,1839],{"class":252},"\u003C",[118,1841,1842],{"class":734},"dyn",[118,1844,1785],{"class":242},[118,1846,1748],{"class":252},[118,1848,1849],{"class":242},"error",[118,1851,1748],{"class":252},[118,1853,1854],{"class":124},"Error",[118,1856,1857],{"class":252},">>",[118,1859,405],{"class":252},[118,1861,1862,1865,1868,1870,1872,1874,1876,1878,1881],{"class":120,"line":321},[118,1863,1864],{"class":684},"    let",[118,1866,1867],{"class":242}," client ",[118,1869,388],{"class":252},[118,1871,1745],{"class":124},[118,1873,1748],{"class":252},[118,1875,1699],{"class":124},[118,1877,1748],{"class":252},[118,1879,1880],{"class":453},"new",[118,1882,1883],{"class":252},"();\n",[118,1885,1886,1888,1891,1893,1895,1897,1899],{"class":120,"line":441},[118,1887,1864],{"class":684},[118,1889,1890],{"class":242}," file_path ",[118,1892,388],{"class":252},[118,1894,253],{"class":252},[118,1896,1011],{"class":128},[118,1898,259],{"class":252},[118,1900,702],{"class":252},[118,1902,1903,1905,1908,1910,1913,1915,1918,1920,1923],{"class":120,"line":480},[118,1904,1864],{"class":684},[118,1906,1907],{"class":242}," file_bytes ",[118,1909,388],{"class":252},[118,1911,1912],{"class":124}," fs",[118,1914,1748],{"class":252},[118,1916,1917],{"class":453},"read",[118,1919,457],{"class":252},[118,1921,1922],{"class":242},"file_path",[118,1924,1925],{"class":252},")?;\n",[118,1927,1928],{"class":120,"line":485},[118,1929,380],{"emptyLinePlaceholder":379},[118,1931,1932,1934,1937,1939,1941,1943,1946,1948,1950],{"class":120,"line":495},[118,1933,1864],{"class":684},[118,1935,1936],{"class":242}," form ",[118,1938,388],{"class":252},[118,1940,1396],{"class":124},[118,1942,1748],{"class":252},[118,1944,1945],{"class":124},"Form",[118,1947,1748],{"class":252},[118,1949,1880],{"class":453},[118,1951,1362],{"class":252},[118,1953,1954,1957,1959,1961,1963,1965,1967,1969,1971,1973,1976,1978,1980,1982,1985,1987,1990,1992,1994,1996,1998],{"class":120,"line":517},[118,1955,1956],{"class":252},"        .",[118,1958,1460],{"class":453},[118,1960,457],{"class":252},[118,1962,259],{"class":252},[118,1964,446],{"class":128},[118,1966,259],{"class":252},[118,1968,467],{"class":252},[118,1970,1396],{"class":124},[118,1972,1748],{"class":252},[118,1974,1975],{"class":124},"Part",[118,1977,1748],{"class":252},[118,1979,1257],{"class":453},[118,1981,457],{"class":252},[118,1983,1984],{"class":242},"file_bytes",[118,1986,200],{"class":252},[118,1988,1989],{"class":453},"file_name",[118,1991,457],{"class":252},[118,1993,259],{"class":252},[118,1995,1011],{"class":128},[118,1997,259],{"class":252},[118,1999,2000],{"class":252},"))\n",[118,2002,2003,2005,2008,2010,2012,2014,2016,2018,2020,2022,2024],{"class":120,"line":537},[118,2004,1956],{"class":252},[118,2006,2007],{"class":453},"text",[118,2009,457],{"class":252},[118,2011,259],{"class":252},[118,2013,500],{"class":128},[118,2015,259],{"class":252},[118,2017,467],{"class":252},[118,2019,253],{"class":252},[118,2021,509],{"class":128},[118,2023,259],{"class":252},[118,2025,477],{"class":252},[118,2027,2028,2030,2032,2034,2036,2038,2040,2042,2044,2047,2049],{"class":120,"line":558},[118,2029,1956],{"class":252},[118,2031,2007],{"class":453},[118,2033,457],{"class":252},[118,2035,259],{"class":252},[118,2037,175],{"class":128},[118,2039,259],{"class":252},[118,2041,467],{"class":252},[118,2043,253],{"class":252},[118,2045,2046],{"class":128},"watches\u002Ftitanium",[118,2048,259],{"class":252},[118,2050,477],{"class":252},[118,2052,2053,2055,2057,2059,2061,2063,2065,2067,2069,2072,2074],{"class":120,"line":585},[118,2054,1956],{"class":252},[118,2056,2007],{"class":453},[118,2058,457],{"class":252},[118,2060,259],{"class":252},[118,2062,542],{"class":128},[118,2064,259],{"class":252},[118,2066,467],{"class":252},[118,2068,253],{"class":252},[118,2070,2071],{"class":128},"Titanium Wristwatch",[118,2073,259],{"class":252},[118,2075,477],{"class":252},[118,2077,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2101,2103,2105,2107,2110,2112,2114,2116],{"class":120,"line":590},[118,2079,1956],{"class":252},[118,2081,2007],{"class":453},[118,2083,457],{"class":252},[118,2085,259],{"class":252},[118,2087,563],{"class":128},[118,2089,259],{"class":252},[118,2091,467],{"class":252},[118,2093,253],{"class":252},[118,2095,572],{"class":128},[118,2097,331],{"class":242},[118,2099,2100],{"class":128},"luxury",[118,2102,331],{"class":242},[118,2104,339],{"class":128},[118,2106,331],{"class":242},[118,2108,2109],{"class":128},"watch",[118,2111,331],{"class":242},[118,2113,349],{"class":128},[118,2115,259],{"class":252},[118,2117,990],{"class":252},[118,2119,2120],{"class":120,"line":595},[118,2121,380],{"emptyLinePlaceholder":379},[118,2123,2124,2126,2128,2130],{"class":120,"line":650},[118,2125,1864],{"class":684},[118,2127,839],{"class":242},[118,2129,388],{"class":252},[118,2131,2132],{"class":242}," client\n",[118,2134,2135,2137,2139,2141,2143,2145,2147],{"class":120,"line":1469},[118,2136,1956],{"class":252},[118,2138,609],{"class":453},[118,2140,457],{"class":252},[118,2142,259],{"class":252},[118,2144,393],{"class":128},[118,2146,259],{"class":252},[118,2148,477],{"class":252},[118,2150,2151,2153,2155,2157,2159,2161,2163,2165,2168,2170,2172,2174,2176],{"class":120,"line":1498},[118,2152,1956],{"class":252},[118,2154,1751],{"class":453},[118,2156,457],{"class":252},[118,2158,1757],{"class":242},[118,2160,467],{"class":252},[118,2162,1762],{"class":124},[118,2164,1748],{"class":252},[118,2166,2167],{"class":453},"from_static",[118,2169,457],{"class":252},[118,2171,259],{"class":252},[118,2173,422],{"class":128},[118,2175,259],{"class":252},[118,2177,2000],{"class":252},[118,2179,2180,2182,2184,2186,2189],{"class":120,"line":1526},[118,2181,1956],{"class":252},[118,2183,1776],{"class":453},[118,2185,457],{"class":252},[118,2187,2188],{"class":242},"form",[118,2190,477],{"class":252},[118,2192,2193,2195,2198],{"class":120,"line":1554},[118,2194,1956],{"class":252},[118,2196,2197],{"class":453},"send",[118,2199,1362],{"class":252},[118,2201,2202,2204,2207],{"class":120,"line":1565},[118,2203,1956],{"class":252},[118,2205,2206],{"class":370},"await",[118,2208,2209],{"class":252},"?;\n",[118,2211,2212],{"class":120,"line":1570},[118,2213,380],{"emptyLinePlaceholder":379},[118,2215,2216,2219,2221,2223,2226,2229,2231,2233,2235,2238],{"class":120,"line":1613},[118,2217,2218],{"class":453},"    println!",[118,2220,457],{"class":252},[118,2222,259],{"class":252},[118,2224,2225],{"class":128},"Status: ",[118,2227,2228],{"class":252},"{}\"",[118,2230,467],{"class":252},[118,2232,945],{"class":242},[118,2234,606],{"class":252},[118,2236,2237],{"class":453},"status",[118,2239,2240],{"class":252},"());\n",[118,2242,2243,2245,2247,2249,2252,2254,2256,2258,2260,2262,2265,2267],{"class":120,"line":1648},[118,2244,2218],{"class":453},[118,2246,457],{"class":252},[118,2248,259],{"class":252},[118,2250,2251],{"class":128},"Body: ",[118,2253,2228],{"class":252},[118,2255,467],{"class":252},[118,2257,945],{"class":242},[118,2259,606],{"class":252},[118,2261,2007],{"class":453},[118,2263,2264],{"class":252},"().",[118,2266,2206],{"class":370},[118,2268,2269],{"class":252},"?);\n",[118,2271,2272],{"class":120,"line":1679},[118,2273,380],{"emptyLinePlaceholder":379},[118,2275,2276,2279],{"class":120,"line":1684},[118,2277,2278],{"class":124},"    Ok",[118,2280,2281],{"class":252},"(())\n",[118,2283,2284],{"class":120,"line":1704},[118,2285,429],{"class":252},[215,2287],{},[93,2289,2291],{"id":2290},"_7-url-transformations-image-retrieval","7. URL Transformations (Image Retrieval)",[63,2293,2294],{},"Once your image is uploaded, the PichaFlow Edge Engine allows you to transform it on the fly by appending URL parameters to the asset's URL. The engine caches the result at the edge for ultra-low latency on subsequent requests.",[2296,2297,2299],"h3",{"id":2298},"standard-transformations-available-on-all-tiers","Standard Transformations (Available on All Tiers)",[63,2301,2302],{},"These parameters can be used by all tenants, including the free Hobby tier.",[2304,2305,2306,2326],"table",{},[2307,2308,2309],"thead",{},[2310,2311,2312,2317,2320,2323],"tr",{},[2313,2314,2316],"th",{"align":2315},"left","Parameter",[2313,2318,2319],{"align":2315},"Type",[2313,2321,2322],{"align":2315},"Description",[2313,2324,2325],{"align":2315},"Example",[2327,2328,2329,2348,2365,2385,2418],"tbody",{},[2310,2330,2331,2337,2340,2343],{},[2332,2333,2334],"td",{"align":2315},[81,2335,2336],{},"w",[2332,2338,2339],{"align":2315},"Integer",[2332,2341,2342],{"align":2315},"Resizes the image to the specified width (1 - 5000px).",[2332,2344,2345],{"align":2315},[81,2346,2347],{},"?w=800",[2310,2349,2350,2355,2357,2360],{},[2332,2351,2352],{"align":2315},[81,2353,2354],{},"h",[2332,2356,2339],{"align":2315},[2332,2358,2359],{"align":2315},"Resizes the image to the specified height (1 - 5000px).",[2332,2361,2362],{"align":2315},[81,2363,2364],{},"?h=600",[2310,2366,2367,2372,2374,2380],{},[2332,2368,2369],{"align":2315},[81,2370,2371],{},"q",[2332,2373,2339],{"align":2315},[2332,2375,2376,2377,606],{"align":2315},"Compression quality percentage (1 - 100). Default is ",[81,2378,2379],{},"80",[2332,2381,2382],{"align":2315},[81,2383,2384],{},"?q=90",[2310,2386,2387,2392,2395,2413],{},[2332,2388,2389],{"align":2315},[81,2390,2391],{},"f",[2332,2393,2394],{"align":2315},"String",[2332,2396,2397,2398,339,2401,339,2404,339,2407,2410,2411,606],{"align":2315},"Output format (",[81,2399,2400],{},"avif",[81,2402,2403],{},"webp",[81,2405,2406],{},"png",[81,2408,2409],{},"jpg","). Default is ",[81,2412,2400],{},[2332,2414,2415],{"align":2315},[81,2416,2417],{},"?f=webp",[2310,2419,2420,2425,2427,2430],{},[2332,2421,2422],{"align":2315},[81,2423,2424],{},"preset",[2332,2426,2394],{"align":2315},[2332,2428,2429],{"align":2315},"A predefined configuration identifier for pipelines.",[2332,2431,2432],{"align":2315},[81,2433,2434],{},"?preset=thumbnail",[2296,2436,2438],{"id":2437},"advanced-compositing-effects-tier-gated","Advanced Compositing & Effects (Tier Gated)",[63,2440,2441],{},"Certain resource-intensive visual transformations require higher compute and are gated by your billing tier.",[134,2443,2444,2445,2448],{"type":179},"Attempting to use these parameters on an unsupported tier will result in a ",[81,2446,2447],{},"403 Forbidden"," response.",[2304,2450,2451,2466],{},[2307,2452,2453],{},[2310,2454,2455,2457,2459,2462,2464],{},[2313,2456,2316],{"align":2315},[2313,2458,2319],{"align":2315},[2313,2460,2461],{"align":2315},"Minimum Tier",[2313,2463,2322],{"align":2315},[2313,2465,2325],{"align":2315},[2327,2467,2468,2490,2512],{},[2310,2469,2470,2475,2477,2482,2485],{},[2332,2471,2472],{"align":2315},[81,2473,2474],{},"ck",[2332,2476,2394],{"align":2315},[2332,2478,2479],{"align":2315},[76,2480,2481],{},"Pro",[2332,2483,2484],{"align":2315},"Chroma-Keying. Removes the specified hex color background.",[2332,2486,2487],{"align":2315},[81,2488,2489],{},"?ck=00FF00",[2310,2491,2492,2497,2499,2504,2507],{},[2332,2493,2494],{"align":2315},[81,2495,2496],{},"wm",[2332,2498,2394],{"align":2315},[2332,2500,2501],{"align":2315},[76,2502,2503],{},"Scale",[2332,2505,2506],{"align":2315},"Watermarking. Overlays an asset (must exist in your namespace).",[2332,2508,2509],{"align":2315},[81,2510,2511],{},"?wm=logo.png",[2310,2513,2514,2519,2521,2525,2538],{},[2332,2515,2516],{"align":2315},[81,2517,2518],{},"crop",[2332,2520,2394],{"align":2315},[2332,2522,2523],{"align":2315},[76,2524,2503],{},[2332,2526,2527,2528,2531,2532,339,2535,200],{"align":2315},"Coordinates (",[81,2529,2530],{},"x,y,w,h",") or gravity strings (",[81,2533,2534],{},"center",[81,2536,2537],{},"top",[2332,2539,2540],{"align":2315},[81,2541,2542],{},"?crop=center",[2296,2544,2546],{"id":2545},"example-usage","Example Usage",[109,2548,2552],{"className":2549,"code":2550,"language":2551,"meta":114,"style":114},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- Asset at project root -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproduct.jpg?w=800&q=90\" \u002F>\n\n\u003C!-- Asset inside a directory (directory path is part of the URL) -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?w=800&q=90\" \u002F>\n\n\u003C!-- Pro Tier: Removes green screen background -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?ck=00FF00\" \u002F>\n\n\u003C!-- Scale Tier: Overlays a watermark -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?wm=logo.png&w=1200\" \u002F>\n\n\u003C!-- Scale Tier: Crops a specific 200x200 region -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?crop=50,50,200,200\" \u002F>\n\n\u003C!-- Scale Tier: Crops a perfect square from the center -->\n\u003Cimg src=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?crop=center\" \u002F>\n","html",[81,2553,2554,2560,2582,2586,2591,2610,2614,2619,2638,2642,2647,2666,2670,2675,2694,2698,2703],{"__ignoreMap":114},[118,2555,2556],{"class":120,"line":121},[118,2557,2559],{"class":2558},"sHwdD","\u003C!-- Asset at project root -->\n",[118,2561,2562,2564,2567,2570,2572,2574,2577,2579],{"class":120,"line":246},[118,2563,1839],{"class":252},[118,2565,2566],{"class":864},"img",[118,2568,2569],{"class":684}," src",[118,2571,388],{"class":252},[118,2573,259],{"class":252},[118,2575,2576],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproduct.jpg?w=800&q=90",[118,2578,259],{"class":252},[118,2580,2581],{"class":252}," \u002F>\n",[118,2583,2584],{"class":120,"line":264},[118,2585,380],{"emptyLinePlaceholder":379},[118,2587,2588],{"class":120,"line":279},[118,2589,2590],{"class":2558},"\u003C!-- Asset inside a directory (directory path is part of the URL) -->\n",[118,2592,2593,2595,2597,2599,2601,2603,2606,2608],{"class":120,"line":293},[118,2594,1839],{"class":252},[118,2596,2566],{"class":864},[118,2598,2569],{"class":684},[118,2600,388],{"class":252},[118,2602,259],{"class":252},[118,2604,2605],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?w=800&q=90",[118,2607,259],{"class":252},[118,2609,2581],{"class":252},[118,2611,2612],{"class":120,"line":307},[118,2613,380],{"emptyLinePlaceholder":379},[118,2615,2616],{"class":120,"line":321},[118,2617,2618],{"class":2558},"\u003C!-- Pro Tier: Removes green screen background -->\n",[118,2620,2621,2623,2625,2627,2629,2631,2634,2636],{"class":120,"line":441},[118,2622,1839],{"class":252},[118,2624,2566],{"class":864},[118,2626,2569],{"class":684},[118,2628,388],{"class":252},[118,2630,259],{"class":252},[118,2632,2633],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?ck=00FF00",[118,2635,259],{"class":252},[118,2637,2581],{"class":252},[118,2639,2640],{"class":120,"line":480},[118,2641,380],{"emptyLinePlaceholder":379},[118,2643,2644],{"class":120,"line":485},[118,2645,2646],{"class":2558},"\u003C!-- Scale Tier: Overlays a watermark -->\n",[118,2648,2649,2651,2653,2655,2657,2659,2662,2664],{"class":120,"line":495},[118,2650,1839],{"class":252},[118,2652,2566],{"class":864},[118,2654,2569],{"class":684},[118,2656,388],{"class":252},[118,2658,259],{"class":252},[118,2660,2661],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?wm=logo.png&w=1200",[118,2663,259],{"class":252},[118,2665,2581],{"class":252},[118,2667,2668],{"class":120,"line":517},[118,2669,380],{"emptyLinePlaceholder":379},[118,2671,2672],{"class":120,"line":537},[118,2673,2674],{"class":2558},"\u003C!-- Scale Tier: Crops a specific 200x200 region -->\n",[118,2676,2677,2679,2681,2683,2685,2687,2690,2692],{"class":120,"line":558},[118,2678,1839],{"class":252},[118,2680,2566],{"class":864},[118,2682,2569],{"class":684},[118,2684,388],{"class":252},[118,2686,259],{"class":252},[118,2688,2689],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?crop=50,50,200,200",[118,2691,259],{"class":252},[118,2693,2581],{"class":252},[118,2695,2696],{"class":120,"line":585},[118,2697,380],{"emptyLinePlaceholder":379},[118,2699,2700],{"class":120,"line":590},[118,2701,2702],{"class":2558},"\u003C!-- Scale Tier: Crops a perfect square from the center -->\n",[118,2704,2705,2707,2709,2711,2713,2715,2718,2720],{"class":120,"line":595},[118,2706,1839],{"class":252},[118,2708,2566],{"class":864},[118,2710,2569],{"class":684},[118,2712,388],{"class":252},[118,2714,259],{"class":252},[118,2716,2717],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fpf_prj_your_id\u002Fproducts\u002Fhero\u002Fproduct.jpg?crop=center",[118,2719,259],{"class":252},[118,2721,2581],{"class":252},[215,2723],{},[93,2725,2727],{"id":2726},"_8-dynamic-og-generation-pro","8. Dynamic OG Generation (Pro+)",[63,2729,2730],{},"PichaFlow provides a dedicated API endpoint to automatically generate polished OpenGraph (social sharing) cards for your products, blog posts, or profiles.",[134,2732,2733,2736,2737,2740,2741,2744,2745,2747],{"type":179},[76,2734,2735],{},"Billing Notice",": Because rendering complex SVG layouts to PNG at the edge is highly compute-intensive, every successful request to ",[81,2738,2739],{},"\u002Fv1\u002Fog-generator"," deducts ",[76,2742,2743],{},"2 transformation credits"," from your quota. This feature requires the ",[76,2746,2481],{}," tier or higher.",[2296,2749,2751],{"id":2750},"endpoint","Endpoint",[63,2753,2754],{},[81,2755,2756],{},"GET https:\u002F\u002Fcdn.pichaflow.com\u002Fv1\u002Fog-generator",[2296,2758,2760],{"id":2759},"parameters","Parameters",[2304,2762,2763,2776],{},[2307,2764,2765],{},[2310,2766,2767,2769,2772,2774],{},[2313,2768,2316],{"align":2315},[2313,2770,2771],{"align":2315},"Required",[2313,2773,2322],{"align":2315},[2313,2775,2325],{"align":2315},[2327,2777,2778,2797,2816,2834,2851,2875,2895],{},[2310,2779,2780,2784,2789,2792],{},[2332,2781,2782],{"align":2315},[81,2783,2566],{},[2332,2785,2786],{"align":2315},[76,2787,2788],{},"Yes",[2332,2790,2791],{"align":2315},"The full path to the raw product\u002Fbackground image in your namespace.",[2332,2793,2794],{"align":2315},[81,2795,2796],{},"?img=pf_prj_id\u002Fsneaker.jpg",[2310,2798,2799,2804,2808,2811],{},[2332,2800,2801],{"align":2315},[81,2802,2803],{},"title",[2332,2805,2806],{"align":2315},[76,2807,2788],{},[2332,2809,2810],{"align":2315},"The main heading text for the card (URL encoded).",[2332,2812,2813],{"align":2315},[81,2814,2815],{},"?title=Air%20Max%2090",[2310,2817,2818,2823,2826,2829],{},[2332,2819,2820],{"align":2315},[81,2821,2822],{},"price",[2332,2824,2825],{"align":2315},"No",[2332,2827,2828],{"align":2315},"Optional price or secondary subtitle text.",[2332,2830,2831],{"align":2315},[81,2832,2833],{},"?price=$120.00",[2310,2835,2836,2841,2843,2846],{},[2332,2837,2838],{"align":2315},[81,2839,2840],{},"logo",[2332,2842,2825],{"align":2315},[2332,2844,2845],{"align":2315},"Path to a custom logo asset in your namespace.",[2332,2847,2848],{"align":2315},[81,2849,2850],{},"?logo=pf_prj_id\u002Fbrand\u002Flogo.png",[2310,2852,2853,2858,2860,2870],{},[2332,2854,2855],{"align":2315},[81,2856,2857],{},"theme",[2332,2859,2825],{"align":2315},[2332,2861,2862,2863,2866,2867,606],{"align":2315},"UI color theme: ",[81,2864,2865],{},"dark"," (default) or ",[81,2868,2869],{},"light",[2332,2871,2872],{"align":2315},[81,2873,2874],{},"?theme=dark",[2310,2876,2877,2882,2884,2890],{},[2332,2878,2879],{"align":2315},[81,2880,2881],{},"accent",[2332,2883,2825],{"align":2315},[2332,2885,2886,2887,200],{"align":2315},"Hex code for the gradient accent color (without ",[81,2888,2889],{},"#",[2332,2891,2892],{"align":2315},[81,2893,2894],{},"?accent=3b82f6",[2310,2896,2897,2902,2904,2919],{},[2332,2898,2899],{"align":2315},[81,2900,2901],{},"font",[2332,2903,2825],{"align":2315},[2332,2905,2906,2907,339,2910,339,2913,2916,2917,606],{"align":2315},"Typography choice (",[81,2908,2909],{},"Inter",[81,2911,2912],{},"Roboto",[81,2914,2915],{},"Outfit","). Default ",[81,2918,2909],{},[2332,2920,2921],{"align":2315},[81,2922,2923],{},"?font=Outfit",[2296,2925,2927],{"id":2926},"example-request","Example Request",[109,2929,2931],{"className":2549,"code":2930,"language":2551,"meta":114,"style":114},"\u003Cmeta property=\"og:image\" content=\"https:\u002F\u002Fcdn.pichaflow.com\u002Fv1\u002Fog-generator?img=pf_prj_id\u002Fproducts\u002Fsneaker.jpg&title=Air%20Max%2090&price=$120.00&theme=dark&accent=ff3366\" \u002F>\n",[81,2932,2933],{"__ignoreMap":114},[118,2934,2935,2937,2940,2943,2945,2947,2950,2952,2955,2957,2959,2962,2964],{"class":120,"line":121},[118,2936,1839],{"class":252},[118,2938,2939],{"class":864},"meta",[118,2941,2942],{"class":684}," property",[118,2944,388],{"class":252},[118,2946,259],{"class":252},[118,2948,2949],{"class":128},"og:image",[118,2951,259],{"class":252},[118,2953,2954],{"class":684}," content",[118,2956,388],{"class":252},[118,2958,259],{"class":252},[118,2960,2961],{"class":128},"https:\u002F\u002Fcdn.pichaflow.com\u002Fv1\u002Fog-generator?img=pf_prj_id\u002Fproducts\u002Fsneaker.jpg&title=Air%20Max%2090&price=$120.00&theme=dark&accent=ff3366",[118,2963,259],{"class":252},[118,2965,2581],{"class":252},[215,2967],{},[93,2969,2971],{"id":2970},"_9-deleting-assets-programmatically","9. Deleting Assets Programmatically",[63,2973,2974],{},"You can delete assets securely using your Secret Key. When an asset is deleted, it is instantly purged from the global edge cache, physically removed from your storage bucket, and your project's usage quota is immediately updated.",[2296,2976,2978],{"id":2977},"single-deletion","Single Deletion",[63,2980,2981],{},"Delete a single asset by its UUID.",[109,2983,2985],{"className":111,"code":2984,"language":113,"meta":114,"style":114},"curl -X DELETE https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fassets\u002Fyour-asset-uuid \\\n  -H \"Authorization: Bearer sk_live_your_secret_key\"\n",[81,2986,2987,3001],{"__ignoreMap":114},[118,2988,2989,2991,2993,2996,2999],{"class":120,"line":121},[118,2990,230],{"class":124},[118,2992,233],{"class":128},[118,2994,2995],{"class":128}," DELETE",[118,2997,2998],{"class":128}," https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fassets\u002Fyour-asset-uuid",[118,3000,243],{"class":242},[118,3002,3003,3005,3007,3009],{"class":120,"line":246},[118,3004,249],{"class":128},[118,3006,253],{"class":252},[118,3008,1179],{"class":128},[118,3010,352],{"class":252},[2296,3012,3014],{"id":3013},"bulk-deletion","Bulk Deletion",[63,3016,3017],{},"Delete multiple assets at once by sending an array of UUIDs. This is highly recommended for cleaning up galleries or user accounts.",[134,3019,3020,3021,3024],{"type":136},"Bulk deletion requests are capped at a maximum of ",[76,3022,3023],{},"100 assets per request"," to prevent timeouts.",[109,3026,3028],{"className":111,"code":3027,"language":113,"meta":114,"style":114},"curl -X POST https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fassets\u002Fdelete \\\n  -H \"Authorization: Bearer sk_live_your_secret_key\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"ids\": [\"uuid-1\", \"uuid-2\", \"uuid-3\"]}'\n",[81,3029,3030,3043,3055,3068],{"__ignoreMap":114},[118,3031,3032,3034,3036,3038,3041],{"class":120,"line":121},[118,3033,230],{"class":124},[118,3035,233],{"class":128},[118,3037,236],{"class":128},[118,3039,3040],{"class":128}," https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fassets\u002Fdelete",[118,3042,243],{"class":242},[118,3044,3045,3047,3049,3051,3053],{"class":120,"line":246},[118,3046,249],{"class":128},[118,3048,253],{"class":252},[118,3050,1179],{"class":128},[118,3052,259],{"class":252},[118,3054,243],{"class":242},[118,3056,3057,3059,3061,3064,3066],{"class":120,"line":264},[118,3058,249],{"class":128},[118,3060,253],{"class":252},[118,3062,3063],{"class":128},"Content-Type: application\u002Fjson",[118,3065,259],{"class":252},[118,3067,243],{"class":242},[118,3069,3070,3073,3075,3078],{"class":120,"line":279},[118,3071,3072],{"class":128},"  -d",[118,3074,761],{"class":252},[118,3076,3077],{"class":128},"{\"ids\": [\"uuid-1\", \"uuid-2\", \"uuid-3\"]}",[118,3079,903],{"class":252},[93,3081,3083],{"id":3082},"_10-client-side-upload-signatures","10. Client-Side Upload Signatures",[63,3085,3086,3087,3090,3091,3094],{},"If you are uploading assets directly from a frontend application (e.g., a React or Vue app), you ",[76,3088,3089],{},"must not"," expose your Secret Key in client code. Instead, PichaFlow uses short-lived ",[76,3092,3093],{},"HMAC-SHA256 upload signatures"," with cryptographically bound constraints to prevent replay attacks, directory hijacking, oversized payloads, and unapproved file types.",[2296,3096,3098],{"id":3097},"how-it-works","How it Works",[63,3100,3101],{},"Your backend server generates a signed context and returns it to the frontend. The frontend then attaches all five headers to the upload request, which the PichaFlow Edge Engine validates independently — without a database round-trip.",[109,3103,3107],{"className":3104,"code":3106,"language":2007},[3105],"language-text","┌──────────────┐    1. Request signature    ┌──────────────────┐\n│  Frontend    │ ─────────────────────────► │  Your Backend    │\n│  (Browser)   │ ◄───────────────────────── │  (Sign Endpoint) │\n└──────────────┘    2. { signature,         └──────────────────┘\n                        timestamp,                  │\n                        directory,          Computes HMAC-SHA256 over:\n                        maxSize,            \"upload:tenantId:timestamp\n                        allowedTypes }       :directory:maxSize:allowedTypes\"\n                              │\n        3. POST \u002Fv1\u002Fupload (file + all 5 headers)\n                              ▼\n                   ┌──────────────────────┐\n                   │  PichaFlow Engine    │\n                   │  egn.pichaflow.com   │\n                   │  ✓ Validates HMAC    │\n                   │  ✓ Checks timestamp  │\n                   │  ✓ Checks file size  │\n                   │  ✓ Checks MIME type  │\n                   │  ✓ Checks directory  │\n                   └──────────────────────┘\n",[81,3108,3106],{"__ignoreMap":114},[2296,3110,3112],{"id":3111},"required-headers","Required Headers",[63,3114,3115,3116,3119],{},"All five headers are required when using signature-based auth (i.e., when ",[76,3117,3118],{},"not"," using a Secret Key):",[2304,3121,3122,3132],{},[2307,3123,3124],{},[2310,3125,3126,3128,3130],{},[2313,3127,1620],{"align":2315},[2313,3129,2319],{"align":2315},[2313,3131,2322],{"align":2315},[2327,3133,3134,3146,3166,3186,3198],{},[2310,3135,3136,3141,3143],{},[2332,3137,3138],{"align":2315},[81,3139,3140],{},"X-Picha-Signature",[2332,3142,2394],{"align":2315},[2332,3144,3145],{"align":2315},"HMAC-SHA256 hex digest, signed with your Secret Key.",[2310,3147,3148,3153,3156],{},[2332,3149,3150],{"align":2315},[81,3151,3152],{},"X-Picha-Timestamp",[2332,3154,3155],{"align":2315},"Number",[2332,3157,3158,3159,3162,3163,606],{"align":2315},"Unix epoch in ",[76,3160,3161],{},"milliseconds"," when the signature was created. Signatures expire after ",[76,3164,3165],{},"60 seconds",[2310,3167,3168,3173,3175],{},[2332,3169,3170],{"align":2315},[81,3171,3172],{},"X-Picha-Directory",[2332,3174,2394],{"align":2315},[2332,3176,3177,3178,3181,3182,3185],{"align":2315},"The upload destination directory (e.g. ",[81,3179,3180],{},"\u002F"," or ",[81,3183,3184],{},"products\u002Fsummer\u002F","). Must match the signed value exactly.",[2310,3187,3188,3193,3195],{},[2332,3189,3190],{"align":2315},[81,3191,3192],{},"X-Picha-Max-Size",[2332,3194,3155],{"align":2315},[2332,3196,3197],{"align":2315},"Maximum permitted file size in bytes. The engine rejects uploads larger than this value.",[2310,3199,3200,3205,3207],{},[2332,3201,3202],{"align":2315},[81,3203,3204],{},"X-Picha-Allowed-Types",[2332,3206,2394],{"align":2315},[2332,3208,3209,3210,3213,3214,3217],{"align":2315},"Comma-separated list of permitted MIME types (e.g. ",[81,3211,3212],{},"image\u002Fwebp,image\u002Fjpeg","). Use ",[81,3215,3216],{},"*\u002F*"," to allow all.",[2296,3219,3221],{"id":3220},"hmac-construction","HMAC Construction",[63,3223,3224,3225,3228],{},"For security, signatures must be generated by the PichaFlow API Engine using an internal token. Your backend acts as a ",[76,3226,3227],{},"secure proxy"," that authenticates with your Secret Key, forwards the constraints to PichaFlow, and returns the generated signature payload to your frontend.",[63,3230,3231],{},[76,3232,3233],{},"Example (Node.js Proxy Endpoint):",[109,3235,3237],{"className":675,"code":3236,"language":677,"meta":114,"style":114},"\u002F\u002F server\u002Froutes\u002Fapi\u002Fupload\u002Fsign.js\n\nexport default defineEventHandler(async (event) => {\n  \u002F\u002F 1. Authenticate the caller (ensure they are logged in to your app)\n  const session = await getUserSession(event);\n  if (!session?.user) throw createError({ statusCode: 401 });\n\n  const tenantId  = session.user.tenantId;\n\n  \u002F\u002F 2. Read the constraint intent from the incoming frontend request\n  const directory     = getHeader(event, 'x-picha-directory')    || '\u002F';\n  const maxSize       = getHeader(event, 'x-picha-max-size')     || '5242880'; \u002F\u002F 5MB default\n  const allowedTypes  = getHeader(event, 'x-picha-allowed-types')|| 'image\u002Fwebp,image\u002Fjpeg';\n\n  \u002F\u002F 3. Request the signature from the PichaFlow API Engine\n  const pichaRes = await fetch('https:\u002F\u002Fapi.pichaflow.com\u002Fv1\u002Fupload\u002Fsign', {\n    method: 'POST',\n    headers: {\n      'Authorization': `Bearer ${process.env.PICHAFLOW_SECRET_KEY}`, \u002F\u002F Your sk_live_ key\n      'x-picha-directory': directory,\n      'x-picha-max-size': maxSize,\n      'x-picha-allowed-types': allowedTypes\n    }\n  });\n\n  if (!pichaRes.ok) {\n    throw createError({ statusCode: pichaRes.status, statusMessage: 'Failed to generate signature' });\n  }\n\n  \u002F\u002F 4. Return the complete signature payload to the frontend\n  return await pichaRes.json();\n});\n",[81,3238,3239,3244,3248,3275,3280,3304,3352,3356,3378,3382,3387,3427,3470,3506,3510,3515,3541,3556,3565,3606,3620,3634,3647,3652,3661,3665,3686,3727,3732,3736,3741,3759],{"__ignoreMap":114},[118,3240,3241],{"class":120,"line":121},[118,3242,3243],{"class":2558},"\u002F\u002F server\u002Froutes\u002Fapi\u002Fupload\u002Fsign.js\n",[118,3245,3246],{"class":120,"line":246},[118,3247,380],{"emptyLinePlaceholder":379},[118,3249,3250,3253,3256,3259,3261,3263,3266,3269,3271,3273],{"class":120,"line":264},[118,3251,3252],{"class":370},"export",[118,3254,3255],{"class":370}," default",[118,3257,3258],{"class":453}," defineEventHandler",[118,3260,457],{"class":242},[118,3262,1817],{"class":684},[118,3264,3265],{"class":252}," (",[118,3267,3268],{"class":619},"event",[118,3270,768],{"class":252},[118,3272,1088],{"class":684},[118,3274,405],{"class":252},[118,3276,3277],{"class":120,"line":279},[118,3278,3279],{"class":2558},"  \u002F\u002F 1. Authenticate the caller (ensure they are logged in to your app)\n",[118,3281,3282,3285,3288,3291,3293,3296,3298,3300,3302],{"class":120,"line":293},[118,3283,3284],{"class":684},"  const",[118,3286,3287],{"class":242}," session",[118,3289,3290],{"class":252}," =",[118,3292,844],{"class":370},[118,3294,3295],{"class":453}," getUserSession",[118,3297,457],{"class":864},[118,3299,3268],{"class":242},[118,3301,768],{"class":864},[118,3303,702],{"class":252},[118,3305,3306,3309,3311,3314,3317,3320,3323,3326,3329,3332,3334,3337,3340,3342,3345,3348,3350],{"class":120,"line":307},[118,3307,3308],{"class":370},"  if",[118,3310,3265],{"class":864},[118,3312,3313],{"class":252},"!",[118,3315,3316],{"class":242},"session",[118,3318,3319],{"class":252},"?.",[118,3321,3322],{"class":242},"user",[118,3324,3325],{"class":864},") ",[118,3327,3328],{"class":370},"throw",[118,3330,3331],{"class":453}," createError",[118,3333,457],{"class":864},[118,3335,3336],{"class":252},"{",[118,3338,3339],{"class":864}," statusCode",[118,3341,417],{"class":252},[118,3343,3344],{"class":734}," 401",[118,3346,3347],{"class":252}," }",[118,3349,768],{"class":864},[118,3351,702],{"class":252},[118,3353,3354],{"class":120,"line":321},[118,3355,380],{"emptyLinePlaceholder":379},[118,3357,3358,3360,3363,3366,3368,3370,3372,3374,3376],{"class":120,"line":441},[118,3359,3284],{"class":684},[118,3361,3362],{"class":242}," tenantId",[118,3364,3365],{"class":252},"  =",[118,3367,3287],{"class":242},[118,3369,606],{"class":252},[118,3371,3322],{"class":242},[118,3373,606],{"class":252},[118,3375,500],{"class":242},[118,3377,702],{"class":252},[118,3379,3380],{"class":120,"line":480},[118,3381,380],{"emptyLinePlaceholder":379},[118,3383,3384],{"class":120,"line":485},[118,3385,3386],{"class":2558},"  \u002F\u002F 2. Read the constraint intent from the incoming frontend request\n",[118,3388,3389,3391,3394,3397,3400,3402,3404,3406,3408,3411,3413,3416,3419,3421,3423,3425],{"class":120,"line":495},[118,3390,3284],{"class":684},[118,3392,3393],{"class":242}," directory",[118,3395,3396],{"class":252},"     =",[118,3398,3399],{"class":453}," getHeader",[118,3401,457],{"class":864},[118,3403,3268],{"class":242},[118,3405,467],{"class":252},[118,3407,761],{"class":252},[118,3409,3410],{"class":128},"x-picha-directory",[118,3412,717],{"class":252},[118,3414,3415],{"class":864},")    ",[118,3417,3418],{"class":252},"||",[118,3420,761],{"class":252},[118,3422,3180],{"class":128},[118,3424,717],{"class":252},[118,3426,702],{"class":252},[118,3428,3429,3431,3434,3437,3439,3441,3443,3445,3447,3450,3452,3455,3457,3459,3462,3464,3467],{"class":120,"line":517},[118,3430,3284],{"class":684},[118,3432,3433],{"class":242}," maxSize",[118,3435,3436],{"class":252},"       =",[118,3438,3399],{"class":453},[118,3440,457],{"class":864},[118,3442,3268],{"class":242},[118,3444,467],{"class":252},[118,3446,761],{"class":252},[118,3448,3449],{"class":128},"x-picha-max-size",[118,3451,717],{"class":252},[118,3453,3454],{"class":864},")     ",[118,3456,3418],{"class":252},[118,3458,761],{"class":252},[118,3460,3461],{"class":128},"5242880",[118,3463,717],{"class":252},[118,3465,3466],{"class":252},";",[118,3468,3469],{"class":2558}," \u002F\u002F 5MB default\n",[118,3471,3472,3474,3477,3479,3481,3483,3485,3487,3489,3492,3494,3496,3498,3500,3502,3504],{"class":120,"line":537},[118,3473,3284],{"class":684},[118,3475,3476],{"class":242}," allowedTypes",[118,3478,3365],{"class":252},[118,3480,3399],{"class":453},[118,3482,457],{"class":864},[118,3484,3268],{"class":242},[118,3486,467],{"class":252},[118,3488,761],{"class":252},[118,3490,3491],{"class":128},"x-picha-allowed-types",[118,3493,717],{"class":252},[118,3495,768],{"class":864},[118,3497,3418],{"class":252},[118,3499,761],{"class":252},[118,3501,3212],{"class":128},[118,3503,717],{"class":252},[118,3505,702],{"class":252},[118,3507,3508],{"class":120,"line":558},[118,3509,380],{"emptyLinePlaceholder":379},[118,3511,3512],{"class":120,"line":585},[118,3513,3514],{"class":2558},"  \u002F\u002F 3. Request the signature from the PichaFlow API Engine\n",[118,3516,3517,3519,3522,3524,3526,3528,3530,3532,3535,3537,3539],{"class":120,"line":590},[118,3518,3284],{"class":684},[118,3520,3521],{"class":242}," pichaRes",[118,3523,3290],{"class":252},[118,3525,844],{"class":370},[118,3527,847],{"class":453},[118,3529,457],{"class":864},[118,3531,717],{"class":252},[118,3533,3534],{"class":128},"https:\u002F\u002Fapi.pichaflow.com\u002Fv1\u002Fupload\u002Fsign",[118,3536,717],{"class":252},[118,3538,467],{"class":252},[118,3540,405],{"class":252},[118,3542,3543,3546,3548,3550,3552,3554],{"class":120,"line":595},[118,3544,3545],{"class":864},"    method",[118,3547,417],{"class":252},[118,3549,761],{"class":252},[118,3551,872],{"class":128},[118,3553,717],{"class":252},[118,3555,514],{"class":252},[118,3557,3558,3561,3563],{"class":120,"line":650},[118,3559,3560],{"class":864},"    headers",[118,3562,417],{"class":252},[118,3564,405],{"class":252},[118,3566,3567,3570,3572,3574,3576,3579,3582,3585,3588,3590,3593,3595,3598,3601,3603],{"class":120,"line":1469},[118,3568,3569],{"class":252},"      '",[118,3571,106],{"class":864},[118,3573,717],{"class":252},[118,3575,417],{"class":252},[118,3577,3578],{"class":252}," `",[118,3580,3581],{"class":128},"Bearer ",[118,3583,3584],{"class":252},"${",[118,3586,3587],{"class":242},"process",[118,3589,606],{"class":252},[118,3591,3592],{"class":242},"env",[118,3594,606],{"class":252},[118,3596,3597],{"class":242},"PICHAFLOW_SECRET_KEY",[118,3599,3600],{"class":252},"}`",[118,3602,467],{"class":252},[118,3604,3605],{"class":2558}," \u002F\u002F Your sk_live_ key\n",[118,3607,3608,3610,3612,3614,3616,3618],{"class":120,"line":1498},[118,3609,3569],{"class":252},[118,3611,3410],{"class":864},[118,3613,717],{"class":252},[118,3615,417],{"class":252},[118,3617,3393],{"class":242},[118,3619,514],{"class":252},[118,3621,3622,3624,3626,3628,3630,3632],{"class":120,"line":1526},[118,3623,3569],{"class":252},[118,3625,3449],{"class":864},[118,3627,717],{"class":252},[118,3629,417],{"class":252},[118,3631,3433],{"class":242},[118,3633,514],{"class":252},[118,3635,3636,3638,3640,3642,3644],{"class":120,"line":1554},[118,3637,3569],{"class":252},[118,3639,3491],{"class":864},[118,3641,717],{"class":252},[118,3643,417],{"class":252},[118,3645,3646],{"class":242}," allowedTypes\n",[118,3648,3649],{"class":120,"line":1565},[118,3650,3651],{"class":252},"    }\n",[118,3653,3654,3657,3659],{"class":120,"line":1570},[118,3655,3656],{"class":252},"  }",[118,3658,768],{"class":864},[118,3660,702],{"class":252},[118,3662,3663],{"class":120,"line":1613},[118,3664,380],{"emptyLinePlaceholder":379},[118,3666,3667,3669,3671,3673,3676,3678,3681,3683],{"class":120,"line":1648},[118,3668,3308],{"class":370},[118,3670,3265],{"class":864},[118,3672,3313],{"class":252},[118,3674,3675],{"class":242},"pichaRes",[118,3677,606],{"class":252},[118,3679,3680],{"class":242},"ok",[118,3682,3325],{"class":864},[118,3684,3685],{"class":252},"{\n",[118,3687,3688,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3712,3714,3716,3719,3721,3723,3725],{"class":120,"line":1679},[118,3689,3690],{"class":370},"    throw",[118,3692,3331],{"class":453},[118,3694,457],{"class":864},[118,3696,3336],{"class":252},[118,3698,3339],{"class":864},[118,3700,417],{"class":252},[118,3702,3521],{"class":242},[118,3704,606],{"class":252},[118,3706,2237],{"class":242},[118,3708,467],{"class":252},[118,3710,3711],{"class":864}," statusMessage",[118,3713,417],{"class":252},[118,3715,761],{"class":252},[118,3717,3718],{"class":128},"Failed to generate signature",[118,3720,717],{"class":252},[118,3722,3347],{"class":252},[118,3724,768],{"class":864},[118,3726,702],{"class":252},[118,3728,3729],{"class":120,"line":1684},[118,3730,3731],{"class":252},"  }\n",[118,3733,3734],{"class":120,"line":1704},[118,3735,380],{"emptyLinePlaceholder":379},[118,3737,3738],{"class":120,"line":1722},[118,3739,3740],{"class":2558},"  \u002F\u002F 4. Return the complete signature payload to the frontend\n",[118,3742,3744,3747,3749,3751,3753,3755,3757],{"class":120,"line":3743},31,[118,3745,3746],{"class":370},"  return",[118,3748,844],{"class":370},[118,3750,3521],{"class":242},[118,3752,606],{"class":252},[118,3754,663],{"class":453},[118,3756,699],{"class":864},[118,3758,702],{"class":252},[118,3760,3762,3764,3766],{"class":120,"line":3761},32,[118,3763,923],{"class":252},[118,3765,768],{"class":242},[118,3767,702],{"class":252},[2296,3769,3771],{"id":3770},"frontend-upload-javascript","Frontend Upload (JavaScript)",[109,3773,3777],{"className":3774,"code":3775,"language":3776,"meta":114,"style":114},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","async function secureUpload(file) {\n  \u002F\u002F 1. Request a signed context from your backend, passing the upload constraints\n  const intent = await fetch('\u002Fapi\u002Fupload\u002Fsign', {\n    method: 'POST',\n    headers: {\n      'x-picha-directory':     'products\u002Fsummer\u002F',\n      'x-picha-max-size':      String(file.size),\n      'x-picha-allowed-types': 'image\u002Fwebp,image\u002Fjpeg',\n    }\n  }).then(r => r.json());\n\n  \u002F\u002F 2. Build the form data payload\n  const formData = new FormData();\n  formData.append('file',     file);\n  formData.append('tenantId', intent.tenantId);\n  formData.append('directory', intent.directory);\n\n  \u002F\u002F 3. POST directly to the Edge Engine with all 5 constraint headers\n  const response = await fetch('https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload', {\n    method: 'POST',\n    headers: {\n      'X-Picha-Signature':     intent.signature,\n      'X-Picha-Timestamp':     String(intent.timestamp),\n      'X-Picha-Directory':     intent.directory,\n      'X-Picha-Max-Size':      intent.maxSize,\n      'X-Picha-Allowed-Types': intent.allowedTypes,\n    },\n    body: formData,\n  });\n\n  return response.json();\n}\n","javascript",[81,3778,3779,3784,3789,3794,3799,3804,3809,3814,3819,3823,3828,3832,3837,3842,3847,3852,3857,3861,3866,3871,3875,3879,3884,3889,3894,3899,3904,3909,3914,3919,3923,3928],{"__ignoreMap":114},[118,3780,3781],{"class":120,"line":121},[118,3782,3783],{},"async function secureUpload(file) {\n",[118,3785,3786],{"class":120,"line":246},[118,3787,3788],{},"  \u002F\u002F 1. Request a signed context from your backend, passing the upload constraints\n",[118,3790,3791],{"class":120,"line":264},[118,3792,3793],{},"  const intent = await fetch('\u002Fapi\u002Fupload\u002Fsign', {\n",[118,3795,3796],{"class":120,"line":279},[118,3797,3798],{},"    method: 'POST',\n",[118,3800,3801],{"class":120,"line":293},[118,3802,3803],{},"    headers: {\n",[118,3805,3806],{"class":120,"line":307},[118,3807,3808],{},"      'x-picha-directory':     'products\u002Fsummer\u002F',\n",[118,3810,3811],{"class":120,"line":321},[118,3812,3813],{},"      'x-picha-max-size':      String(file.size),\n",[118,3815,3816],{"class":120,"line":441},[118,3817,3818],{},"      'x-picha-allowed-types': 'image\u002Fwebp,image\u002Fjpeg',\n",[118,3820,3821],{"class":120,"line":480},[118,3822,3651],{},[118,3824,3825],{"class":120,"line":485},[118,3826,3827],{},"  }).then(r => r.json());\n",[118,3829,3830],{"class":120,"line":495},[118,3831,380],{"emptyLinePlaceholder":379},[118,3833,3834],{"class":120,"line":517},[118,3835,3836],{},"  \u002F\u002F 2. Build the form data payload\n",[118,3838,3839],{"class":120,"line":537},[118,3840,3841],{},"  const formData = new FormData();\n",[118,3843,3844],{"class":120,"line":558},[118,3845,3846],{},"  formData.append('file',     file);\n",[118,3848,3849],{"class":120,"line":585},[118,3850,3851],{},"  formData.append('tenantId', intent.tenantId);\n",[118,3853,3854],{"class":120,"line":590},[118,3855,3856],{},"  formData.append('directory', intent.directory);\n",[118,3858,3859],{"class":120,"line":595},[118,3860,380],{"emptyLinePlaceholder":379},[118,3862,3863],{"class":120,"line":650},[118,3864,3865],{},"  \u002F\u002F 3. POST directly to the Edge Engine with all 5 constraint headers\n",[118,3867,3868],{"class":120,"line":1469},[118,3869,3870],{},"  const response = await fetch('https:\u002F\u002Fegn.pichaflow.com\u002Fv1\u002Fupload', {\n",[118,3872,3873],{"class":120,"line":1498},[118,3874,3798],{},[118,3876,3877],{"class":120,"line":1526},[118,3878,3803],{},[118,3880,3881],{"class":120,"line":1554},[118,3882,3883],{},"      'X-Picha-Signature':     intent.signature,\n",[118,3885,3886],{"class":120,"line":1565},[118,3887,3888],{},"      'X-Picha-Timestamp':     String(intent.timestamp),\n",[118,3890,3891],{"class":120,"line":1570},[118,3892,3893],{},"      'X-Picha-Directory':     intent.directory,\n",[118,3895,3896],{"class":120,"line":1613},[118,3897,3898],{},"      'X-Picha-Max-Size':      intent.maxSize,\n",[118,3900,3901],{"class":120,"line":1648},[118,3902,3903],{},"      'X-Picha-Allowed-Types': intent.allowedTypes,\n",[118,3905,3906],{"class":120,"line":1679},[118,3907,3908],{},"    },\n",[118,3910,3911],{"class":120,"line":1684},[118,3912,3913],{},"    body: formData,\n",[118,3915,3916],{"class":120,"line":1704},[118,3917,3918],{},"  });\n",[118,3920,3921],{"class":120,"line":1722},[118,3922,380],{"emptyLinePlaceholder":379},[118,3924,3925],{"class":120,"line":3743},[118,3926,3927],{},"  return response.json();\n",[118,3929,3930],{"class":120,"line":3761},[118,3931,429],{},[134,3933,3934,3937,3938,339,3941,339,3944,3947,3948,3951],{"type":136},[76,3935,3936],{},"Using an official SDK?"," The PichaFlow SDKs (",[81,3939,3940],{},"@pichaflow\u002Freact",[81,3942,3943],{},"@pichaflow\u002Fvue",[81,3945,3946],{},"@pichaflow\u002Fsvelte",", etc.) handle signature generation and header injection automatically when you configure the ",[81,3949,3950],{},"signatureUrl"," option. The manual implementation above is only required for custom integrations.",[134,3953,3954,3957,3958,3960],{"type":179},[76,3955,3956],{},"Timestamp Expiry",": Signatures are valid for ",[76,3959,3165],{}," only. Generate a fresh signature immediately before each upload — do not cache or reuse them.",[3962,3963,3964],"style",{},"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":114,"searchDepth":246,"depth":246,"links":3966},[3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3981,3986,3990],{"id":95,"depth":246,"text":96},{"id":146,"depth":246,"text":147},{"id":168,"depth":246,"text":169},{"id":219,"depth":246,"text":220},{"id":357,"depth":246,"text":358},{"id":671,"depth":246,"text":672},{"id":958,"depth":246,"text":959},{"id":1223,"depth":246,"text":1224},{"id":1729,"depth":246,"text":1730},{"id":2290,"depth":246,"text":2291,"children":3977},[3978,3979,3980],{"id":2298,"depth":264,"text":2299},{"id":2437,"depth":264,"text":2438},{"id":2545,"depth":264,"text":2546},{"id":2726,"depth":246,"text":2727,"children":3982},[3983,3984,3985],{"id":2750,"depth":264,"text":2751},{"id":2759,"depth":264,"text":2760},{"id":2926,"depth":264,"text":2927},{"id":2970,"depth":246,"text":2971,"children":3987},[3988,3989],{"id":2977,"depth":264,"text":2978},{"id":3013,"depth":264,"text":3014},{"id":3082,"depth":246,"text":3083,"children":3991},[3992,3993,3994,3995],{"id":3097,"depth":264,"text":3098},{"id":3111,"depth":264,"text":3112},{"id":3220,"depth":264,"text":3221},{"id":3770,"depth":264,"text":3771},"REST API reference for custom PichaFlow integrations.","md",null,{},{"title":21,"description":3996},"qm-Gz4ia2BpRb5ee88CPqWSIqyxPuBETi7mMYEQnZ2w",[4003,4005],{"title":17,"path":18,"stem":19,"description":4004,"children":-1},"Manage projects, assets, pipelines, and team members in the PichaFlow Dashboard.",{"title":25,"path":26,"stem":27,"description":4006,"children":-1},"Learn how to transform images on the fly using PichaFlow URL parameters.",1789565438817]