[{"data":1,"prerenderedAt":729},["ShallowReactive",2],{"docs:guide:api-errors-and-limits":3,"docs:nav":547,"seo-settings":708},{"value":4},{"slug":5,"path":6,"title":7,"introduction":8,"body":19,"sections":536,"seo":543,"publishedAt":546,"updatedAt":546},"api-errors-and-limits","/docs/guides/api-errors-and-limits","Errors and limits",{"type":9,"children":10},"root",[11],{"type":12,"tag":13,"props":14,"children":15},"element","p",{},[16],{"type":17,"value":18},"text","How the API tells you something went wrong, what the common messages mean and how to fix them, and the limits to design around.",{"type":20,"value":21,"toc":515},"minimark",[22,27,30,46,78,96,216,230,234,237,244,259,265,272,278,287,293,302,308,311,315,318,322,325,329,347,351,362,366,373,377,380,386,389,393,400,405,427,431,471,475,504,508,511],[23,24,26],"h2",{"id":25},"how-errors-come-back","How errors come back",[13,28,29],{},"There are two kinds of error, and your code should check for both.",[13,31,32,36,37,41,42,45],{},[33,34,35],"strong",{},"The request was refused"," before it ran, because the key is missing or wrong. You get HTTP status ",[38,39,40],"code",{},"401"," and a single ",[38,43,44],{},"error"," message:",[47,48,53],"pre",{"className":49,"code":50,"language":51,"meta":52,"style":52},"language-json shiki shiki-themes github-light github-dark","{ \"error\": \"Access denied - Invalid API key\" }\n","json","",[38,54,55],{"__ignoreMap":52},[56,57,60,64,68,71,75],"span",{"class":58,"line":59},"line",1,[56,61,63],{"class":62},"sVt8B","{ ",[56,65,67],{"class":66},"sj4cs","\"error\"",[56,69,70],{"class":62},": ",[56,72,74],{"class":73},"sZZnC","\"Access denied - Invalid API key\"",[56,76,77],{"class":62}," }\n",[13,79,80,83,84,87,88,91,92,95],{},[33,81,82],{},"The request ran but something in it failed",", such as a misspelled field or a change you're not allowed to make. You get an ",[38,85,86],{},"errors"," list, with a message for each problem and where it happened. Anything that did succeed is still in ",[38,89,90],{},"data",", and the part that failed is ",[38,93,94],{},"null",":",[47,97,99],{"className":49,"code":98,"language":51,"meta":52,"style":52},"{\n  \"errors\": [\n    {\n      \"message\": \"A description of what went wrong\",\n      \"locations\": [{ \"line\": 2, \"column\": 3 }],\n      \"path\": [\"createTodo\"]\n    }\n  ],\n  \"data\": { \"createTodo\": null }\n}\n",[38,100,101,106,115,121,135,166,181,187,193,210],{"__ignoreMap":52},[56,102,103],{"class":58,"line":59},[56,104,105],{"class":62},"{\n",[56,107,109,112],{"class":58,"line":108},2,[56,110,111],{"class":66},"  \"errors\"",[56,113,114],{"class":62},": [\n",[56,116,118],{"class":58,"line":117},3,[56,119,120],{"class":62},"    {\n",[56,122,124,127,129,132],{"class":58,"line":123},4,[56,125,126],{"class":66},"      \"message\"",[56,128,70],{"class":62},[56,130,131],{"class":73},"\"A description of what went wrong\"",[56,133,134],{"class":62},",\n",[56,136,138,141,144,147,149,152,155,158,160,163],{"class":58,"line":137},5,[56,139,140],{"class":66},"      \"locations\"",[56,142,143],{"class":62},": [{ ",[56,145,146],{"class":66},"\"line\"",[56,148,70],{"class":62},[56,150,151],{"class":66},"2",[56,153,154],{"class":62},", ",[56,156,157],{"class":66},"\"column\"",[56,159,70],{"class":62},[56,161,162],{"class":66},"3",[56,164,165],{"class":62}," }],\n",[56,167,169,172,175,178],{"class":58,"line":168},6,[56,170,171],{"class":66},"      \"path\"",[56,173,174],{"class":62},": [",[56,176,177],{"class":73},"\"createTodo\"",[56,179,180],{"class":62},"]\n",[56,182,184],{"class":58,"line":183},7,[56,185,186],{"class":62},"    }\n",[56,188,190],{"class":58,"line":189},8,[56,191,192],{"class":62},"  ],\n",[56,194,196,199,202,204,206,208],{"class":58,"line":195},9,[56,197,198],{"class":66},"  \"data\"",[56,200,201],{"class":62},": { ",[56,203,177],{"class":66},[56,205,70],{"class":62},[56,207,94],{"class":66},[56,209,77],{"class":62},[56,211,213],{"class":58,"line":212},10,[56,214,215],{"class":62},"}\n",[13,217,218,219,222,223,226,227,229],{},"Mistakes in the query itself (a field that doesn't exist, a missing required argument) come back with HTTP status ",[38,220,221],{},"400",". Problems with the data come back with ",[38,224,225],{},"200",", so don't rely on the status code alone: always check for ",[38,228,86],{},".",[23,231,233],{"id":232},"common-errors","Common errors",[13,235,236],{},"Find the message or problem you hit below. Each one says what it means and how to fix it.",[238,239,241],"h3",{"id":240},"access-denied-valid-api-key-access-token-or-session-required",[38,242,243],{},"Access denied - Valid API key, access token, or session required",[13,245,246,247,250,251,254,255,258],{},"The request had no ",[38,248,249],{},"Authorization"," header, or it wasn't in the form ",[38,252,253],{},"Bearer \u003Ckey>",". Send ",[38,256,257],{},"Authorization: Bearer suc_api_..."," with every request.",[238,260,262],{"id":261},"access-denied-invalid-api-key",[38,263,264],{},"Access denied - Invalid API key",[13,266,267,268,271],{},"The key is wrong, has been deleted, belongs to someone who's been deactivated, or was cut short when you copied it. Check the key, or create a new one on the ",[33,269,270],{},"API Keys"," page.",[238,273,275],{"id":274},"access-denied-invalid-or-expired-access-token",[38,276,277],{},"Access denied - Invalid or expired access token",[13,279,280,281,284,285,229],{},"The key was sent without its ",[38,282,283],{},"suc_api_"," start, so it was read as a different kind of token. Send the whole key exactly as you copied it, including ",[38,286,283],{},[238,288,290],{"id":289},"cannot-query-field-on-type",[38,291,292],{},"Cannot query field \"...\" on type \"...\"",[13,294,295,296,301],{},"That field doesn't exist on that object, often a typo or an old field name. Check the name in ",[297,298,300],"a",{"href":299},"/docs/guides/api-data-model","Data model"," or the full schema. Older examples are covered below.",[238,303,305],{"id":304},"field-of-required-type-was-not-provided",[38,306,307],{},"Field \"...\" of required type \"...!\" was not provided",[13,309,310],{},"A required field is missing from what you're creating. Add it. The message names the field.",[238,312,314],{"id":313},"a-change-is-refused-for-permissions","A change is refused for permissions",[13,316,317],{},"The message mentions a security policy. You don't have permission for this change: for example, adding to a team you can't see, or making changes with an Observer's key. Use a key from someone with the right access, or give the key's owner access in the app.",[238,319,321],{"id":320},"an-id-isnt-recognized","An ID isn't recognized",[13,323,324],{},"The message mentions a foreign key. An ID you sent (a team, user or measurable) doesn't exist in this company. Look the ID up again; IDs differ between companies.",[238,326,328],{"id":327},"a-value-isnt-accepted","A value isn't accepted",[13,330,331,332,335,336,339,340,343,344,229],{},"The message mentions a check. A field has a value it doesn't accept, such as a To-do ",[38,333,334],{},"type"," other than ",[38,337,338],{},"team"," or ",[38,341,342],{},"private",". Use one of the values in ",[297,345,300],{"href":346},"/docs/guides/api-data-model#status-values",[238,348,350],{"id":349},"a-scorecard-value-is-refused-for-its-date","A Scorecard value is refused for its date",[13,352,353,354,357,358,229],{},"The message says which day of the week, month or year the date must fall on. A Scorecard value's ",[38,355,356],{},"startDate"," isn't the start of its period. Send the period's first day; see ",[297,359,361],{"href":360},"/docs/guides/api-data-model#scorecards","Scorecards",[238,363,365],{"id":364},"a-scorecard-value-already-exists","A Scorecard value already exists",[13,367,368,369,229],{},"The message mentions a duplicate. That measurable already has a value for that period (possibly a deleted one). Update the existing value instead; see ",[297,370,372],{"href":371},"/docs/guides/api-recipes#send-a-scorecard-number-every-week","the weekly Scorecard recipe",[238,374,376],{"id":375},"the-request-times-out","The request times out",[13,378,379],{},"The message mentions a timeout. The request took longer than 30 seconds. Ask for fewer items per request and page through them, or ask for fewer related lists at once.",[238,381,383],{"id":382},"changes-are-not-allowed-on-demo-sites",[38,384,385],{},"Changes are not allowed on demo sites.",[13,387,388],{},"The key belongs to a demo company, where changes are switched off. Use a key from a real or test company.",[23,390,392],{"id":391},"coming-from-older-examples","Coming from older examples",[13,394,395,396,399],{},"Some older examples of the Success.co API used longer names for related items. Those names no longer exist, and using them gives a ",[38,397,398],{},"Cannot query field"," error. The current names are shorter:",[401,402],"docs-table",{":columns":403,":rows":404},"[\"Old name\",\"Use instead\"]","[[\"`teamByTeamId`\",\"`team`\"],[\"`userByUserId`\",\"`user`\"],[\"`todoStatusByTodoStatusId`\",\"`todoStatus`\"],[\"`usersOnTeamsByUserId`, `usersOnTeamsByTeamId`\",\"`usersOnTeams`\"],[\"`meetingAgendaByMeetingAgendaId`\",\"`meetingAgenda`\"],[\"`meetingAgendaSectionsByMeetingAgendaId`\",\"`meetingAgendaSections`\"]]",[13,406,407,408,154,411,414,415,418,419,422,423,229],{},"The same goes for mutations: there's no ",[38,409,410],{},"deleteUser",[38,412,413],{},"deleteTodo"," and so on. Delete by setting ",[38,416,417],{},"stateId"," to ",[38,420,421],{},"DELETED",", as in ",[297,424,426],{"href":425},"/docs/guides/api-creating-and-updating-data#delete-an-item","Creating and updating data",[23,428,430],{"id":429},"limits","Limits",[432,433,434,445,451,465],"ul",{},[435,436,437,440,441,229],"li",{},[33,438,439],{},"30 seconds per request."," A request that runs longer is stopped. Big exports should page through results a few hundred at a time; see ",[297,442,444],{"href":443},"/docs/guides/api-reading-data#page-through-long-lists","Reading data",[435,446,447,450],{},[33,448,449],{},"50 MB per request body",", far more than any normal request needs.",[435,452,453,456,457,460,461,464],{},[33,454,455],{},"Rate limits."," Requests are rate limited. Keep to a sensible pace: a few requests a second at most, and one at a time for bulk jobs. If you get HTTP status ",[38,458,459],{},"429"," (",[38,462,463],{},"Too many requests","), wait and retry with a growing delay.",[435,466,467,470],{},[33,468,469],{},"One company per key."," A key works in the company it was created in. To work with several companies, create a key in each.",[23,472,474],{"id":473},"how-keys-behave","How keys behave",[432,476,477,483,489,495],{},[435,478,479,482],{},[33,480,481],{},"A key acts as you."," It sees and changes what you can in the app, and changes it makes are recorded as yours.",[435,484,485,488],{},[33,486,487],{},"A key stops working when its owner is deactivated."," If the person who created it is made inactive or removed from the company, or the company's account is closed, requests with their key are refused. Before deactivating someone, check whether any of your integrations use their key.",[435,490,491,494],{},[33,492,493],{},"Changes apply straight away."," If you delete a key, your role changes or you're deactivated, the key's access changes with it immediately.",[435,496,497,500,501,503],{},[33,498,499],{},"Keys don't expire."," Delete keys you no longer use, and replace any key that might have been exposed. The ",[33,502,270],{}," page shows when each key was last used.",[23,505,507],{"id":506},"getting-help","Getting help",[13,509,510],{},"If something isn't working and this guide doesn't explain it, email support@success.co with the query you sent and the full error response (leave your API key out).",[512,513,514],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .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);}",{"title":52,"searchDepth":108,"depth":108,"links":516},[517,518,532,533,534,535],{"id":25,"depth":108,"text":26},{"id":232,"depth":108,"text":233,"children":519},[520,521,522,523,524,525,526,527,528,529,530,531],{"id":240,"depth":117,"text":243},{"id":261,"depth":117,"text":264},{"id":274,"depth":117,"text":277},{"id":289,"depth":117,"text":292},{"id":304,"depth":117,"text":307},{"id":313,"depth":117,"text":314},{"id":320,"depth":117,"text":321},{"id":327,"depth":117,"text":328},{"id":349,"depth":117,"text":350},{"id":364,"depth":117,"text":365},{"id":375,"depth":117,"text":376},{"id":382,"depth":117,"text":385},{"id":391,"depth":108,"text":392},{"id":429,"depth":108,"text":430},{"id":473,"depth":108,"text":474},{"id":506,"depth":108,"text":507},[537,538,539,540,541,542],{"id":25,"title":26},{"id":232,"title":233},{"id":391,"title":392},{"id":429,"title":430},{"id":473,"title":474},{"id":506,"title":507},{"title":544,"description":545},"Success.co API errors and limits — Success.co","What Success.co API error messages mean and how to fix them, plus request time limits, rate limits and how API keys behave.","2026-11-12T13:59:30+00:00",{"value":548},[549,567,621,642,648,657,693],{"title":550,"links":551},"Getting Started",[552,555,558,561,564],{"title":553,"href":554},"Getting Started with Success.co","/docs/guides/getting-started",{"title":556,"href":557},"Join your team","/docs/guides/join-your-team",{"title":559,"href":560},"EOS® Implementers  Guide","/docs/guides/implementers",{"title":562,"href":563},"Affiliate Program Guide","/docs/guides/affiliate-program",{"title":565,"href":566},"Import Data","/docs/guides/import-data",{"title":568,"links":569},"Platform",[570,573,576,579,582,585,588,591,594,597,600,603,606,609,612,615,618],{"title":571,"href":572},"Vision/Traction Organizer (V/TO®)  Guide","/docs/guides/vision-traction-organizer-vto",{"title":574,"href":575},"Accountability Chart Guide","/docs/guides/accountability-chart",{"title":577,"href":578},"Dashboard Guide to Track Rocks, To-Dos & Issues","/docs/guides/dashboard",{"title":580,"href":581},"L10™ Meetings","/docs/guides/l10-meetings",{"title":583,"href":584},"Rocks","/docs/guides/rocks",{"title":586,"href":587},"Scorecard™","/docs/guides/scorecard",{"title":589,"href":590},"EOS® Meeting Agendas Guide","/docs/guides/agendas",{"title":592,"href":593},"Issues","/docs/guides/issues",{"title":595,"href":596},"Headlines","/docs/guides/headlines",{"title":598,"href":599},"How To Use To-Dos in Success.co?","/docs/guides/to-dos",{"title":601,"href":602},"People Analyzer","/docs/guides/people-analyzer",{"title":604,"href":605},"Organizational Checkup™","/docs/guides/organizational-checkup",{"title":607,"href":608},"S.W.O.T","/docs/guides/swot-analysis",{"title":610,"href":611},"Process","/docs/guides/process",{"title":613,"href":614},"Implementer Hub","/docs/guides/implementer-hub",{"title":616,"href":617},"Insights","/docs/guides/insights",{"title":619,"href":620},"Mastery","/docs/guides/mastery",{"title":622,"links":623},"Advanced",[624,627,630,633,636,639],{"title":625,"href":626},"Filtering","/docs/guides/filtering",{"title":628,"href":629},"Quarter Dates","/docs/guides/quarter-dates",{"title":631,"href":632},"Keyboard Shortcuts Guide","/docs/guides/keyboard-shortcuts",{"title":634,"href":635},"Related Items","/docs/guides/related-items",{"title":637,"href":638},"Notifications","/docs/guides/notifications",{"title":640,"href":641},"Import Templates","/docs/guides/import-templates",{"title":643,"links":644},"Billing",[645],{"title":646,"href":647},"Billing Guide – Set Up Payments, Update Details, and Access Invoices","/docs/guides/billing",{"title":649,"links":650},"Apps",[651,654],{"title":652,"href":653},"Desktop App Guide to Boost Productivity & Track Tasks","/docs/guides/desktop-app",{"title":655,"href":656},"Mobile App","/docs/guides/mobile-app",{"title":658,"links":659},"Integrations",[660,663,666,669,672,675,678,681,684,687,690],{"title":661,"href":662},"Success.co Integrations","/docs/guides/successco-integrations",{"title":664,"href":665},"Google Calendar Integration Guide","/docs/guides/google-calendar",{"title":667,"href":668},"Microsoft Calendar Integration Guide","/docs/guides/microsoft-calendar",{"title":670,"href":671},"Microsoft Teams","/docs/guides/microsoft-teams",{"title":673,"href":674},"Slack","/docs/guides/slack",{"title":676,"href":677},"Asana Integration Guide","/docs/guides/asana",{"title":679,"href":680},"ClickUp Integration Guide","/docs/guides/clickup",{"title":682,"href":683},"Monday.com Integration Guide","/docs/guides/monday",{"title":685,"href":686},"Teamwork Integration Guide","/docs/guides/teamwork",{"title":688,"href":689},"Success.co AI Connector (MCP)","/docs/guides/ai-mcp-connector",{"title":691,"href":692},"Zapier","/docs/guides/zapier",{"title":694,"links":695},"API",[696,699,701,703,704,707],{"title":697,"href":698},"Getting started with the API","/docs/guides/api-getting-started",{"title":444,"href":700},"/docs/guides/api-reading-data",{"title":426,"href":702},"/docs/guides/api-creating-and-updating-data",{"title":300,"href":299},{"title":705,"href":706},"Recipes","/docs/guides/api-recipes",{"title":7,"href":6},{"value":709},{"id":710,"extension":711,"meta":712,"og_image":713,"og_locale":714,"og_title_fallback":715,"site_url":716,"stem":717,"title_suffix":718,"__hash__":719,"ogImageAsset":720},"seoSettings/settings/seo.yml","yml",{},"df2824aa25f11988810a1b0f3c08f0f2","en_GB","The EOS App","https://www.success.co","settings/seo"," — Success.co","nnRZDXC71vobecumYGFChQJ7a9XRrFJq7bfBBCWo6Bk",{"id":713,"publicId":721,"version":722,"format":723,"resourceType":724,"width":725,"height":726,"alt":727,"name":728},"site/success-opengraph-image",1791366213,"png","image",1200,630,"Success.co","Success OpenGraph Image",1794503194679]