[{"data":1,"prerenderedAt":1776},["ShallowReactive",2],{"docs:guide:api-reading-data":3,"docs:nav":1592,"seo-settings":1755},{"value":4},{"slug":5,"path":6,"title":7,"introduction":8,"body":19,"sections":1579,"seo":1588,"publishedAt":1591,"updatedAt":1591},"api-reading-data","/docs/guides/api-reading-data","Reading data",{"type":9,"children":10},"root",[11],{"type":12,"tag":13,"props":14,"children":15},"element","p",{},[16],{"type":17,"value":18},"text","How to ask the API for exactly the items you want. Choose fields, follow related items, filter, sort and page through long lists. Every list in the API works the same way, so the examples here use To-dos but apply to Rocks, Issues, Headlines and the rest.",{"type":20,"value":21,"toc":1569},"minimark",[22,27,30,106,115,119,122,224,227,331,338,342,353,432,436,439,526,529,586,589,595,705,708,713,731,745,876,892,905,938,942,955,1055,1061,1065,1068,1081,1164,1186,1273,1276,1419,1432,1436,1445,1556,1565],[23,24,26],"h2",{"id":25},"choose-your-fields","Choose your fields",[13,28,29],{},"In GraphQL you list the fields you want, and you get exactly those back. This asks for every To-do with its name and due date:",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-graphql shiki shiki-themes github-light github-dark","query {\n  todos {\n    nodes {\n      id\n      name\n      dueDate\n    }\n  }\n}\n","graphql","",[38,39,40,53,62,70,76,82,88,94,100],"code",{"__ignoreMap":36},[41,42,45,49],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"szBVR","query",[41,50,52],{"class":51},"sVt8B"," {\n",[41,54,56,60],{"class":43,"line":55},2,[41,57,59],{"class":58},"s4XuR","  todos",[41,61,52],{"class":51},[41,63,65,68],{"class":43,"line":64},3,[41,66,67],{"class":58},"    nodes",[41,69,52],{"class":51},[41,71,73],{"class":43,"line":72},4,[41,74,75],{"class":58},"      id\n",[41,77,79],{"class":43,"line":78},5,[41,80,81],{"class":58},"      name\n",[41,83,85],{"class":43,"line":84},6,[41,86,87],{"class":58},"      dueDate\n",[41,89,91],{"class":43,"line":90},7,[41,92,93],{"class":51},"    }\n",[41,95,97],{"class":43,"line":96},8,[41,98,99],{"class":51},"  }\n",[41,101,103],{"class":43,"line":102},9,[41,104,105],{"class":51},"}\n",[13,107,108,109,114],{},"Ask for less and requests get faster. Ask for more by adding field names; the ",[110,111,113],"a",{"href":112},"/docs/guides/api-data-model","Data model"," guide lists the useful ones for each object.",[23,116,118],{"id":117},"follow-related-items","Follow related items",[13,120,121],{},"Related items are fields too, so one request can bring back a To-do with its team, its owner and its status name:",[31,123,125],{"className":33,"code":124,"language":35,"meta":36,"style":36},"query {\n  todos(first: 20) {\n    nodes {\n      name\n      dueDate\n      team { name }\n      user { firstName lastName email }\n      todoStatus { name }\n    }\n  }\n}\n",[38,126,127,133,153,159,163,167,181,199,210,214,219],{"__ignoreMap":36},[41,128,129,131],{"class":43,"line":44},[41,130,48],{"class":47},[41,132,52],{"class":51},[41,134,135,137,140,143,146,150],{"class":43,"line":55},[41,136,59],{"class":58},[41,138,139],{"class":51},"(",[41,141,142],{"class":58},"first",[41,144,145],{"class":51},": ",[41,147,149],{"class":148},"sj4cs","20",[41,151,152],{"class":51},") {\n",[41,154,155,157],{"class":43,"line":64},[41,156,67],{"class":58},[41,158,52],{"class":51},[41,160,161],{"class":43,"line":72},[41,162,81],{"class":58},[41,164,165],{"class":43,"line":78},[41,166,87],{"class":58},[41,168,169,172,175,178],{"class":43,"line":84},[41,170,171],{"class":58},"      team",[41,173,174],{"class":51}," { ",[41,176,177],{"class":58},"name",[41,179,180],{"class":51}," }\n",[41,182,183,186,188,191,194,197],{"class":43,"line":90},[41,184,185],{"class":58},"      user",[41,187,174],{"class":51},[41,189,190],{"class":58},"firstName",[41,192,193],{"class":58}," lastName",[41,195,196],{"class":58}," email",[41,198,180],{"class":51},[41,200,201,204,206,208],{"class":43,"line":96},[41,202,203],{"class":58},"      todoStatus",[41,205,174],{"class":51},[41,207,177],{"class":58},[41,209,180],{"class":51},[41,211,212],{"class":43,"line":102},[41,213,93],{"class":51},[41,215,217],{"class":43,"line":216},10,[41,218,99],{"class":51},[41,220,222],{"class":43,"line":221},11,[41,223,105],{"class":51},[13,225,226],{},"It works in the other direction as well. Start from a team and list its people:",[31,228,230],{"className":33,"code":229,"language":35,"meta":36,"style":36},"query {\n  teams {\n    nodes {\n      name\n      usersOnTeams(filter: { stateId: { equalTo: \"ACTIVE\" } }) {\n        nodes {\n          user { firstName lastName jobTitle }\n        }\n      }\n    }\n  }\n}\n",[38,231,232,238,245,251,255,285,292,308,313,318,322,326],{"__ignoreMap":36},[41,233,234,236],{"class":43,"line":44},[41,235,48],{"class":47},[41,237,52],{"class":51},[41,239,240,243],{"class":43,"line":55},[41,241,242],{"class":58},"  teams",[41,244,52],{"class":51},[41,246,247,249],{"class":43,"line":64},[41,248,67],{"class":58},[41,250,52],{"class":51},[41,252,253],{"class":43,"line":72},[41,254,81],{"class":58},[41,256,257,260,262,265,268,272,274,277,279,282],{"class":43,"line":78},[41,258,259],{"class":58},"      usersOnTeams",[41,261,139],{"class":51},[41,263,264],{"class":58},"filter",[41,266,267],{"class":51},": { ",[41,269,271],{"class":270},"sZZnC","stateId",[41,273,267],{"class":51},[41,275,276],{"class":270},"equalTo",[41,278,145],{"class":51},[41,280,281],{"class":270},"\"ACTIVE\"",[41,283,284],{"class":51}," } }) {\n",[41,286,287,290],{"class":43,"line":84},[41,288,289],{"class":58},"        nodes",[41,291,52],{"class":51},[41,293,294,297,299,301,303,306],{"class":43,"line":90},[41,295,296],{"class":58},"          user",[41,298,174],{"class":51},[41,300,190],{"class":58},[41,302,193],{"class":58},[41,304,305],{"class":58}," jobTitle",[41,307,180],{"class":51},[41,309,310],{"class":43,"line":96},[41,311,312],{"class":51},"        }\n",[41,314,315],{"class":43,"line":102},[41,316,317],{"class":51},"      }\n",[41,319,320],{"class":43,"line":216},[41,321,93],{"class":51},[41,323,324],{"class":43,"line":221},[41,325,99],{"class":51},[41,327,329],{"class":43,"line":328},12,[41,330,105],{"class":51},[13,332,333,334,337],{},"Lists inside an item (like ",[38,335,336],{},"usersOnTeams"," above) take the same filtering, sorting and paging options as top-level lists.",[23,339,341],{"id":340},"get-one-item","Get one item",[13,343,344,345,348,349,352],{},"Singular names take an ",[38,346,347],{},"id"," and return that item, or ",[38,350,351],{},"null"," if it doesn't exist or you can't see it:",[31,354,356],{"className":33,"code":355,"language":35,"meta":36,"style":36},"query {\n  rock(id: \"8e5b2c1a-4d3f-4b6a-9c7e-1f2a3b4c5d6e\") {\n    name\n    dueDate\n    rockStatus { name }\n    milestones { nodes { name dueDate milestoneStatusId } }\n  }\n}\n",[38,357,358,364,380,385,390,401,424,428],{"__ignoreMap":36},[41,359,360,362],{"class":43,"line":44},[41,361,48],{"class":47},[41,363,52],{"class":51},[41,365,366,369,371,373,375,378],{"class":43,"line":55},[41,367,368],{"class":58},"  rock",[41,370,139],{"class":51},[41,372,347],{"class":58},[41,374,145],{"class":51},[41,376,377],{"class":270},"\"8e5b2c1a-4d3f-4b6a-9c7e-1f2a3b4c5d6e\"",[41,379,152],{"class":51},[41,381,382],{"class":43,"line":64},[41,383,384],{"class":58},"    name\n",[41,386,387],{"class":43,"line":72},[41,388,389],{"class":58},"    dueDate\n",[41,391,392,395,397,399],{"class":43,"line":78},[41,393,394],{"class":58},"    rockStatus",[41,396,174],{"class":51},[41,398,177],{"class":58},[41,400,180],{"class":51},[41,402,403,406,408,411,413,415,418,421],{"class":43,"line":84},[41,404,405],{"class":58},"    milestones",[41,407,174],{"class":51},[41,409,410],{"class":58},"nodes",[41,412,174],{"class":51},[41,414,177],{"class":58},[41,416,417],{"class":58}," dueDate",[41,419,420],{"class":58}," milestoneStatusId",[41,422,423],{"class":51}," } }\n",[41,425,426],{"class":43,"line":90},[41,427,99],{"class":51},[41,429,430],{"class":43,"line":96},[41,431,105],{"class":51},[23,433,435],{"id":434},"use-variables","Use variables",[13,437,438],{},"Rather than pasting values into the query text, pass them as variables. It avoids escaping problems and lets you reuse the same query:",[31,440,442],{"className":33,"code":441,"language":35,"meta":36,"style":36},"query TodosForUser($userId: UUID!) {\n  todos(filter: { userId: { equalTo: $userId }, stateId: { equalTo: \"ACTIVE\" } }) {\n    nodes { id name dueDate }\n  }\n}\n",[38,443,444,467,503,518,522],{"__ignoreMap":36},[41,445,446,448,452,454,457,459,462,465],{"class":43,"line":44},[41,447,48],{"class":47},[41,449,451],{"class":450},"sScJk"," TodosForUser",[41,453,139],{"class":51},[41,455,456],{"class":58},"$userId",[41,458,145],{"class":51},[41,460,461],{"class":148},"UUID",[41,463,464],{"class":47},"!",[41,466,152],{"class":51},[41,468,469,471,473,475,477,480,482,484,486,488,491,493,495,497,499,501],{"class":43,"line":55},[41,470,59],{"class":58},[41,472,139],{"class":51},[41,474,264],{"class":58},[41,476,267],{"class":51},[41,478,479],{"class":270},"userId",[41,481,267],{"class":51},[41,483,276],{"class":270},[41,485,145],{"class":51},[41,487,456],{"class":58},[41,489,490],{"class":51}," }, ",[41,492,271],{"class":270},[41,494,267],{"class":51},[41,496,276],{"class":270},[41,498,145],{"class":51},[41,500,281],{"class":270},[41,502,284],{"class":51},[41,504,505,507,509,511,514,516],{"class":43,"line":64},[41,506,67],{"class":58},[41,508,174],{"class":51},[41,510,347],{"class":58},[41,512,513],{"class":58}," name",[41,515,417],{"class":58},[41,517,180],{"class":51},[41,519,520],{"class":43,"line":72},[41,521,99],{"class":51},[41,523,524],{"class":43,"line":78},[41,525,105],{"class":51},[13,527,528],{},"Send the variables next to the query in the request body:",[31,530,534],{"className":531,"code":532,"language":533,"meta":36,"style":36},"language-json shiki shiki-themes github-light github-dark","{\n  \"query\": \"query TodosForUser($userId: UUID!) { todos(filter: { userId: { equalTo: $userId }, stateId: { equalTo: \\\"ACTIVE\\\" } }) { nodes { id name dueDate } } }\",\n  \"variables\": { \"userId\": \"5f2d8c4b-1a3e-4c7d-b9f0-2e6a7d8c9b10\" }\n}\n","json",[38,535,536,541,565,582],{"__ignoreMap":36},[41,537,538],{"class":43,"line":44},[41,539,540],{"class":51},"{\n",[41,542,543,546,548,551,554,557,559,562],{"class":43,"line":55},[41,544,545],{"class":148},"  \"query\"",[41,547,145],{"class":51},[41,549,550],{"class":270},"\"query TodosForUser($userId: UUID!) { todos(filter: { userId: { equalTo: $userId }, stateId: { equalTo: ",[41,552,553],{"class":148},"\\\"",[41,555,556],{"class":270},"ACTIVE",[41,558,553],{"class":148},[41,560,561],{"class":270}," } }) { nodes { id name dueDate } } }\"",[41,563,564],{"class":51},",\n",[41,566,567,570,572,575,577,580],{"class":43,"line":64},[41,568,569],{"class":148},"  \"variables\"",[41,571,267],{"class":51},[41,573,574],{"class":148},"\"userId\"",[41,576,145],{"class":51},[41,578,579],{"class":270},"\"5f2d8c4b-1a3e-4c7d-b9f0-2e6a7d8c9b10\"",[41,581,180],{"class":51},[41,583,584],{"class":43,"line":72},[41,585,105],{"class":51},[23,587,588],{"id":264},"Filter",[13,590,591,592,594],{},"Pass ",[38,593,264],{}," to keep only the items that match. Each field takes one or more operators, and everything you list must match:",[31,596,598],{"className":33,"code":597,"language":35,"meta":36,"style":36},"query {\n  todos(\n    filter: {\n      stateId: { equalTo: \"ACTIVE\" }\n      todoStatusId: { equalTo: \"TODO\" }\n      dueDate: { lessThan: \"2026-12-01\" }\n    }\n  ) {\n    nodes { name dueDate team { name } }\n  }\n}\n",[38,599,600,606,613,621,636,652,669,673,678,697,701],{"__ignoreMap":36},[41,601,602,604],{"class":43,"line":44},[41,603,48],{"class":47},[41,605,52],{"class":51},[41,607,608,610],{"class":43,"line":55},[41,609,59],{"class":58},[41,611,612],{"class":51},"(\n",[41,614,615,618],{"class":43,"line":64},[41,616,617],{"class":58},"    filter",[41,619,620],{"class":51},": {\n",[41,622,623,626,628,630,632,634],{"class":43,"line":72},[41,624,625],{"class":270},"      stateId",[41,627,267],{"class":51},[41,629,276],{"class":270},[41,631,145],{"class":51},[41,633,281],{"class":270},[41,635,180],{"class":51},[41,637,638,641,643,645,647,650],{"class":43,"line":78},[41,639,640],{"class":270},"      todoStatusId",[41,642,267],{"class":51},[41,644,276],{"class":270},[41,646,145],{"class":51},[41,648,649],{"class":270},"\"TODO\"",[41,651,180],{"class":51},[41,653,654,657,659,662,664,667],{"class":43,"line":84},[41,655,656],{"class":270},"      dueDate",[41,658,267],{"class":51},[41,660,661],{"class":270},"lessThan",[41,663,145],{"class":51},[41,665,666],{"class":270},"\"2026-12-01\"",[41,668,180],{"class":51},[41,670,671],{"class":43,"line":90},[41,672,93],{"class":51},[41,674,675],{"class":43,"line":96},[41,676,677],{"class":51},"  ) {\n",[41,679,680,682,684,686,688,691,693,695],{"class":43,"line":102},[41,681,67],{"class":58},[41,683,174],{"class":51},[41,685,177],{"class":58},[41,687,417],{"class":58},[41,689,690],{"class":58}," team",[41,692,174],{"class":51},[41,694,177],{"class":58},[41,696,423],{"class":51},[41,698,699],{"class":43,"line":216},[41,700,99],{"class":51},[41,702,703],{"class":43,"line":221},[41,704,105],{"class":51},[13,706,707],{},"The operators you'll use most:",[709,710],"docs-table",{":columns":711,":rows":712},"[\"Operator\",\"Matches when the field\",\"Example\"]","[[\"`equalTo`\",\"is exactly the value\",\"`stateId: { equalTo: \\\"ACTIVE\\\" }`\"],[\"`notEqualTo`\",\"is anything but the value\",\"`todoStatusId: { notEqualTo: \\\"COMPLETE\\\" }`\"],[\"`in`\",\"is one of a list\",\"`rockStatusId: { in: [\\\"ONTRACK\\\", \\\"OFFTRACK\\\"] }`\"],[\"`notIn`\",\"is none of a list\",\"`type: { notIn: [\\\"private\\\"] }`\"],[\"`isNull`\",\"is empty (`true`) or set (`false`)\",\"`dueDate: { isNull: false }`\"],[\"`lessThan`, `lessThanOrEqualTo`\",\"is before or below the value\",\"`dueDate: { lessThan: \\\"2026-12-01\\\" }`\"],[\"`greaterThan`, `greaterThanOrEqualTo`\",\"is after or above the value\",\"`updatedAt: { greaterThan: \\\"2026-11-01T00:00:00Z\\\" }`\"],[\"`includesInsensitive`\",\"contains the text\",\"ignoring case\",\"`name: { includesInsensitive: \\\"invoice\\\" }`\"],[\"`startsWithInsensitive`\",\"starts with the text\",\"ignoring case\",\"`email: { startsWithInsensitive: \\\"sam\\\" }`\"]]",[13,714,715,716,719,720,719,723,726,727,730],{},"Case-sensitive versions (",[38,717,718],{},"includes",", ",[38,721,722],{},"startsWith",[38,724,725],{},"endsWith",") and their opposites (",[38,728,729],{},"notIncludes"," and so on) work too.",[13,732,733,734,719,737,740,741,744],{},"To combine conditions in other ways, use ",[38,735,736],{},"or",[38,738,739],{},"and"," and ",[38,742,743],{},"not",". This finds open To-dos that are either overdue or have no due date:",[31,746,748],{"className":33,"code":747,"language":35,"meta":36,"style":36},"query {\n  todos(\n    filter: {\n      stateId: { equalTo: \"ACTIVE\" }\n      todoStatusId: { equalTo: \"TODO\" }\n      or: [\n        { dueDate: { lessThan: \"2026-11-12\" } }\n        { dueDate: { isNull: true } }\n      ]\n    }\n  ) {\n    nodes { name dueDate }\n  }\n}\n",[38,749,750,756,762,768,782,796,804,823,841,846,850,854,866,871],{"__ignoreMap":36},[41,751,752,754],{"class":43,"line":44},[41,753,48],{"class":47},[41,755,52],{"class":51},[41,757,758,760],{"class":43,"line":55},[41,759,59],{"class":58},[41,761,612],{"class":51},[41,763,764,766],{"class":43,"line":64},[41,765,617],{"class":58},[41,767,620],{"class":51},[41,769,770,772,774,776,778,780],{"class":43,"line":72},[41,771,625],{"class":270},[41,773,267],{"class":51},[41,775,276],{"class":270},[41,777,145],{"class":51},[41,779,281],{"class":270},[41,781,180],{"class":51},[41,783,784,786,788,790,792,794],{"class":43,"line":78},[41,785,640],{"class":270},[41,787,267],{"class":51},[41,789,276],{"class":270},[41,791,145],{"class":51},[41,793,649],{"class":270},[41,795,180],{"class":51},[41,797,798,801],{"class":43,"line":84},[41,799,800],{"class":270},"      or",[41,802,803],{"class":51},": [\n",[41,805,806,809,812,814,816,818,821],{"class":43,"line":90},[41,807,808],{"class":51},"        { ",[41,810,811],{"class":270},"dueDate",[41,813,267],{"class":51},[41,815,661],{"class":270},[41,817,145],{"class":51},[41,819,820],{"class":270},"\"2026-11-12\"",[41,822,423],{"class":51},[41,824,825,827,829,831,834,836,839],{"class":43,"line":96},[41,826,808],{"class":51},[41,828,811],{"class":270},[41,830,267],{"class":51},[41,832,833],{"class":270},"isNull",[41,835,145],{"class":51},[41,837,838],{"class":148},"true",[41,840,423],{"class":51},[41,842,843],{"class":43,"line":102},[41,844,845],{"class":51},"      ]\n",[41,847,848],{"class":43,"line":216},[41,849,93],{"class":51},[41,851,852],{"class":43,"line":221},[41,853,677],{"class":51},[41,855,856,858,860,862,864],{"class":43,"line":328},[41,857,67],{"class":58},[41,859,174],{"class":51},[41,861,177],{"class":58},[41,863,417],{"class":58},[41,865,180],{"class":51},[41,867,869],{"class":43,"line":868},13,[41,870,99],{"class":51},[41,872,874],{"class":43,"line":873},14,[41,875,105],{"class":51},[13,877,878,879,719,882,719,884,887,888,891],{},"Filter on the item's own fields, including the ID fields that point at related items (",[38,880,881],{},"teamId",[38,883,479],{},[38,885,886],{},"meetingId","). To find Rocks for one team, filter on its ID; ",[110,889,113],{"href":890},"/docs/guides/api-data-model#rocks-and-milestones"," shows how.",[13,893,894,895,898,899,145,901,904],{},"For simple exact matches there's also ",[38,896,897],{},"condition",", a shorter form of ",[38,900,276],{},[38,902,903],{},"todos(condition: { teamId: \"...\", stateId: \"ACTIVE\" })",".",[906,907,908],"docs-callout",{},[13,909,910,914,915,918,919,922,923,926,927,930,931,933,934,937],{},[911,912,913],"strong",{},"Always filter out deleted items."," Deleting something in Success.co marks it with ",[38,916,917],{},"stateId: \"DELETED\""," rather than removing it, so lists include deleted items unless you add ",[38,920,921],{},"stateId: { equalTo: \"ACTIVE\" }",". Rocks also have ",[38,924,925],{},"isArchived",", and Scorecard measurables have ",[38,928,929],{},"dataFieldStatusId"," (",[38,932,556],{}," or ",[38,935,936],{},"ARCHIVED","), for items people have archived rather than deleted.",[23,939,941],{"id":940},"sort","Sort",[13,943,944,947,948,933,951,954],{},[38,945,946],{},"orderBy"," takes one or more sort orders, named after the field in capitals with ",[38,949,950],{},"_ASC",[38,952,953],{},"_DESC",":",[31,956,958],{"className":33,"code":957,"language":35,"meta":36,"style":36},"query {\n  issues(\n    filter: { stateId: { equalTo: \"ACTIVE\" }, issueStatusId: { equalTo: \"TODO\" } }\n    orderBy: [PRIORITY_NO_ASC, CREATED_AT_DESC]\n  ) {\n    nodes { number name priorityNo createdAt }\n  }\n}\n",[38,959,960,966,973,1004,1024,1028,1047,1051],{"__ignoreMap":36},[41,961,962,964],{"class":43,"line":44},[41,963,48],{"class":47},[41,965,52],{"class":51},[41,967,968,971],{"class":43,"line":55},[41,969,970],{"class":58},"  issues",[41,972,612],{"class":51},[41,974,975,977,979,981,983,985,987,989,991,994,996,998,1000,1002],{"class":43,"line":64},[41,976,617],{"class":58},[41,978,267],{"class":51},[41,980,271],{"class":270},[41,982,267],{"class":51},[41,984,276],{"class":270},[41,986,145],{"class":51},[41,988,281],{"class":270},[41,990,490],{"class":51},[41,992,993],{"class":270},"issueStatusId",[41,995,267],{"class":51},[41,997,276],{"class":270},[41,999,145],{"class":51},[41,1001,649],{"class":270},[41,1003,423],{"class":51},[41,1005,1006,1009,1012,1015,1018,1021],{"class":43,"line":72},[41,1007,1008],{"class":58},"    orderBy",[41,1010,1011],{"class":51},": [",[41,1013,1014],{"class":148},"PRIORITY_NO_ASC",[41,1016,1017],{"class":51},",",[41,1019,1020],{"class":148}," CREATED_AT_DESC",[41,1022,1023],{"class":51},"]\n",[41,1025,1026],{"class":43,"line":78},[41,1027,677],{"class":51},[41,1029,1030,1032,1034,1037,1039,1042,1045],{"class":43,"line":84},[41,1031,67],{"class":58},[41,1033,174],{"class":51},[41,1035,1036],{"class":58},"number",[41,1038,513],{"class":58},[41,1040,1041],{"class":58}," priorityNo",[41,1043,1044],{"class":58}," createdAt",[41,1046,180],{"class":51},[41,1048,1049],{"class":43,"line":90},[41,1050,99],{"class":51},[41,1052,1053],{"class":43,"line":96},[41,1054,105],{"class":51},[13,1056,1057,1058,1060],{},"Without ",[38,1059,946],{},", items come back in ID order, which isn't meaningful. Set it whenever order matters, and always when you page.",[23,1062,1064],{"id":1063},"page-through-long-lists","Page through long lists",[13,1066,1067],{},"Lists return everything that matches unless you ask for less. For anything that could grow (To-dos, Issues, Scorecard values), fetch it in pages of a few hundred.",[13,1069,1070,1071,740,1073,1076,1077,1080],{},"The simplest way is ",[38,1072,142],{},[38,1074,1075],{},"offset",", plus ",[38,1078,1079],{},"totalCount"," to know when to stop:",[31,1082,1084],{"className":33,"code":1083,"language":35,"meta":36,"style":36},"query TodosPage($offset: Int!) {\n  todos(first: 200, offset: $offset, orderBy: CREATED_AT_ASC) {\n    totalCount\n    nodes { id name }\n  }\n}\n",[38,1085,1086,1107,1139,1144,1156,1160],{"__ignoreMap":36},[41,1087,1088,1090,1093,1095,1098,1100,1103,1105],{"class":43,"line":44},[41,1089,48],{"class":47},[41,1091,1092],{"class":450}," TodosPage",[41,1094,139],{"class":51},[41,1096,1097],{"class":58},"$offset",[41,1099,145],{"class":51},[41,1101,1102],{"class":148},"Int",[41,1104,464],{"class":47},[41,1106,152],{"class":51},[41,1108,1109,1111,1113,1115,1117,1120,1122,1124,1126,1128,1130,1132,1134,1137],{"class":43,"line":55},[41,1110,59],{"class":58},[41,1112,139],{"class":51},[41,1114,142],{"class":58},[41,1116,145],{"class":51},[41,1118,1119],{"class":148},"200",[41,1121,719],{"class":51},[41,1123,1075],{"class":58},[41,1125,145],{"class":51},[41,1127,1097],{"class":58},[41,1129,719],{"class":51},[41,1131,946],{"class":58},[41,1133,954],{"class":51},[41,1135,1136],{"class":148}," CREATED_AT_ASC",[41,1138,152],{"class":51},[41,1140,1141],{"class":43,"line":64},[41,1142,1143],{"class":58},"    totalCount\n",[41,1145,1146,1148,1150,1152,1154],{"class":43,"line":72},[41,1147,67],{"class":58},[41,1149,174],{"class":51},[41,1151,347],{"class":58},[41,1153,513],{"class":58},[41,1155,180],{"class":51},[41,1157,1158],{"class":43,"line":78},[41,1159,99],{"class":51},[41,1161,1162],{"class":43,"line":84},[41,1163,105],{"class":51},[13,1165,1166,1167,1170,1171,1174,1175,1178,1179,1182,1183,954],{},"For large or changing lists, cursors are more reliable, as items added mid-way can't shift the pages. Ask for ",[38,1168,1169],{},"pageInfo",", then pass ",[38,1172,1173],{},"endCursor"," back as ",[38,1176,1177],{},"after"," until ",[38,1180,1181],{},"hasNextPage"," is ",[38,1184,1185],{},"false",[31,1187,1189],{"className":33,"code":1188,"language":35,"meta":36,"style":36},"query TodosPage($after: Cursor) {\n  todos(first: 200, after: $after, orderBy: CREATED_AT_ASC) {\n    pageInfo { hasNextPage endCursor }\n    nodes { id name }\n  }\n}\n",[38,1190,1191,1209,1239,1253,1265,1269],{"__ignoreMap":36},[41,1192,1193,1195,1197,1199,1202,1204,1207],{"class":43,"line":44},[41,1194,48],{"class":47},[41,1196,1092],{"class":450},[41,1198,139],{"class":51},[41,1200,1201],{"class":58},"$after",[41,1203,145],{"class":51},[41,1205,1206],{"class":148},"Cursor",[41,1208,152],{"class":51},[41,1210,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237],{"class":43,"line":55},[41,1212,59],{"class":58},[41,1214,139],{"class":51},[41,1216,142],{"class":58},[41,1218,145],{"class":51},[41,1220,1119],{"class":148},[41,1222,719],{"class":51},[41,1224,1177],{"class":58},[41,1226,145],{"class":51},[41,1228,1201],{"class":58},[41,1230,719],{"class":51},[41,1232,946],{"class":58},[41,1234,954],{"class":51},[41,1236,1136],{"class":148},[41,1238,152],{"class":51},[41,1240,1241,1244,1246,1248,1251],{"class":43,"line":64},[41,1242,1243],{"class":58},"    pageInfo",[41,1245,174],{"class":51},[41,1247,1181],{"class":58},[41,1249,1250],{"class":58}," endCursor",[41,1252,180],{"class":51},[41,1254,1255,1257,1259,1261,1263],{"class":43,"line":72},[41,1256,67],{"class":58},[41,1258,174],{"class":51},[41,1260,347],{"class":58},[41,1262,513],{"class":58},[41,1264,180],{"class":51},[41,1266,1267],{"class":43,"line":78},[41,1268,99],{"class":51},[41,1270,1271],{"class":43,"line":84},[41,1272,105],{"class":51},[13,1274,1275],{},"A loop in JavaScript that collects every page:",[31,1277,1281],{"className":1278,"code":1279,"language":1280,"meta":36,"style":36},"language-js shiki shiki-themes github-light github-dark","async function allTodos(gql) {\n  const todos = []\n  let after = null\n  do {\n    const data = await gql(QUERY, { after })\n    todos.push(...data.todos.nodes)\n    after = data.todos.pageInfo.hasNextPage ? data.todos.pageInfo.endCursor : null\n  } while (after)\n  return todos\n}\n","js",[38,1282,1283,1301,1315,1329,1336,1360,1376,1396,1407,1415],{"__ignoreMap":36},[41,1284,1285,1288,1291,1294,1296,1299],{"class":43,"line":44},[41,1286,1287],{"class":47},"async",[41,1289,1290],{"class":47}," function",[41,1292,1293],{"class":450}," allTodos",[41,1295,139],{"class":51},[41,1297,1298],{"class":58},"gql",[41,1300,152],{"class":51},[41,1302,1303,1306,1309,1312],{"class":43,"line":55},[41,1304,1305],{"class":47},"  const",[41,1307,1308],{"class":148}," todos",[41,1310,1311],{"class":47}," =",[41,1313,1314],{"class":51}," []\n",[41,1316,1317,1320,1323,1326],{"class":43,"line":64},[41,1318,1319],{"class":47},"  let",[41,1321,1322],{"class":51}," after ",[41,1324,1325],{"class":47},"=",[41,1327,1328],{"class":148}," null\n",[41,1330,1331,1334],{"class":43,"line":72},[41,1332,1333],{"class":47},"  do",[41,1335,52],{"class":51},[41,1337,1338,1341,1344,1346,1349,1352,1354,1357],{"class":43,"line":78},[41,1339,1340],{"class":47},"    const",[41,1342,1343],{"class":148}," data",[41,1345,1311],{"class":47},[41,1347,1348],{"class":47}," await",[41,1350,1351],{"class":450}," gql",[41,1353,139],{"class":51},[41,1355,1356],{"class":148},"QUERY",[41,1358,1359],{"class":51},", { after })\n",[41,1361,1362,1365,1368,1370,1373],{"class":43,"line":84},[41,1363,1364],{"class":51},"    todos.",[41,1366,1367],{"class":450},"push",[41,1369,139],{"class":51},[41,1371,1372],{"class":47},"...",[41,1374,1375],{"class":51},"data.todos.nodes)\n",[41,1377,1378,1381,1383,1386,1389,1392,1394],{"class":43,"line":90},[41,1379,1380],{"class":51},"    after ",[41,1382,1325],{"class":47},[41,1384,1385],{"class":51}," data.todos.pageInfo.hasNextPage ",[41,1387,1388],{"class":47},"?",[41,1390,1391],{"class":51}," data.todos.pageInfo.endCursor ",[41,1393,954],{"class":47},[41,1395,1328],{"class":148},[41,1397,1398,1401,1404],{"class":43,"line":96},[41,1399,1400],{"class":51},"  } ",[41,1402,1403],{"class":47},"while",[41,1405,1406],{"class":51}," (after)\n",[41,1408,1409,1412],{"class":43,"line":102},[41,1410,1411],{"class":47},"  return",[41,1413,1414],{"class":51}," todos\n",[41,1416,1417],{"class":43,"line":216},[41,1418,105],{"class":51},[13,1420,1421,1423,1424,1428,1429,904],{},[38,1422,1298],{}," here is a small helper that posts the query and variables, as in ",[110,1425,1427],{"href":1426},"/docs/guides/api-getting-started#make-your-first-request","Getting started",", and returns ",[38,1430,1431],{},"data",[23,1433,1435],{"id":1434},"count-without-fetching","Count without fetching",[13,1437,1438,1439,1441,1442,1444],{},"Ask for ",[38,1440,1079],{}," and no ",[38,1443,410],{}," to count cheaply:",[31,1446,1448],{"className":33,"code":1447,"language":35,"meta":36,"style":36},"query {\n  openIssues: issues(filter: { stateId: { equalTo: \"ACTIVE\" }, issueStatusId: { equalTo: \"TODO\" } }) {\n    totalCount\n  }\n  solvedIssues: issues(filter: { stateId: { equalTo: \"ACTIVE\" }, issueStatusId: { equalTo: \"COMPLETE\" } }) {\n    totalCount\n  }\n}\n",[38,1449,1450,1456,1496,1500,1504,1544,1548,1552],{"__ignoreMap":36},[41,1451,1452,1454],{"class":43,"line":44},[41,1453,48],{"class":47},[41,1455,52],{"class":51},[41,1457,1458,1461,1463,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494],{"class":43,"line":55},[41,1459,1460],{"class":270},"  openIssues",[41,1462,145],{"class":51},[41,1464,1465],{"class":58},"issues",[41,1467,139],{"class":51},[41,1469,264],{"class":58},[41,1471,267],{"class":51},[41,1473,271],{"class":270},[41,1475,267],{"class":51},[41,1477,276],{"class":270},[41,1479,145],{"class":51},[41,1481,281],{"class":270},[41,1483,490],{"class":51},[41,1485,993],{"class":270},[41,1487,267],{"class":51},[41,1489,276],{"class":270},[41,1491,145],{"class":51},[41,1493,649],{"class":270},[41,1495,284],{"class":51},[41,1497,1498],{"class":43,"line":64},[41,1499,1143],{"class":58},[41,1501,1502],{"class":43,"line":72},[41,1503,99],{"class":51},[41,1505,1506,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1542],{"class":43,"line":78},[41,1507,1508],{"class":270},"  solvedIssues",[41,1510,145],{"class":51},[41,1512,1465],{"class":58},[41,1514,139],{"class":51},[41,1516,264],{"class":58},[41,1518,267],{"class":51},[41,1520,271],{"class":270},[41,1522,267],{"class":51},[41,1524,276],{"class":270},[41,1526,145],{"class":51},[41,1528,281],{"class":270},[41,1530,490],{"class":51},[41,1532,993],{"class":270},[41,1534,267],{"class":51},[41,1536,276],{"class":270},[41,1538,145],{"class":51},[41,1540,1541],{"class":270},"\"COMPLETE\"",[41,1543,284],{"class":51},[41,1545,1546],{"class":43,"line":84},[41,1547,1143],{"class":58},[41,1549,1550],{"class":43,"line":90},[41,1551,99],{"class":51},[41,1553,1554],{"class":43,"line":96},[41,1555,105],{"class":51},[13,1557,1558,740,1561,1564],{},[38,1559,1560],{},"openIssues:",[38,1562,1563],{},"solvedIssues:"," are aliases. They let you ask for the same list twice with different filters in one request, and name each answer.",[1566,1567,1568],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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 .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 pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":36,"searchDepth":55,"depth":55,"links":1570},[1571,1572,1573,1574,1575,1576,1577,1578],{"id":25,"depth":55,"text":26},{"id":117,"depth":55,"text":118},{"id":340,"depth":55,"text":341},{"id":434,"depth":55,"text":435},{"id":264,"depth":55,"text":588},{"id":940,"depth":55,"text":941},{"id":1063,"depth":55,"text":1064},{"id":1434,"depth":55,"text":1435},[1580,1581,1582,1583,1584,1585,1586,1587],{"id":25,"title":26},{"id":117,"title":118},{"id":340,"title":341},{"id":434,"title":435},{"id":264,"title":588},{"id":940,"title":941},{"id":1063,"title":1064},{"id":1434,"title":1435},{"title":1589,"description":1590},"Reading data with the Success.co API — Success.co","Query Success.co data with GraphQL. Choose fields, follow related items, filter, sort and paginate To-dos, Rocks, Issues and more.","2026-11-12T13:59:30+00:00",{"value":1593},[1594,1612,1666,1687,1693,1702,1738],{"title":1595,"links":1596},"Getting Started",[1597,1600,1603,1606,1609],{"title":1598,"href":1599},"Getting Started with Success.co","/docs/guides/getting-started",{"title":1601,"href":1602},"Join your team","/docs/guides/join-your-team",{"title":1604,"href":1605},"EOS® Implementers  Guide","/docs/guides/implementers",{"title":1607,"href":1608},"Affiliate Program Guide","/docs/guides/affiliate-program",{"title":1610,"href":1611},"Import Data","/docs/guides/import-data",{"title":1613,"links":1614},"Platform",[1615,1618,1621,1624,1627,1630,1633,1636,1639,1642,1645,1648,1651,1654,1657,1660,1663],{"title":1616,"href":1617},"Vision/Traction Organizer (V/TO®)  Guide","/docs/guides/vision-traction-organizer-vto",{"title":1619,"href":1620},"Accountability Chart Guide","/docs/guides/accountability-chart",{"title":1622,"href":1623},"Dashboard Guide to Track Rocks, To-Dos & Issues","/docs/guides/dashboard",{"title":1625,"href":1626},"L10™ Meetings","/docs/guides/l10-meetings",{"title":1628,"href":1629},"Rocks","/docs/guides/rocks",{"title":1631,"href":1632},"Scorecard™","/docs/guides/scorecard",{"title":1634,"href":1635},"EOS® Meeting Agendas Guide","/docs/guides/agendas",{"title":1637,"href":1638},"Issues","/docs/guides/issues",{"title":1640,"href":1641},"Headlines","/docs/guides/headlines",{"title":1643,"href":1644},"How To Use To-Dos in Success.co?","/docs/guides/to-dos",{"title":1646,"href":1647},"People Analyzer","/docs/guides/people-analyzer",{"title":1649,"href":1650},"Organizational Checkup™","/docs/guides/organizational-checkup",{"title":1652,"href":1653},"S.W.O.T","/docs/guides/swot-analysis",{"title":1655,"href":1656},"Process","/docs/guides/process",{"title":1658,"href":1659},"Implementer Hub","/docs/guides/implementer-hub",{"title":1661,"href":1662},"Insights","/docs/guides/insights",{"title":1664,"href":1665},"Mastery","/docs/guides/mastery",{"title":1667,"links":1668},"Advanced",[1669,1672,1675,1678,1681,1684],{"title":1670,"href":1671},"Filtering","/docs/guides/filtering",{"title":1673,"href":1674},"Quarter Dates","/docs/guides/quarter-dates",{"title":1676,"href":1677},"Keyboard Shortcuts Guide","/docs/guides/keyboard-shortcuts",{"title":1679,"href":1680},"Related Items","/docs/guides/related-items",{"title":1682,"href":1683},"Notifications","/docs/guides/notifications",{"title":1685,"href":1686},"Import Templates","/docs/guides/import-templates",{"title":1688,"links":1689},"Billing",[1690],{"title":1691,"href":1692},"Billing Guide – Set Up Payments, Update Details, and Access Invoices","/docs/guides/billing",{"title":1694,"links":1695},"Apps",[1696,1699],{"title":1697,"href":1698},"Desktop App Guide to Boost Productivity & Track Tasks","/docs/guides/desktop-app",{"title":1700,"href":1701},"Mobile App","/docs/guides/mobile-app",{"title":1703,"links":1704},"Integrations",[1705,1708,1711,1714,1717,1720,1723,1726,1729,1732,1735],{"title":1706,"href":1707},"Success.co Integrations","/docs/guides/successco-integrations",{"title":1709,"href":1710},"Google Calendar Integration Guide","/docs/guides/google-calendar",{"title":1712,"href":1713},"Microsoft Calendar Integration Guide","/docs/guides/microsoft-calendar",{"title":1715,"href":1716},"Microsoft Teams","/docs/guides/microsoft-teams",{"title":1718,"href":1719},"Slack","/docs/guides/slack",{"title":1721,"href":1722},"Asana Integration Guide","/docs/guides/asana",{"title":1724,"href":1725},"ClickUp Integration Guide","/docs/guides/clickup",{"title":1727,"href":1728},"Monday.com Integration Guide","/docs/guides/monday",{"title":1730,"href":1731},"Teamwork Integration Guide","/docs/guides/teamwork",{"title":1733,"href":1734},"Success.co AI Connector (MCP)","/docs/guides/ai-mcp-connector",{"title":1736,"href":1737},"Zapier","/docs/guides/zapier",{"title":1739,"links":1740},"API",[1741,1744,1745,1748,1749,1752],{"title":1742,"href":1743},"Getting started with the API","/docs/guides/api-getting-started",{"title":7,"href":6},{"title":1746,"href":1747},"Creating and updating data","/docs/guides/api-creating-and-updating-data",{"title":113,"href":112},{"title":1750,"href":1751},"Recipes","/docs/guides/api-recipes",{"title":1753,"href":1754},"Errors and limits","/docs/guides/api-errors-and-limits",{"value":1756},{"id":1757,"extension":1758,"meta":1759,"og_image":1760,"og_locale":1761,"og_title_fallback":1762,"site_url":1763,"stem":1764,"title_suffix":1765,"__hash__":1766,"ogImageAsset":1767},"seoSettings/settings/seo.yml","yml",{},"df2824aa25f11988810a1b0f3c08f0f2","en_GB","The EOS App","https://www.success.co","settings/seo"," — Success.co","nnRZDXC71vobecumYGFChQJ7a9XRrFJq7bfBBCWo6Bk",{"id":1760,"publicId":1768,"version":1769,"format":1770,"resourceType":1771,"width":1772,"height":1773,"alt":1774,"name":1775},"site/success-opengraph-image",1791366213,"png","image",1200,630,"Success.co","Success OpenGraph Image",1794503195660]