[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":86,"blog-\u002Fblog\u002Fpractical-guide-api-methods":663,"blog-author-\u002Fblog\u002Fpractical-guide-api-methods":1499,"i-material-symbols:arrow-back-rounded":1511},{"id":4,"extension":5,"footer":6,"header":73,"meta":83,"stem":84,"__hash__":85},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":13,"legal":63},{"name":8,"tagline":9,"downloadCta":10},"Pieces","The memory layer for modern work.",{"label":11,"href":12},"All downloads","\u002Fdownloads",[14,26,39,51],{"title":15,"links":16},"Product",[17,20,23],{"label":18,"href":19},"Pieces Desktop","\u002F",{"label":21,"href":22},"Pieces Enterprise","\u002Fenterprise",{"label":24,"href":25},"Pieces MCP","\u002Fmcp",{"title":27,"links":28},"Resources",[29,33,36],{"label":30,"href":31,"external":32},"Documentation","url:docs.home",true,{"label":34,"href":35},"Blog","\u002Fblog",{"label":37,"href":38,"external":32},"GitHub","url:github.org",{"title":40,"links":41},"Community",[42,45,48],{"label":43,"href":44,"external":32},"Discord","url:social.discord",{"label":46,"href":47,"external":32},"X \u002F Twitter","url:social.x",{"label":49,"href":50,"external":32},"LinkedIn","url:social.linkedin",{"title":52,"links":53},"Company",[54,57,60],{"label":55,"href":56},"About","\u002Fabout",{"label":58,"href":59},"Updates","\u002Fupdates",{"label":61,"href":62},"Contact","\u002Fcontact",[64,67,70],{"label":65,"href":66},"Privacy Policy","\u002Flegal\u002Fprivacy",{"label":68,"href":69},"Refund Policy","\u002Flegal\u002Frefund",{"label":71,"href":72},"Terms of Service","\u002Flegal\u002Fterms",{"links":74,"signIn":75,"contact":78,"cta":80},[],{"label":76,"href":77},"Sign in","url:portal.home",{"label":79,"href":62},"Get in touch",{"label":81,"href":82},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","VdirGIa8cUm6xLprbBeTKcw914JfyJjWfF-9hSVOX5Y",{"id":87,"extension":5,"links":88,"meta":660,"stem":661,"__hash__":662},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,295,299,303,306,310,314,318,322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382,386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,453,457,461,465,469,473,477,480,483,486,489,493,497,500,504,508,512,516,520,524,528,532,536,540,544,548,551,555,559,563,567,571,574,577,580,584,587,591,595,599,603,606,610,614,617,620,623,627,631,635,638,641,644,648,652,656],{"key":90,"label":91,"href":92},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":94,"label":95,"href":96},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":98,"label":99,"href":100},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":102,"label":103,"href":104},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":106,"label":107,"href":108},"downloads.macOS.universal","Desktop macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fmacos-universal\u002Fdownload",{"key":110,"label":111,"href":112},"downloads.macOS.pkgArm64","Desktop macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd-arm64\u002Fdownload",{"key":114,"label":115,"href":116},"downloads.macOS.pkgIntel","Desktop macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pfd\u002Fdownload",{"key":118,"label":119,"href":120},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":122,"label":123,"href":124},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":126,"label":127,"href":128},"downloads.windows.msix","Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-msix\u002Fdownload",{"key":130,"label":131,"href":132},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":134,"label":135,"href":136},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":138,"label":139,"href":140},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":142,"label":143,"href":144},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":146,"label":147,"href":148},"downloads.linux.snap","Desktop Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fsnap\u002Fdownload",{"key":150,"label":151,"href":152},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":154,"label":155,"href":156},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":158,"label":159,"href":160},"downloads.piecesOS.macOS.universal","PiecesOS macOS Universal","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fmacos-universal\u002Fdownload",{"key":162,"label":163,"href":164},"downloads.piecesOS.macOS.pkgArm64","PiecesOS macOS PKG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only-arm64\u002Fdownload",{"key":166,"label":167,"href":168},"downloads.piecesOS.macOS.pkgIntel","PiecesOS macOS PKG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-pos-launch-only\u002Fdownload",{"key":170,"label":171,"href":172},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":174,"label":175,"href":176},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":178,"label":179,"href":180},"downloads.piecesOS.windows.msix","PiecesOS Windows MSIX","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-msix\u002Fdownload",{"key":182,"label":183,"href":184},"downloads.piecesOS.linux.snap","PiecesOS Linux Snap package","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fsnap\u002Fdownload",{"key":186,"label":187,"href":188},"downloads.combined.macOS.appleSilicon","Combined macOS installer Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg-arm64\u002Fdownload",{"key":190,"label":191,"href":104},"downloads.combined.macOS.intel","Combined macOS installer Intel",{"key":193,"label":194,"href":195},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":197,"label":198,"href":199},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":201,"label":202,"href":203},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":205,"label":206,"href":207},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":209,"label":210,"href":211},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":213,"label":214,"href":215},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":217,"label":218,"href":219},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":221,"label":222,"href":223},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":225,"label":226,"href":227},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":229,"label":230,"href":231},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":233,"label":234,"href":235},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":237,"label":238,"href":239},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":241,"label":242,"href":243},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":245,"label":246,"href":247},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":249,"label":250,"href":251},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":253,"label":254,"href":255},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":257,"label":258,"href":259},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":261,"label":262,"href":263},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":265,"label":266,"href":267},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":269,"label":270,"href":271},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":273,"label":274,"href":275},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":277,"label":278,"href":279},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":281,"label":282,"href":283},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":285,"label":286,"href":287},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":289,"label":290,"href":291},"docs.desktop.account","Desktop account settings docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconfiguration\u002Faccount",{"key":293,"label":294,"href":92},"docs.desktop.download","Desktop download docs",{"key":296,"label":297,"href":298},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":300,"label":301,"href":302},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":304,"label":305,"href":207},"docs.piecesOS.install","PiecesOS install docs",{"key":307,"label":308,"href":309},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":311,"label":312,"href":313},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":315,"label":316,"href":317},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":319,"label":320,"href":321},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":323,"label":324,"href":325},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":327,"label":328,"href":329},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":331,"label":332,"href":333},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":335,"label":336,"href":337},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":339,"label":340,"href":341},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":343,"label":344,"href":345},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":347,"label":348,"href":349},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":351,"label":352,"href":353},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":355,"label":356,"href":357},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":359,"label":360,"href":361},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":363,"label":364,"href":365},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":367,"label":368,"href":369},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":371,"label":372,"href":373},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":375,"label":376,"href":377},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":379,"label":380,"href":381},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":383,"label":384,"href":385},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":387,"label":388,"href":389},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":391,"label":392,"href":393},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":395,"label":396,"href":397},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":399,"label":400,"href":401},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":403,"label":404,"href":405},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":407,"label":408,"href":409},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":411,"label":412,"href":413},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":415,"label":416,"href":417},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":419,"label":420,"href":421},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":423,"label":424,"href":425},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":427,"label":428,"href":429},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":431,"label":432,"href":433},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":435,"label":436,"href":437},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":439,"label":440,"href":441},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":443,"label":444,"href":445},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":447,"label":448,"href":449},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":451,"label":58,"href":452},"site.updates","https:\u002F\u002Fpieces.app\u002Fupdates",{"key":454,"label":455,"href":456},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":458,"label":459,"href":460},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":462,"label":463,"href":464},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":466,"label":467,"href":468},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":470,"label":471,"href":472},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":474,"label":475,"href":476},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":478,"label":34,"href":479},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":481,"label":43,"href":482},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":484,"label":46,"href":485},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":487,"label":488,"href":485},"social.twitter","Twitter",{"key":490,"label":491,"href":492},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":494,"label":495,"href":496},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":498,"label":49,"href":499},"social.linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":501,"label":502,"href":503},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":505,"label":506,"href":507},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":509,"label":510,"href":511},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":513,"label":514,"href":515},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":517,"label":518,"href":519},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":521,"label":522,"href":523},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":525,"label":526,"href":527},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":529,"label":530,"href":531},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":533,"label":534,"href":535},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":537,"label":538,"href":539},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":541,"label":542,"href":543},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":545,"label":546,"href":547},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":549,"label":550,"href":247},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":552,"label":553,"href":554},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":556,"label":557,"href":558},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":560,"label":561,"href":562},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":564,"label":565,"href":566},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":568,"label":569,"href":570},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":572,"label":573,"href":66},"legal.privacyPolicy","Privacy policy",{"key":575,"label":576,"href":69},"legal.refundPolicy","Refund policy",{"key":578,"label":579,"href":72},"legal.terms","Terms",{"key":581,"label":582,"href":583},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":585,"label":586,"href":503},"videos.youtubeChannel","YouTube channel",{"key":588,"label":589,"href":590},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":592,"label":593,"href":594},"videos.snippetDiscoveryxR","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":596,"label":597,"href":598},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":600,"label":601,"href":602},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":604,"label":605,"href":519},"sales.feedback","Feedback discussions",{"key":607,"label":608,"href":609},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":611,"label":612,"href":613},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":615,"label":616,"href":19},"routes.home","Home route",{"key":618,"label":619,"href":56},"routes.about","About route",{"key":621,"label":622,"href":12},"routes.downloads","Downloads route",{"key":624,"label":625,"href":626},"routes.thanks","Post-install thanks route","\u002Finstall\u002Fthanks",{"key":628,"label":629,"href":630},"routes.pricing","Pricing route","\u002Fpricing",{"key":632,"label":633,"href":634},"cta.freeTrial","Start free trial CTA (Pieces Pro) — used by \u002Fcampaigns\u002F* landing pages","https:\u002F\u002Fcampaigns.pieces.app\u002F",{"key":636,"label":637,"href":22},"routes.enterprise","Enterprise route",{"key":639,"label":640,"href":62},"routes.contact","Contact route",{"key":642,"label":643,"href":59},"routes.updates","Updates route",{"key":645,"label":646,"href":647},"routes.migrationError","Migration error route","\u002Fmigration\u002Ferror",{"key":649,"label":650,"href":651},"routes.authenticated","Post-login authenticated route","\u002Fauth\u002Fsigned-in",{"key":653,"label":654,"href":655},"routes.signed-out","Signed out route","\u002Fauth\u002Fsigned-out",{"key":657,"label":658,"href":659},"routes.authentication-error","Authentication error route","\u002Fauth\u002Ferror",{},"data\u002Fshared\u002Furls","NLkVE1lIUws518K-1QsSB6T-GvlXYIzcRL1HDhqarGQ",{"id":664,"title":665,"author":666,"authorPhoto":667,"authorPhotoAlt":668,"authorSlug":669,"body":670,"buttonText":668,"buttonUrl":668,"category":1485,"date":1486,"description":1487,"draft":1488,"editorsPick":1488,"extension":1489,"featured":1488,"image":1490,"imageAlt":1491,"meta":1492,"navigation":32,"ogImage":668,"ogImageAlt":668,"path":1493,"seo":1494,"stem":1495,"tags":1496,"__hash__":1498},"blog\u002Fblog\u002Fpractical-guide-api-methods.md","API methods: a beginner-friendly guide for developers","Paul Ibeabuchi","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fisaac-junior.svg",null,"paul-ibeabuchi",{"type":671,"value":672,"toc":1462},"minimark",[673,677,693,696,707,710,713,717,725,728,731,734,738,746,768,772,781,790,810,813,818,827,830,843,850,860,863,869,873,880,886,895,901,904,908,915,921,927,933,936,940,947,950,956,962,968,975,981,984,990,993,997,1004,1014,1029,1034,1038,1045,1054,1060,1066,1071,1075,1082,1088,1094,1103,1107,1114,1124,1130,1140,1146,1150,1157,1166,1169,1174,1178,1181,1324,1328,1331,1334,1337,1343,1346,1349,1353,1356,1359,1409,1412,1415,1424,1428,1431,1440,1449,1457],[674,675,665],"h2",{"id":676},"api-methods-a-beginner-friendly-guide-for-developers",[678,679,680,681,685,686,689,690,692],"p",{},"Have you ever wondered whether the endpoint for resending an SMS notification should be a ",[682,683,684],"code",{},"POST"," or a ",[682,687,688],{},"GET","? You might think, \"Hey, it doesn't accept any request body, so it must be a ",[682,691,688],{}," request.\" Well, hold that thought because you would be wrong.",[678,694,695],{},"That's exactly what this article is about.",[678,697,698,699,706],{},"With around 30 different API methods ",[700,701,705],"a",{"href":702,"rel":703},"https:\u002F\u002Fwww.iana.org\u002Fassignments\u002Fprotocol-numbers\u002Fprotocol-numbers.xhtml",[704],"nofollow","listed by IANA",", it can feel like trying to choose between a spade and a shove l— both can dig, but it doesn't mean they're interchangeable. This guide will explore various REST methods and API request methods, helping you understand their proper use cases and api functionality.",[678,708,709],{},"Throughout this guide, I'll break down the most common REST API methods you're likely to encounter in your day-to-day application development.",[678,711,712],{},"We'll cover the essential \"get post put delete\" operations and other http request types, unpack important concepts like idempotency, safety, and cacheability in API methods, and explore different types of api calls.",[674,714,716],{"id":715},"what-are-api-methods","What are API methods?",[678,718,719,724],{},[700,720,723],{"href":721,"rel":722},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FHTTP\u002FMethods",[704],"HTTP methods",", often referred to as API methods or REST methods, are a set of request methods that indicate the desired action to be performed on a resource in the context of client-server communication.",[678,726,727],{},"These methods are fundamental to understanding what is an api method and how it functions.",[678,729,730],{},"Whenever we send an HTTP request, a method must be specified to determine the api functionality.",[678,732,733],{},"Based on the method chosen, the server is able to determine the appropriate course of action and respond accordingly, often in hypermedia formats such as JSON or XML. This request-response model forms the backbone of API interactions.",[674,735,737],{"id":736},"key-characteristics-of-api-methods","Key characteristics of API methods",[678,739,740,741,745],{},"When discussing API methods and their functions, there are three important concepts to keep in mind: ",[742,743,744],"strong",{},"safety, idempotency, and cacheability",". These characteristics are crucial for understanding the behavior of different http request types.",[747,748,749,756,762],"ol",{},[750,751,752,755],"li",{},[742,753,754],{},"Safe Methods",": Safe methods are those that do not modify server resources. They're designed to allow clients to interact with resources without risking alterations or side effects.",[750,757,758,761],{},[742,759,760],{},"Idempotent Methods",": Idempotent methods are those that can be called multiple times with the same effect as the first call. This characteristic ensures that clients can safely repeat N > 0 identical requests.",[750,763,764,767],{},[742,765,766],{},"Cacheable Methods",": Cacheable methods allow responses to be stored and reused for future requests, which can significantly improve API performance.",[674,769,771],{"id":770},"overview-of-api-request-types","Overview of API request types",[678,773,774,775,780],{},"As of 2025, the Internet Assigned Numbers Authority (IANA) lists ",[700,776,779],{"href":777,"rel":778},"https:\u002F\u002Fwww.iana.org\u002Fassignments\u002Fhttp-methods\u002Fhttp-methods.xhtml",[704],"30 HTTP methods",".",[678,782,783,784,789],{},"However, only 9 of these methods are explicitly defined by the HTTP protocol in ",[700,785,788],{"href":786,"rel":787},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc9110.html#name-methods",[704],"RFC 9110",". These form the core of RESTful APIs and are essential for understanding different types of api calls.",[678,791,792,793,798,799,804,805,780],{},"The remaining API request types have been specified in other protocols, such as ",[700,794,797],{"href":795,"rel":796},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FGlossary\u002FWebDAV",[704],"WebDAV"," and its siblings, ",[700,800,803],{"href":801,"rel":802},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FGlossary\u002FCalDAV",[704],"CalDAV"," and ",[700,806,809],{"href":807,"rel":808},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FGlossary\u002FCardDAV",[704],"CardDAV",[678,811,812],{},"This guide will focus solely on the REST API methods that are most commonly used in RESTful applications, including the fundamental \"get post put delete\" operations.",[814,815,817],"h3",{"id":816},"get-method","GET Method",[678,819,820],{},[821,822,823,826],"em",{},[742,824,825],{},"Use case:"," Data retrieval without any side effects, a common operation in RESTful APIs.",[678,828,829],{},"The GET method stands out as one of the most frequently used API request types. Its primary purpose is to retrieve data of a target resource from a server. It is both idempotent, safe, and cacheable, making it a cornerstone of API functionality.",[678,831,832,833,838,839,842],{},"For instance, consider the ",[700,834,837],{"href":835,"rel":836},"https:\u002F\u002Fbeta.docs.pieces.app\u002Fapi-reference\u002Fapireference\u002Fhtml-share",[704],"Pieces REST API",". To retrieve all downloadable AI models that can be displayed in the Pieces for Desktop app, we expose an endpoint at \u002F",[682,840,841],{},"models"," dedicated to fetching this resource.",[678,844,845,846,849],{},"With Pieces installed on my local machine, I can easily query this API endpoint on my local server at port ",[682,847,848],{},"39301"," like this:",[851,852,857],"pre",{"className":853,"code":855,"language":856},[854],"language-text","curl --request GET \\\n  --url http:\u002F\u002Flocalhost:39301\u002Fmodels \\\n  --header 'accept: application\u002Fjson'\n","text",[682,858,855],{"__ignoreMap":859},"",[678,861,862],{},"Once I send this request, the server will respond back with all the downloadable AI models in a handy JSON format, which looks something like this:",[851,864,867],{"className":865,"code":866,"language":856},[854],"{\n  \"iterable\": [\n    {\n      \"schema\": {\n        \"migration\": 0,\n        \"semantic\": \"MAJOR_0_MINOR_0_PATCH_1\"\n      },\n      \"id\": \"75453f1b-a676-401a-91dd-e5b4570eb35a\",\n      \"version\": \"t11-v46-i01\",\n      \"created\": {\n        \"value\": \"2025-01-26T23:00:00.000Z\",\n        \"readable\": \"about a month ago\"\n      },\n      \"name\": \"DeepSeek-R1 1.5B\",\n      \"cloud\": false,\n      \"type\": \"SPEED\",\n      \"usage\": \"CODE_CONVERSATION\",\n      \"foundation\": \"QWEN_LATEST\",\n      \"downloaded\": false,\n      \"loaded\": false,\n      \"unique\": \"deepseek-r1:1.5b-qwen-distill-q4_K_M\",\n      \"cpu\": false,\n      \"downloading\": false,\n      \"maxTokens\": {\n        \"total\": 32768,\n        \"input\": 16384,\n        \"output\": 16384\n      }\n    }\n  ]\n}\n",[682,868,866],{"__ignoreMap":859},[814,870,872],{"id":871},"post-method","POST Method",[678,874,875],{},[821,876,877,879],{},[742,878,825],{}," Creating new resources or submitting data that needs to change the current state. It can also be used to trigger side effects, such as sending emails or adding messages to a queue.",[678,881,882,883,885],{},"The ",[682,884,684],{}," method is used to push data to the server, primarily for the purpose of data creation. It can also be used to trigger side effects on the server or an external system, making it a versatile method for various API functions.",[678,887,888,889,891,892,894],{},"For example, you can use a ",[682,890,684],{}," request to trigger resending a verification email or perform other CRUD operations. You wouldn't use a ",[682,893,688],{}," request here even if you don't pass a body content because it still triggers a side effect.",[678,896,897,898,900],{},"Also, it's good to note that ",[682,899,684],{}," requests are neither idempotent nor safe. But they are cacheable. Weird right? If you explicitly indicate freshness (using cache headers) and set a Content-Location header, the response will be cached.",[678,902,903],{},"Now, just because you can, doesn't mean you should. Unless you want to debug weird bugs down the line.",[814,905,907],{"id":906},"put-method","PUT Method",[678,909,910],{},[821,911,912,914],{},[742,913,825],{}," Updating or replacing an existing resource entirely, a common operation in RESTful APIs.",[678,916,882,917,920],{},[682,918,919],{},"PUT"," method is used to replace a known resource URI with a newly updated resource. It is also used for data updating where the resource ID is chosen by the client, making it an essential part of CRUD operations in RESTful APIs.",[678,922,923,924,926],{},"A typical scenario I've come across for using the ",[682,925,919],{}," method is uploading a file to be stored in a blob storage such as S3 or updating a profile picture.",[678,928,929,930,932],{},"It's good to note ",[682,931,919],{}," is neither a safe nor cacheable operation, in that it modifies (or creates) state on the server, but it is idempotent.",[678,934,935],{},"For instance, if you repeatedly upload a file, the existing object will be replaced each time.",[814,937,939],{"id":938},"delete-method","DELETE Method",[678,941,942],{},[821,943,944,946],{},[742,945,825],{}," Removing resources from the server or database, completing the set of CRUD operations in RESTful APIs.",[678,948,949],{},"This method is as straightforward as the name implies; it is used for data deletion and is a crucial part of CRUD operations in API functionality.",[678,951,882,952,955],{},[682,953,954],{},"DELETE"," method requests that the origin server remove the association between the target resource and its current functionality.",[678,957,958,959,961],{},"In terms of characteristics, ",[682,960,954],{}," is neither safe nor cacheable, but is considered idempotent. You might wonder, \"How is that possible because subsequent retries will throw error?\"",[678,963,964,965,967],{},"Well, think about it, regardless of how many times you send a ",[682,966,954],{}," request for the same resource, the outcome remains the same.",[678,969,970,971,974],{},"Let me demonstrate that still using Pieces REST API. Searching through the docs, I found an endpoint to delete custom models added. If I go ahead and delete a custom model I added with the model ID ",[682,972,973],{},"0e4dcc36-528e-4951-9e08-49e9aaae203c",":",[851,976,979],{"className":977,"code":978,"language":856},[854],"curl --request DELETE \\\n  --url http:\u002F\u002Flocalhost:39301\u002Fmodels\u002F0e4dcc36-528e-4951-9e08-49e9aaae203c\u002Fdelete \\\n  --header 'accept: text\u002Fplain'\n",[682,980,978],{"__ignoreMap":859},[678,982,983],{},"As expected, I'll get a response of 204 status code",[851,985,988],{"className":986,"code":987,"language":856},[854],"HTTP\u002F1.1 404 Not Found\nOPTIONS \u002Fmodels\u002F0e4dcc36-528e-4951-9e08-49e9aaae203c\u002Fdelete HTTP\u002F1.1\n\ndate: Tue, 05 Mar 2025 9:13:19 GMT\n",[682,989,987],{"__ignoreMap":859},[678,991,992],{},"Then, if I decide to repeat the same request, I'd get a 404 (Not Found) response. But frankly, I don't care; the model is still gone, and nothing changes in the end.",[814,994,996],{"id":995},"patch-method","PATCH Method",[678,998,999],{},[821,1000,1001,1003],{},[742,1002,825],{}," Making partial updates to an existing resource without modifying the entire content, enhancing the flexibility of CRUD operations in API functionality.",[678,1005,1006,1007,1009,1010,1013],{},"Sometimes, sending an entire resource back and forth with a ",[682,1008,919],{}," request just doesn't make sense, especially when I'm only looking to make a small change. It feels almost like I'm wasting precious bandwidth IMO. That's precisely where the ",[682,1011,1012],{},"PATCH"," method steps in.",[678,1015,1016,1017,1022,1023,1025,1026,1028],{},"Introduced as part of ",[700,1018,1021],{"href":1019,"rel":1020},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc5789",[704],"RFC 5789",", the ",[682,1024,1012],{}," method solves applying partial modifications to a resource rather than replacing it entirely. This makes it a much more efficient option compared to ",[682,1027,919],{}," when I only need to update specific attributes without overhauling the whole resource.",[678,1030,1031,1033],{},[682,1032,1012],{}," is not a safe operation since it modifies the resource state on the server. Additionally, It's also not inherently idempotent, but it can be in certain scenarios, such as when updating to a fixed value.",[674,1035,1037],{"id":1036},"options-method","OPTIONS Method",[678,1039,1040],{},[821,1041,1042,1044],{},[742,1043,825],{}," Discovering the communication options available for a specific endpoint, crucial for understanding API functionality and available http request types.",[678,1046,882,1047,1050,1051,1053],{},[682,1048,1049],{},"OPTIONS"," method is designed to retrieve the communication options available for a specified resource. Essentially, when you send an ",[682,1052,1049],{}," request, you're asking the server which HTTP methods and headers are supported for that particular endpoint or resource.",[678,1055,1056,1057,1059],{},"One of its major use cases as you might already know is for cross-origin resource sharing (CORS). It allows browsers to determine which external resources are permitted. For example, here's what an ",[682,1058,1049],{}," response might look like when you hit a cross-origin endpoint:",[851,1061,1064],{"className":1062,"code":1063,"language":856},[854],"HTTP\u002F1.1 200 No Content\nOPTIONS \u002Fapi\u002Fusers HTTP\u002F1.1\n\nAllow: GET, POST, OPTIONS\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, OPTIONS\nAccess-Control-Allow-Headers: Content-Type\n",[682,1065,1063],{"__ignoreMap":859},[678,1067,882,1068,1070],{},[682,1069,1049],{}," method is considered a safe and idempotent method. However, it isn't cacheable.",[814,1072,1074],{"id":1073},"head-method","HEAD Method",[678,1076,1077],{},[821,1078,1079,1081],{},[742,1080,825],{}," Fetching metadata without transferring the entire content, useful for checking resource availability in RESTful APIs.",[678,1083,882,1084,1087],{},[682,1085,1086],{},"HEAD"," method is a handy tool for retrieving the metadata of a specified resource in the form of headers without downloading the entire content.",[678,1089,1090,1091,1093],{},"It's almost identical to the ",[682,1092,688],{}," method, but with one significant difference: the server responds only with the headers only.",[678,1095,1096,1097,1099,1100,1102],{},"As mentioned earlier, the ",[682,1098,1086],{}," method closely mirrors ",[682,1101,688],{}," requests, so it maintains the qualities of being idempotent, safe, and cacheable.",[814,1104,1106],{"id":1105},"connect-method","CONNECT Method",[678,1108,1109],{},[821,1110,1111,1113],{},[742,1112,825],{}," Creating secure HTTPS connections over proxy servers, an important aspect of API security and authentication.",[678,1115,1116,1117,1120,1121,1123],{},"Do you know those options in your browser settings that let you configure a proxy to route all your requests? That's where the ",[682,1118,1119],{},"CONNECT"," method comes into play. Essentially, the ",[682,1122,1119],{}," method is used to establish a secure network connection (HTTPS) through a proxy server.",[678,1125,1126,1127,1129],{},"Upon receiving a ",[682,1128,1119],{}," request, the proxy server works to set up a TCP connection to the origin, which is the server hosting the original content.",[678,1131,1132,1133,1135,1136,1139],{},"Typically, you wouldn't need to directly interact with ",[682,1134,1119],{}," method in your ",[682,1137,1138],{},"REST"," service, as it is handled automatically by reverse proxies like Nginx or Caddy.",[678,1141,1142,1143,1145],{},"When it comes to the characteristics of the ",[682,1144,1119],{}," method, it does not qualify as idempotent, safe, or cacheable.",[814,1147,1149],{"id":1148},"trace-method","TRACE Method",[678,1151,1152],{},[821,1153,1154,1156],{},[742,1155,825],{}," Troubleshooting and diagnostic testing of endpoint paths in RESTful APIs.",[678,1158,882,1159,1162,1163,1165],{},[682,1160,1161],{},"TRACE"," HTTP method performs a message loop-back test along the path to the target resource. When a server receives a ",[682,1164,1161],{}," request, it processes the requests and echoes back all the information it received, including all headers and body content.",[678,1167,1168],{},"I've found this method to be quite useful for debugging, especially when I want to identify any changes made by intermediaries like proxies or gateways that might alter the request during its journey.",[678,1170,882,1171,1173],{},[682,1172,1161],{}," method is idempotent and safe, and it is also not cacheable.",[674,1175,1177],{"id":1176},"safety-idempotency-and-cacheable-methods","Safety, idempotency, and cacheable methods",[678,1179,1180],{},"Here's is a quick-reference table comparing API request types and their categorization in terms of safety, cacheability, and idempotency.",[1182,1183,1184,1209],"table",{},[1185,1186,1187],"thead",{},[1188,1189,1190,1196,1201,1206],"tr",{},[1191,1192,1193],"th",{},[742,1194,1195],{},"Method",[1191,1197,1198],{},[742,1199,1200],{},"Safe",[1191,1202,1203],{},[742,1204,1205],{},"Idempotent",[1191,1207,1208],{},"Cacheable",[1210,1211,1212,1226,1238,1251,1263,1275,1287,1300,1312],"tbody",{},[1188,1213,1214,1219,1222,1224],{},[1215,1216,1217],"td",{},[682,1218,688],{},[1215,1220,1221],{},"Yes",[1215,1223,1221],{},[1215,1225,1221],{},[1188,1227,1228,1232,1234,1236],{},[1215,1229,1230],{},[682,1231,1086],{},[1215,1233,1221],{},[1215,1235,1221],{},[1215,1237,1221],{},[1188,1239,1240,1244,1246,1248],{},[1215,1241,1242],{},[682,1243,1049],{},[1215,1245,1221],{},[1215,1247,1221],{},[1215,1249,1250],{},"No",[1188,1252,1253,1257,1259,1261],{},[1215,1254,1255],{},[682,1256,1161],{},[1215,1258,1221],{},[1215,1260,1221],{},[1215,1262,1250],{},[1188,1264,1265,1269,1271,1273],{},[1215,1266,1267],{},[682,1268,919],{},[1215,1270,1250],{},[1215,1272,1221],{},[1215,1274,1250],{},[1188,1276,1277,1281,1283,1285],{},[1215,1278,1279],{},[682,1280,954],{},[1215,1282,1250],{},[1215,1284,1221],{},[1215,1286,1250],{},[1188,1288,1289,1293,1295,1297],{},[1215,1290,1291],{},[682,1292,684],{},[1215,1294,1250],{},[1215,1296,1250],{},[1215,1298,1299],{},"Conditional*",[1188,1301,1302,1306,1308,1310],{},[1215,1303,1304],{},[682,1305,1012],{},[1215,1307,1250],{},[1215,1309,1250],{},[1215,1311,1299],{},[1188,1313,1314,1318,1320,1322],{},[1215,1315,1316],{},[682,1317,1119],{},[1215,1319,1250],{},[1215,1321,1250],{},[1215,1323,1250],{},[674,1325,1327],{"id":1326},"the-upcoming-query-http-method","The upcoming QUERY HTTP method",[678,1329,1330],{},"Transmitting a large set of search parameters in a GET request becomes problematic at a certain size due to limitations on length and URI encoding. The less-than-ideal workaround has often been to use POST to send these parameters in the request body.",[678,1332,1333],{},"However, this presents its own set of challenges, as POST isn't idempotent and makes caching responses tricky.",[678,1335,1336],{},"That's where the proposed QUERY HTTP method steps in. It aims to keep all the benefits of GET—such as being safe, idempotent, and cacheable—while also embracing the flexibility of a POST request body for sending parameters.",[851,1338,1341],{"className":1339,"code":1340,"language":856},[854],"QUERY \u002Fproducts\nContent-Type: application\u002Fjson\n\n{\n   \"q\": \"pie\",\n   \"limit\": 20,\n   \"sort\": \"asc\",\n   \"page\": 1\n}\n",[682,1342,1340],{"__ignoreMap":859},[678,1344,1345],{},"This HTTP method is currently still in draft form but has already been assigned a \"PROPOSED STANDARD\" status as of January 7 of this year.",[678,1347,1348],{},"So, keep an eye out for this—it's likely we'll see it become an internet standard in the near future, potentially expanding the range of http request types available for API functionality.",[674,1350,1352],{"id":1351},"what-are-the-types-of-api","What are the types of API?",[678,1354,1355],{},"While we've focused primarily on REST API methods, it's worth noting that there are several other types of APIs, each with its own set of methods and protocols.",[678,1357,1358],{},"Understanding these different types of api calls is crucial for developers working with various API protocols:",[747,1360,1361,1367,1373,1379,1385,1391,1397,1403],{},[750,1362,1363,1366],{},[742,1364,1365],{},"SOAP APIs",": These use XML for message format and rely on SOAP (Simple Object Access Protocol) for transmitting data.",[750,1368,1369,1372],{},[742,1370,1371],{},"GraphQL APIs",": A query language for APIs that allows clients to request exactly the data they need.",[750,1374,1375,1378],{},[742,1376,1377],{},"RPC APIs",": Remote Procedure Call APIs that encode function calls as requests to remote servers.",[750,1380,1381,1384],{},[742,1382,1383],{},"Webhook APIs",": Also known as reverse APIs, these send real-time data to other applications.",[750,1386,1387,1390],{},[742,1388,1389],{},"Open APIs",": Publicly available APIs that allow developers to access certain data or functionality of an application.",[750,1392,1393,1396],{},[742,1394,1395],{},"Partner APIs",": APIs exposed to strategic business partners, often requiring specific authorization.",[750,1398,1399,1402],{},[742,1400,1401],{},"Internal APIs",": Used within an organization to share resources and functionality between different internal teams.",[750,1404,1405,1408],{},[742,1406,1407],{},"Composite APIs",": These combine multiple API calls into a single request, useful for microservices architectures.",[678,1410,1411],{},"Each of these API types has its own set of methods and best practices for client-server communication, showcasing the diverse landscape of api functionality.",[678,1413,1414],{},"In the end, it's you, the user, who gives meaning to the API methods. These methods are essentially generic constructs and their actual behavior depends on how you choose to implement them in your RESTful APIs.",[678,1416,1417,1418,1420,1421,1423],{},"While ",[682,1419,1138],{}," principles provide guidelines for expected behaviors, a ",[682,1422,954],{}," method can still be used to create data, while a POST method can be repurposed to retrieve data. The flexibility of these methods allows for creative solutions in API design and implementation.",[674,1425,1427],{"id":1426},"conclusion","Conclusion",[678,1429,1430],{},"I hope I was able to clearly explain the differences between the various API request types and help you understand when to use each one effectively. Now it's time to put that knowledge into practice and explore the world of API functionality.",[678,1432,1433,1434,1439],{},"If you're working with the Go programming language, I highly recommend checking out this guide on creating and documenting a REST API ",[700,1435,1438],{"href":1436,"rel":1437},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fhow-to-build-and-document-a-go-rest-api-with-gin-and-go-swagger",[704],"using Gin and Swagger",". It'll solidify your understanding of building an API service and implementing various API functions.",[678,1441,1442,1443,1448],{},"For those of you who crave the nitty-gritty details about REST methods and http request types, you might also want to check out the ",[700,1444,1447],{"href":1445,"rel":1446},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc9110",[704],"original RFC"," published by IETF for an in-depth look at all the API methods discussed in this blog post.",[678,1450,1451,1452],{},"Lastly, if you're eager to learn more, I’ve worked on a guide for GitHub beginners ",[700,1453,1456],{"href":1454,"rel":1455},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fbeginners-guide-github",[704],"out here.",[678,1458,1459],{},[821,1460,1461],{},"This article was first published on February 24th, 2024, and was improved by Emmanuel Isenah as of March 12th, 2025, to improve your experience and share the latest information.",{"title":859,"searchDepth":1463,"depth":1463,"links":1464},2,[1465,1466,1467,1468,1476,1481,1482,1483,1484],{"id":676,"depth":1463,"text":665},{"id":715,"depth":1463,"text":716},{"id":736,"depth":1463,"text":737},{"id":770,"depth":1463,"text":771,"children":1469},[1470,1472,1473,1474,1475],{"id":816,"depth":1471,"text":817},3,{"id":871,"depth":1471,"text":872},{"id":906,"depth":1471,"text":907},{"id":938,"depth":1471,"text":939},{"id":995,"depth":1471,"text":996},{"id":1036,"depth":1463,"text":1037,"children":1477},[1478,1479,1480],{"id":1073,"depth":1471,"text":1074},{"id":1105,"depth":1471,"text":1106},{"id":1148,"depth":1471,"text":1149},{"id":1176,"depth":1463,"text":1177},{"id":1326,"depth":1463,"text":1327},{"id":1351,"depth":1463,"text":1352},{"id":1426,"depth":1463,"text":1427},"Software Development","2025-03-12T00:00:00.000Z","Not sure when to use GET, POST, PUT, or DELETE? Learn all HTTP methods, their purposes, and how to use them correctly in RESTful APIs.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002Fpractical-guide-api-methods\u002Fhero.png","decorative image showing a laptop with api method code",{},"\u002Fblog\u002Fpractical-guide-api-methods",{"title":665,"description":1487},"blog\u002Fpractical-guide-api-methods",[1497],"api-3","0G-ma-EnSKjvwCYfGB06N1c8jMXyjTE5d6kymscy5C4",{"id":1500,"title":666,"body":1501,"description":859,"draft":1488,"extension":1489,"meta":1505,"navigation":32,"path":1506,"photo":1507,"photoAlt":668,"seo":1508,"stem":1509,"__hash__":1510},"authors\u002Fauthors\u002Fpaul-ibeabuchi.md",{"type":671,"value":1502,"toc":1503},[],{"title":859,"searchDepth":1463,"depth":1463,"links":1504},[],{},"\u002Fauthors\u002Fpaul-ibeabuchi","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fplaceholder.svg",{"title":666,"description":859},"authors\u002Fpaul-ibeabuchi","S_ULMNt-opEknwuDAmjlbeK32cHfqg81LaCQZ5ZKTys",{"left":1512,"top":1512,"width":1513,"height":1513,"rotate":1512,"vFlip":1488,"hFlip":1488,"body":1514},0,24,"\u003Cpath fill=\"currentColor\" d=\"m7.825 13l4.9 4.9q.3.3.288.7t-.313.7q-.3.275-.7.288t-.7-.288l-6.6-6.6q-.15-.15-.213-.325T4.426 12t.063-.375t.212-.325l6.6-6.6q.275-.275.688-.275t.712.275q.3.3.3.713t-.3.712L7.825 11H19q.425 0 .713.288T20 12t-.288.713T19 13z\"\u002F>"]