[{"data":1,"prerenderedAt":901},["ShallowReactive",2],{"navigation_docs":3,"-docs-api-overview":82,"-docs-api-overview-surround":896},[4,9,40,61],{"title":5,"path":6,"stem":7,"order":8},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F4.changelog",4,{"title":10,"path":11,"stem":12,"children":13,"page":39},"Api","\u002Fdocs\u002Fapi","docs\u002Fapi",[14,18,22,26,30,34],{"title":15,"path":16,"stem":17},"Overview","\u002Fdocs\u002Fapi\u002Foverview","docs\u002Fapi\u002F1.overview",{"title":19,"path":20,"stem":21},"Quotes","\u002Fdocs\u002Fapi\u002Fquotes","docs\u002Fapi\u002F2.quotes",{"title":23,"path":24,"stem":25},"Authors","\u002Fdocs\u002Fapi\u002Fauthors","docs\u002Fapi\u002F3.authors",{"title":27,"path":28,"stem":29},"Playlists","\u002Fdocs\u002Fapi\u002Fplaylists","docs\u002Fapi\u002F4.playlists",{"title":31,"path":32,"stem":33},"Categories","\u002Fdocs\u002Fapi\u002Fcategories","docs\u002Fapi\u002F5.categories",{"title":35,"path":36,"stem":37,"order":38},"API Reference","\u002Fdocs\u002Fapi\u002F_dir","docs\u002Fapi\u002F_dir",3,false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started",[45,49,53,57],{"title":46,"path":47,"stem":48},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002Fgetting-started\u002F1.introduction",{"title":50,"path":51,"stem":52},"Authentication","\u002Fdocs\u002Fgetting-started\u002Fauthentication","docs\u002Fgetting-started\u002F2.authentication",{"title":54,"path":55,"stem":56},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002Fgetting-started\u002F3.quickstart",{"title":41,"path":58,"stem":59,"order":60},"\u002Fdocs\u002Fgetting-started\u002F_dir","docs\u002Fgetting-started\u002F_dir",1,{"title":62,"path":63,"stem":64,"children":65,"page":39},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides",[66,70,74,78],{"title":67,"path":68,"stem":69},"Rate Limits & Pricing","\u002Fdocs\u002Fguides\u002Frate-limits","docs\u002Fguides\u002F1.rate-limits",{"title":71,"path":72,"stem":73},"Error Handling","\u002Fdocs\u002Fguides\u002Ferror-handling","docs\u002Fguides\u002F2.error-handling",{"title":75,"path":76,"stem":77},"SDKs & Libraries","\u002Fdocs\u002Fguides\u002Fsdks","docs\u002Fguides\u002F3.sdks",{"title":62,"path":79,"stem":80,"order":81},"\u002Fdocs\u002Fguides\u002F_dir","docs\u002Fguides\u002F_dir",2,{"id":83,"title":15,"body":84,"description":888,"extension":889,"links":890,"meta":891,"navigation":893,"path":16,"seo":894,"stem":17,"__hash__":895},"docs\u002Fdocs\u002Fapi\u002F1.overview.md",{"type":85,"value":86,"toc":869},"minimark",[87,92,96,101,104,121,130,133,140,173,180,184,187,191,266,269,317,320,368,371,402,406,410,413,452,455,575,578,581,641,645,648,699,703,710,756,761,765,768,812,822,826,834,841,845,865],[88,89,91],"h1",{"id":90},"api-v1-overview","API v1 Overview",[93,94,95],"p",{},"The Quote Gallery API v1 is a RESTful API that provides read access to the Quote Gallery catalog. All endpoints return JSON responses and follow consistent conventions for pagination, filtering, and error handling.",[97,98,100],"h2",{"id":99},"base-url","Base URL",[93,102,103],{},"All v1 API requests should be made to:",[105,106,111],"pre",{"className":107,"code":108,"language":109,"meta":110,"style":110},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","https:\u002F\u002Fquotegallery.nl\u002Fapi\u002Fv1\n","bash","",[112,113,114],"code",{"__ignoreMap":110},[115,116,118],"span",{"class":117,"line":60},"line",[115,119,108],{"class":120},"sBMFI",[122,123,125,126,129],"callout",{"type":124},"info","The API is also accessible directly via the Convex deployment URL at ",[112,127,128],{},"https:\u002F\u002Fyour-deployment.convex.site\u002Fapi\u002Fv1",". The Quote Gallery application server proxies requests to Convex under the hood.",[97,131,50],{"id":132},"authentication",[93,134,135,136,139],{},"Every request must include a valid API key in the ",[112,137,138],{},"X-API-Key"," header:",[105,141,143],{"className":107,"code":142,"language":109,"meta":110,"style":110},"curl -H \"X-API-Key: your_api_key_here\" \\\n  https:\u002F\u002Fquotegallery.nl\u002Fapi\u002Fv1\u002Fquotes\n",[112,144,145,168],{"__ignoreMap":110},[115,146,147,150,154,158,161,164],{"class":117,"line":60},[115,148,149],{"class":120},"curl",[115,151,153],{"class":152},"sfazB"," -H",[115,155,157],{"class":156},"sMK4o"," \"",[115,159,160],{"class":152},"X-API-Key: your_api_key_here",[115,162,163],{"class":156},"\"",[115,165,167],{"class":166},"sTEyZ"," \\\n",[115,169,170],{"class":117,"line":81},[115,171,172],{"class":152},"  https:\u002F\u002Fquotegallery.nl\u002Fapi\u002Fv1\u002Fquotes\n",[93,174,175,176,179],{},"See the ",[177,178,50],"a",{"href":51}," guide for details on obtaining and managing API keys.",[97,181,183],{"id":182},"available-endpoints","Available Endpoints",[93,185,186],{},"The v1 API is organized into four resource groups:",[188,189,19],"h3",{"id":190},"quotes",[192,193,194,210],"table",{},[195,196,197],"thead",{},[198,199,200,204,207],"tr",{},[201,202,203],"th",{},"Method",[201,205,206],{},"Endpoint",[201,208,209],{},"Description",[211,212,213,232,249],"tbody",{},[198,214,215,221,229],{},[216,217,218],"td",{},[112,219,220],{},"GET",[216,222,223],{},[177,224,226],{"href":225},"\u002Fdocs\u002Fapi\u002Fquotes#list-quotes",[112,227,228],{},"\u002Fapi\u002Fv1\u002Fquotes",[216,230,231],{},"Retrieve a paginated list of approved quotes",[198,233,234,238,246],{},[216,235,236],{},[112,237,220],{},[216,239,240],{},[177,241,243],{"href":242},"\u002Fdocs\u002Fapi\u002Fquotes#random-quote",[112,244,245],{},"\u002Fapi\u002Fv1\u002Fquotes\u002Frandom",[216,247,248],{},"Get a random quote",[198,250,251,255,263],{},[216,252,253],{},[112,254,220],{},[216,256,257],{},[177,258,260],{"href":259},"\u002Fdocs\u002Fapi\u002Fquotes#get-quote-by-id",[112,261,262],{},"\u002Fapi\u002Fv1\u002Fquotes\u002F:id",[216,264,265],{},"Get a single quote by ID",[188,267,23],{"id":268},"authors",[192,270,271,281],{},[195,272,273],{},[198,274,275,277,279],{},[201,276,203],{},[201,278,206],{},[201,280,209],{},[211,282,283,300],{},[198,284,285,289,297],{},[216,286,287],{},[112,288,220],{},[216,290,291],{},[177,292,294],{"href":293},"\u002Fdocs\u002Fapi\u002Fauthors#list-authors",[112,295,296],{},"\u002Fapi\u002Fv1\u002Fauthors",[216,298,299],{},"Retrieve a paginated list of authors",[198,301,302,306,314],{},[216,303,304],{},[112,305,220],{},[216,307,308],{},[177,309,311],{"href":310},"\u002Fdocs\u002Fapi\u002Fauthors#get-author-by-id",[112,312,313],{},"\u002Fapi\u002Fv1\u002Fauthors\u002F:id",[216,315,316],{},"Get a single author by ID",[188,318,27],{"id":319},"playlists",[192,321,322,332],{},[195,323,324],{},[198,325,326,328,330],{},[201,327,203],{},[201,329,206],{},[201,331,209],{},[211,333,334,351],{},[198,335,336,340,348],{},[216,337,338],{},[112,339,220],{},[216,341,342],{},[177,343,345],{"href":344},"\u002Fdocs\u002Fapi\u002Fplaylists#list-playlists",[112,346,347],{},"\u002Fapi\u002Fv1\u002Fplaylists",[216,349,350],{},"Retrieve a paginated list of public playlists",[198,352,353,357,365],{},[216,354,355],{},[112,356,220],{},[216,358,359],{},[177,360,362],{"href":361},"\u002Fdocs\u002Fapi\u002Fplaylists#get-playlist-by-id",[112,363,364],{},"\u002Fapi\u002Fv1\u002Fplaylists\u002F:id",[216,366,367],{},"Get a single playlist by ID",[188,369,31],{"id":370},"categories",[192,372,373,383],{},[195,374,375],{},[198,376,377,379,381],{},[201,378,203],{},[201,380,206],{},[201,382,209],{},[211,384,385],{},[198,386,387,391,399],{},[216,388,389],{},[112,390,220],{},[216,392,393],{},[177,394,396],{"href":395},"\u002Fdocs\u002Fapi\u002Fcategories#list-categories",[112,397,398],{},"\u002Fapi\u002Fv1\u002Fcategories",[216,400,401],{},"Get all available categories with quote counts",[97,403,405],{"id":404},"common-conventions","Common Conventions",[188,407,409],{"id":408},"response-format","Response Format",[93,411,412],{},"All successful responses follow a consistent structure:",[105,414,418],{"className":415,"code":416,"language":417,"meta":110,"style":110},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"data\": { ... }\n}\n","json",[112,419,420,425,448],{"__ignoreMap":110},[115,421,422],{"class":117,"line":60},[115,423,424],{"class":156},"{\n",[115,426,427,430,434,436,439,442,445],{"class":117,"line":81},[115,428,429],{"class":156},"  \"",[115,431,433],{"class":432},"spNyl","data",[115,435,163],{"class":156},[115,437,438],{"class":156},":",[115,440,441],{"class":156}," {",[115,443,444],{"class":166}," ... ",[115,446,447],{"class":156},"}\n",[115,449,450],{"class":117,"line":38},[115,451,447],{"class":156},[93,453,454],{},"List endpoints include pagination metadata:",[105,456,458],{"className":415,"code":457,"language":417,"meta":110,"style":110},"{\n  \"data\": [ ... ],\n  \"pagination\": {\n    \"total\": 150,\n    \"limit\": 20,\n    \"offset\": 0,\n    \"hasMore\": true\n  }\n}\n",[112,459,460,464,482,496,515,532,549,564,570],{"__ignoreMap":110},[115,461,462],{"class":117,"line":60},[115,463,424],{"class":156},[115,465,466,468,470,472,474,477,479],{"class":117,"line":81},[115,467,429],{"class":156},[115,469,433],{"class":432},[115,471,163],{"class":156},[115,473,438],{"class":156},[115,475,476],{"class":156}," [",[115,478,444],{"class":166},[115,480,481],{"class":156},"],\n",[115,483,484,486,489,491,493],{"class":117,"line":38},[115,485,429],{"class":156},[115,487,488],{"class":432},"pagination",[115,490,163],{"class":156},[115,492,438],{"class":156},[115,494,495],{"class":156}," {\n",[115,497,498,501,504,506,508,512],{"class":117,"line":8},[115,499,500],{"class":156},"    \"",[115,502,503],{"class":120},"total",[115,505,163],{"class":156},[115,507,438],{"class":156},[115,509,511],{"class":510},"sbssI"," 150",[115,513,514],{"class":156},",\n",[115,516,518,520,523,525,527,530],{"class":117,"line":517},5,[115,519,500],{"class":156},[115,521,522],{"class":120},"limit",[115,524,163],{"class":156},[115,526,438],{"class":156},[115,528,529],{"class":510}," 20",[115,531,514],{"class":156},[115,533,535,537,540,542,544,547],{"class":117,"line":534},6,[115,536,500],{"class":156},[115,538,539],{"class":120},"offset",[115,541,163],{"class":156},[115,543,438],{"class":156},[115,545,546],{"class":510}," 0",[115,548,514],{"class":156},[115,550,552,554,557,559,561],{"class":117,"line":551},7,[115,553,500],{"class":156},[115,555,556],{"class":120},"hasMore",[115,558,163],{"class":156},[115,560,438],{"class":156},[115,562,563],{"class":156}," true\n",[115,565,567],{"class":117,"line":566},8,[115,568,569],{"class":156},"  }\n",[115,571,573],{"class":117,"line":572},9,[115,574,447],{"class":156},[188,576,577],{"id":488},"Pagination",[93,579,580],{},"All list endpoints accept the following query parameters for pagination:",[192,582,583,598],{},[195,584,585],{},[198,586,587,590,593,596],{},[201,588,589],{},"Parameter",[201,591,592],{},"Type",[201,594,595],{},"Default",[201,597,209],{},[211,599,600,623],{},[198,601,602,606,611,616],{},[216,603,604],{},[112,605,522],{},[216,607,608],{},[112,609,610],{},"number",[216,612,613],{},[112,614,615],{},"20",[216,617,618,619,622],{},"Number of results per page (max ",[112,620,621],{},"100",")",[198,624,625,629,633,638],{},[216,626,627],{},[112,628,539],{},[216,630,631],{},[112,632,610],{},[216,634,635],{},[112,636,637],{},"0",[216,639,640],{},"Number of results to skip",[188,642,644],{"id":643},"filtering","Filtering",[93,646,647],{},"Most list endpoints support filtering via query parameters. Common filters include:",[192,649,650,660],{},[195,651,652],{},[198,653,654,656,658],{},[201,655,589],{},[201,657,592],{},[201,659,209],{},[211,661,662,686],{},[198,663,664,669,674],{},[216,665,666],{},[112,667,668],{},"language",[216,670,671],{},[112,672,673],{},"string",[216,675,676,677,680,681,680,684,622],{},"Filter by language code (e.g., ",[112,678,679],{},"en",", ",[112,682,683],{},"nl",[112,685,198],{},[198,687,688,692,696],{},[216,689,690],{},[112,691,370],{},[216,693,694],{},[112,695,673],{},[216,697,698],{},"Comma-separated list of category slugs",[188,700,702],{"id":701},"error-responses","Error Responses",[93,704,705,706,709],{},"Errors return a JSON object with an ",[112,707,708],{},"error"," field and an appropriate HTTP status code:",[105,711,713],{"className":415,"code":712,"language":417,"meta":110,"style":110},"{\n  \"error\": \"Invalid API key\",\n  \"status\": 401\n}\n",[112,714,715,719,738,752],{"__ignoreMap":110},[115,716,717],{"class":117,"line":60},[115,718,424],{"class":156},[115,720,721,723,725,727,729,731,734,736],{"class":117,"line":81},[115,722,429],{"class":156},[115,724,708],{"class":432},[115,726,163],{"class":156},[115,728,438],{"class":156},[115,730,157],{"class":156},[115,732,733],{"class":152},"Invalid API key",[115,735,163],{"class":156},[115,737,514],{"class":156},[115,739,740,742,745,747,749],{"class":117,"line":38},[115,741,429],{"class":156},[115,743,744],{"class":432},"status",[115,746,163],{"class":156},[115,748,438],{"class":156},[115,750,751],{"class":510}," 401\n",[115,753,754],{"class":117,"line":8},[115,755,447],{"class":156},[93,757,175,758,760],{},[177,759,71],{"href":72}," guide for a complete list of error codes.",[97,762,764],{"id":763},"rate-limits","Rate Limits",[93,766,767],{},"Your rate limit depends on your API tier:",[192,769,770,780],{},[195,771,772],{},[198,773,774,777],{},[201,775,776],{},"Tier",[201,778,779],{},"Requests \u002F Hour",[211,781,782,792,802],{},[198,783,784,790],{},[216,785,786],{},[787,788,789],"strong",{},"Free",[216,791,621],{},[198,793,794,799],{},[216,795,796],{},[787,797,798],{},"Hobby",[216,800,801],{},"500",[198,803,804,809],{},[216,805,806],{},[787,807,808],{},"Premium",[216,810,811],{},"2,000",[93,813,814,815,818,819,821],{},"When you exceed your rate limit, the API returns a ",[112,816,817],{},"429 Too Many Requests"," response. See ",[177,820,67],{"href":68}," for more details.",[97,823,825],{"id":824},"versioning-policy","Versioning Policy",[122,827,829,830,833],{"type":828},"tip","The v1 API is ",[787,831,832],{},"stable",". We will not introduce breaking changes to v1. New features and non-breaking additions (such as new optional fields in responses) may be added at any time.",[93,835,836,837,840],{},"When breaking changes are necessary, they will be released under a new version (e.g., ",[112,838,839],{},"\u002Fapi\u002Fv2","). Previous versions will continue to be supported with a deprecation timeline communicated well in advance.",[97,842,844],{"id":843},"whats-next","What's Next?",[846,847,848,853,857,861],"card-group",{},[849,850,852],"card",{"icon":851,"title":19,"to":20},"i-lucide-quote","Retrieve, search, and filter quotes.",[849,854,856],{"icon":855,"title":23,"to":24},"i-lucide-user","Browse and search authors.",[849,858,860],{"icon":859,"title":27,"to":28},"i-lucide-list-music","Access curated quote collections.",[849,862,864],{"icon":863,"title":31,"to":32},"i-lucide-tag","Get all available categories.",[866,867,868],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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}",{"title":110,"searchDepth":81,"depth":81,"links":870},[871,872,873,879,885,886,887],{"id":99,"depth":81,"text":100},{"id":132,"depth":81,"text":50},{"id":182,"depth":81,"text":183,"children":874},[875,876,877,878],{"id":190,"depth":38,"text":19},{"id":268,"depth":38,"text":23},{"id":319,"depth":38,"text":27},{"id":370,"depth":38,"text":31},{"id":404,"depth":81,"text":405,"children":880},[881,882,883,884],{"id":408,"depth":38,"text":409},{"id":488,"depth":38,"text":577},{"id":643,"depth":38,"text":644},{"id":701,"depth":38,"text":702},{"id":763,"depth":81,"text":764},{"id":824,"depth":81,"text":825},{"id":843,"depth":81,"text":844},"Overview of the Quote Gallery API v1 — base URL, authentication, and available endpoints.","md",null,{"icon":892},"i-lucide-info",true,{"title":15,"description":888},"9KXy8TAOpOlEI_MHXC8FJuX6gBJNit9Nc0WR-lHGIEo",[897,899],{"title":5,"path":6,"stem":7,"description":898,"order":8,"children":-1},"Stay up to date with the latest changes, improvements, and fixes to the Quote Gallery API.",{"title":19,"path":20,"stem":21,"description":900,"children":-1},"API reference for Quote endpoints — list, search, filter, and retrieve quotes.",1774214573889]