[{"data":1,"prerenderedAt":1702},["ShallowReactive",2],{"docs-pages-en":3,"doc-en-http-api":154},[4,11,16,21,26,31,37,48,56,65,73,80,88,92,101,105,113,118,123,128,134,139,144,149],{"path":5,"title":6,"description":7,"order":8,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Finstallation","Installation","Install CloseYourIt on your own server with one command.",1,"start",null,{"path":12,"title":13,"description":14,"order":15,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fsettings","Settings","Every setting in the .env file, what it does and which ones you must never change.",2,{"path":17,"title":18,"description":19,"order":20,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fdatabase","Database","What the database is, what is inside, how long data stays and how much room it takes.",3,{"path":22,"title":23,"description":24,"order":25,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fupdates-and-backups","Updates and backups","Update to a new version, back up and restore the database, check the install.",4,{"path":27,"title":28,"description":29,"order":30,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting","What to check when the install, the certificate, email or incoming data do not work.",5,{"path":32,"title":33,"description":34,"order":35,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fconnect-your-apps","Connect your apps","Every tool that sends data to CloseYourIt, and what each one collects.",6,"connect",{"path":38,"title":39,"description":40,"order":41,"group":10,"parent":42,"package":43,"note":44,"collects":45,"status":10},"\u002Fdocs\u002Fsdk-ruby","Ruby \u002F Rails","The closeyourit-ruby gem sends errors, logs, slow queries and job metrics from a Rails app.",7,"connect-your-apps","closeyourit-ruby","Errors, logs, slow queries and methods, background jobs.",{"errors":46,"logs":46,"performance":46,"visits":47,"servers":47},"full","none",{"path":49,"title":50,"description":51,"order":52,"group":10,"parent":42,"package":53,"note":54,"collects":55,"status":10},"\u002Fdocs\u002Fsdk-javascript","JavaScript","The @bussolabs\u002Fcloseyourit-js package works in the browser and on Node 20.16 or newer.",8,"@bussolabs\u002Fcloseyourit-js","Browser and Node, framework adapters and database queries from 0.13.0.",{"errors":46,"logs":46,"performance":46,"visits":46,"servers":47},{"path":57,"title":58,"description":59,"order":60,"group":10,"parent":42,"package":61,"note":62,"collects":63,"status":10},"\u002Fdocs\u002Fsdk-dart","Dart \u002F Flutter","The closeyourit package captures the errors of Flutter apps, even when the phone is offline.",9,"closeyourit","Public errors, logs and metrics from 0.9.3.",{"errors":46,"logs":64,"performance":64,"visits":47,"servers":47},"partial",{"path":66,"title":67,"description":68,"order":69,"group":10,"parent":42,"package":61,"note":70,"collects":71,"status":72},"\u002Fdocs\u002Fsdk-python","Python","The closeyourit package sends errors, logs and metrics from server-side Python applications.",10,"Server side. SQLAlchemy; Django query monitoring and FastAPI\u002FStarlette from 0.4.0.",{"errors":46,"logs":46,"performance":64,"visits":47,"servers":47},"pre_alpha",{"path":74,"title":75,"description":76,"order":77,"group":10,"parent":42,"package":75,"note":78,"collects":79,"status":10},"\u002Fdocs\u002Fsdk-sentry","Sentry SDK","Send errors with a compatible Sentry SDK; sessions and crashes have separate profiles.",11,"Compatible errors; sessions and crashes require a verified profile.",{"errors":46,"logs":47,"performance":47,"visits":47,"servers":47},{"path":81,"title":82,"description":83,"order":84,"group":10,"parent":42,"package":85,"note":86,"collects":87,"status":10},"\u002Fdocs\u002Fagent-server","Server agent","A small program on the server that sends the state of the machine every 60 seconds.",12,"closeyourit-agent","CPU, memory, disks, network, containers and services.",{"errors":47,"logs":64,"performance":47,"visits":47,"servers":46},{"path":89,"title":90,"description":91,"order":84,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnuxt","Vue and Nuxt","Connect Nuxt browser errors and Nitro server errors without exposing a server token.",{"path":93,"title":94,"description":95,"order":96,"group":10,"parent":42,"package":97,"note":98,"collects":99,"status":100},"\u002Fdocs\u002Fagent-kubernetes","Kubernetes","A read-only observer of the cluster: one copy per cluster.",13,"closeyourit-kube","Machines, apps and error events of the cluster.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":46},"coming",{"path":102,"title":103,"description":104,"order":96,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fopentelemetry","OpenTelemetry","Send server traces, metrics and logs through the optional OTLP receiver.",{"path":106,"title":107,"description":108,"order":109,"group":10,"parent":42,"package":110,"note":111,"collects":112,"status":10},"\u002Fdocs\u002Fcli","cyi CLI","The closeyourit command, cyi for short: manage projects, errors and tickets from the terminal.",14,"@bussolabs\u002Fcloseyourit-cli","It collects no data: it drives CloseYourIt from the terminal.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":47},{"path":114,"title":115,"description":116,"order":117,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fhttp-api","HTTP API","Send errors, logs, metrics and page views with plain HTTP requests, without an SDK.",15,{"path":119,"title":120,"description":121,"order":122,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fgithub-app","GitHub","Connect GitHub repositories to tickets and releases with your own GitHub App.",16,{"path":124,"title":125,"description":126,"order":127,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fingest-gateway","Ingest gateway","Keep incoming errors, logs and metrics safe when the app is slow or restarting.",17,{"path":129,"title":130,"description":131,"order":132,"group":133,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fai","AI","Turn on assistant, analysis, dictation and smart search with a CloseYourIt AI key or your own provider.",18,"automation",{"path":135,"title":136,"description":137,"order":138,"group":133,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fautomator","Automator","Let tickets be worked automatically on your own Linux machine, with Claude Code, Codex or both.",19,{"path":140,"title":141,"description":142,"order":143,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fstack-coverage","Frameworks and stack coverage","Choose a published SDK or understand the limits of a locally tested integration.",20,{"path":145,"title":146,"description":147,"order":148,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fmonitoring","Traces, measurements and sessions","Explore the new signals, compare releases and recover original error locations.",21,{"path":150,"title":151,"description":152,"order":153,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnode-database","Node databases","Monitor slow and repeated queries with pg, mysql2, Drizzle and Prisma PostgreSQL.",22,{"id":155,"title":115,"body":156,"collects":10,"description":116,"extension":1696,"group":36,"meta":1697,"navigation":1698,"note":10,"order":117,"package":10,"parent":10,"path":114,"seo":1699,"status":10,"stem":1700,"__hash__":1701},"docs_en\u002Fdocs\u002Fhttp-api.md",{"type":157,"value":158,"toc":1684},"minimark",[159,163,168,171,204,220,227,259,263,376,383,396,400,403,536,720,723,727,791,879,883,950,1078,1082,1136,1229,1238,1247,1251,1320,1335,1342,1346,1349,1388,1516,1527,1531,1534,1635,1660,1671,1675,1680],[160,161,162],"p",{},"The SDKs are a convenience: underneath, every one of them makes the HTTP requests on this page. Use the API directly from a language without an SDK, from a script or from CI.",[164,165,167],"h2",{"id":166},"before-you-start","Before you start",[160,169,170],{},"You need three things, all from the project settings in CloseYourIt:",[172,173,174,188,193],"ul",{},[175,176,177,178,182,183,187],"li",{},"the ",[179,180,181],"strong",{},"address"," of your install, for example ",[184,185,186],"code",{},"https:\u002F\u002Fbugs.example.com",";",[175,189,177,190,187],{},[179,191,192],{},"project id",[175,194,195,196,199,200,203],{},"an ",[179,197,198],{},"ingest token"," (",[184,201,202],{},"cyi_…",").",[160,205,206,207,210,211,214,215,219],{},"The token is secret and stays on the server. ",[184,208,209],{},"ingest"," allows sending; private reads require the separate ",[184,212,213],{},"read"," scope. Browser and mobile clients use a public key for supported signals, without reading or administration access. Available signals depend on the SDK and version; see ",[216,217,218],"a",{"href":49},"JavaScript SDK",".",[160,221,222,223,226],{},"Every request carries the token and sends JSON, with field names in ",[184,224,225],{},"snake_case",":",[228,229,234],"pre",{"className":230,"code":231,"language":232,"meta":233,"style":233},"language-bash shiki shiki-themes github-light github-dark","Authorization: Bearer cyi_...\nContent-Type: application\u002Fjson\n","bash","",[184,235,236,251],{"__ignoreMap":233},[237,238,240,244,248],"span",{"class":239,"line":8},"line",[237,241,243],{"class":242},"sScJk","Authorization:",[237,245,247],{"class":246},"sZZnC"," Bearer",[237,249,250],{"class":246}," cyi_...\n",[237,252,253,256],{"class":239,"line":15},[237,254,255],{"class":242},"Content-Type:",[237,257,258],{"class":246}," application\u002Fjson\n",[164,260,262],{"id":261},"where-to-send","Where to send",[264,265,266,285],"table",{},[267,268,269],"thead",{},[270,271,272,276,279,282],"tr",{},[273,274,275],"th",{},"What",[273,277,278],{},"Address",[273,280,281],{},"Body",[273,283,284],{},"Answer",[286,287,288,307,325,342,359],"tbody",{},[270,289,290,294,299,302],{},[291,292,293],"td",{},"Error",[291,295,296],{},[184,297,298],{},"POST \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Fevents",[291,300,301],{},"one event",[291,303,304],{},[184,305,306],{},"202 {\"data\":{\"id\":\"…\"}}",[270,308,309,312,317,320],{},[291,310,311],{},"Performance",[291,313,314],{},[184,315,316],{},"POST \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Fmetrics",[291,318,319],{},"one sample or a list",[291,321,322],{},[184,323,324],{},"202 {\"data\":{\"accepted\":N}}",[270,326,327,330,335,338],{},[291,328,329],{},"Logs",[291,331,332],{},[184,333,334],{},"POST \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Flogs",[291,336,337],{},"one entry or a list",[291,339,340],{},[184,341,324],{},[270,343,344,347,352,355],{},[291,345,346],{},"Page views",[291,348,349],{},[184,350,351],{},"POST \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Fpageviews",[291,353,354],{},"one visit or a list",[291,356,357],{},[184,358,324],{},[270,360,361,364,369,372],{},[291,362,363],{},"Session replay",[291,365,366],{},[184,367,368],{},"POST \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Freplays",[291,370,371],{},"one chunk or a list",[291,373,374],{},[184,375,324],{},[160,377,378,379,382],{},"The ",[184,380,381],{},"\u003Cid>"," in the address must be the project the token belongs to.",[160,384,385,388,389,392,393,395],{},[184,386,387],{},"202"," means ",[179,390,391],{},"accepted",", not saved: the data is written a moment later by a background job. ",[184,394,391],{}," counts the items that passed the first checks.",[164,397,399],{"id":398},"send-an-error","Send an error",[160,401,402],{},"The body is a Sentry-style event.",[228,404,406],{"className":230,"code":405,"language":232,"meta":233,"style":233},"curl -X POST https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Fevents \\\n  -H \"Authorization: Bearer $CYI_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"event_id\": \"fc6d8c0c43fc4630ad850ee518f1b9d0\",\n    \"timestamp\": \"2026-10-03T10:15:30Z\",\n    \"level\": \"error\",\n    \"platform\": \"ruby\",\n    \"environment\": \"production\",\n    \"release\": \"v1.4.2\",\n    \"exception\": { \"values\": [ {\n      \"type\": \"RuntimeError\",\n      \"value\": \"boom\",\n      \"stacktrace\": { \"frames\": [\n        { \"filename\": \"app\u002Fmodels\u002Forder.rb\", \"function\": \"charge\", \"lineno\": 42, \"in_app\": true }\n      ] }\n    } ] }\n  }'\n",[184,407,408,433,449,458,466,471,476,481,486,491,496,501,506,511,516,521,526,531],{"__ignoreMap":233},[237,409,410,413,417,420,423,427,430],{"class":239,"line":8},[237,411,412],{"class":242},"curl",[237,414,416],{"class":415},"sj4cs"," -X",[237,418,419],{"class":246}," POST",[237,421,422],{"class":246}," https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Fprojects\u002F",[237,424,426],{"class":425},"sVt8B","$PROJECT_ID",[237,428,429],{"class":246},"\u002Fevents",[237,431,432],{"class":415}," \\\n",[237,434,435,438,441,444,447],{"class":239,"line":15},[237,436,437],{"class":415},"  -H",[237,439,440],{"class":246}," \"Authorization: Bearer ",[237,442,443],{"class":425},"$CYI_TOKEN",[237,445,446],{"class":246},"\"",[237,448,432],{"class":415},[237,450,451,453,456],{"class":239,"line":20},[237,452,437],{"class":415},[237,454,455],{"class":246}," \"Content-Type: application\u002Fjson\"",[237,457,432],{"class":415},[237,459,460,463],{"class":239,"line":25},[237,461,462],{"class":415},"  -d",[237,464,465],{"class":246}," '{\n",[237,467,468],{"class":239,"line":30},[237,469,470],{"class":246},"    \"event_id\": \"fc6d8c0c43fc4630ad850ee518f1b9d0\",\n",[237,472,473],{"class":239,"line":35},[237,474,475],{"class":246},"    \"timestamp\": \"2026-10-03T10:15:30Z\",\n",[237,477,478],{"class":239,"line":41},[237,479,480],{"class":246},"    \"level\": \"error\",\n",[237,482,483],{"class":239,"line":52},[237,484,485],{"class":246},"    \"platform\": \"ruby\",\n",[237,487,488],{"class":239,"line":60},[237,489,490],{"class":246},"    \"environment\": \"production\",\n",[237,492,493],{"class":239,"line":69},[237,494,495],{"class":246},"    \"release\": \"v1.4.2\",\n",[237,497,498],{"class":239,"line":77},[237,499,500],{"class":246},"    \"exception\": { \"values\": [ {\n",[237,502,503],{"class":239,"line":84},[237,504,505],{"class":246},"      \"type\": \"RuntimeError\",\n",[237,507,508],{"class":239,"line":96},[237,509,510],{"class":246},"      \"value\": \"boom\",\n",[237,512,513],{"class":239,"line":109},[237,514,515],{"class":246},"      \"stacktrace\": { \"frames\": [\n",[237,517,518],{"class":239,"line":117},[237,519,520],{"class":246},"        { \"filename\": \"app\u002Fmodels\u002Forder.rb\", \"function\": \"charge\", \"lineno\": 42, \"in_app\": true }\n",[237,522,523],{"class":239,"line":122},[237,524,525],{"class":246},"      ] }\n",[237,527,528],{"class":239,"line":127},[237,529,530],{"class":246},"    } ] }\n",[237,532,533],{"class":239,"line":132},[237,534,535],{"class":246},"  }'\n",[264,537,538,548],{},[267,539,540],{},[270,541,542,545],{},[273,543,544],{},"Field",[273,546,547],{},"Notes",[286,549,550,560,570,599,624,637,656,675,700,710],{},[270,551,552,557],{},[291,553,554],{},[184,555,556],{},"event_id",[291,558,559],{},"your own unique id; sending the same one twice does not create a second error",[270,561,562,567],{},[291,563,564],{},[184,565,566],{},"timestamp",[291,568,569],{},"ISO 8601 or seconds since 1970; defaults to now",[270,571,572,577],{},[291,573,574],{},[184,575,576],{},"level",[291,578,579,582,583,582,586,582,589,592,593,596,597],{},[184,580,581],{},"debug",", ",[184,584,585],{},"info",[184,587,588],{},"warning",[184,590,591],{},"error"," or ",[184,594,595],{},"fatal","; defaults to ",[184,598,591],{},[270,600,601,606],{},[291,602,603],{},[184,604,605],{},"exception.values[]",[291,607,608,609,582,612,615,616,619,620,623],{},"each with ",[184,610,611],{},"type",[184,613,614],{},"value"," and ",[184,617,618],{},"stacktrace.frames[]","; the ",[179,621,622],{},"last"," one is read",[270,625,626,631],{},[291,627,628],{},[184,629,630],{},"message",[291,632,633,634],{},"used as the title when there is no ",[184,635,636],{},"exception",[270,638,639,653],{},[291,640,641,582,644,582,647,582,650],{},[184,642,643],{},"environment",[184,645,646],{},"release",[184,648,649],{},"server_name",[184,651,652],{},"platform",[291,654,655],{},"optional",[270,657,658,663],{},[291,659,660],{},[184,661,662],{},"user",[291,664,665,582,668,582,671,674],{},[184,666,667],{},"id",[184,669,670],{},"email",[184,672,673],{},"ip_address",": only a hash of them is kept",[270,676,677,694],{},[291,678,679,582,682,582,685,582,688,582,691],{},[184,680,681],{},"request",[184,683,684],{},"breadcrumbs",[184,686,687],{},"tags",[184,689,690],{},"extra",[184,692,693],{},"contexts",[291,695,696,697],{},"optional; values under sensitive keys are replaced with ",[184,698,699],{},"[FILTERED]",[270,701,702,707],{},[291,703,704],{},[184,705,706],{},"trace_id",[291,708,709],{},"links the error to logs of the same request",[270,711,712,717],{},[291,713,714],{},[184,715,716],{},"fingerprint",[291,718,719],{},"a list that overrides how errors are grouped",[160,721,722],{},"Errors are grouped by exception type and place in the code, not by the message text.",[164,724,726],{"id":725},"send-logs","Send logs",[228,728,730],{"className":230,"code":729,"language":232,"meta":233,"style":233},"curl -X POST https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Flogs \\\n  -H \"Authorization: Bearer $CYI_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '[\n    { \"timestamp\": \"2026-10-03T10:15:30Z\", \"level\": \"info\", \"message\": \"order charged\",\n      \"logger\": \"billing\", \"attributes\": { \"order_id\": 7 } }\n  ]'\n",[184,731,732,749,761,769,776,781,786],{"__ignoreMap":233},[237,733,734,736,738,740,742,744,747],{"class":239,"line":8},[237,735,412],{"class":242},[237,737,416],{"class":415},[237,739,419],{"class":246},[237,741,422],{"class":246},[237,743,426],{"class":425},[237,745,746],{"class":246},"\u002Flogs",[237,748,432],{"class":415},[237,750,751,753,755,757,759],{"class":239,"line":15},[237,752,437],{"class":415},[237,754,440],{"class":246},[237,756,443],{"class":425},[237,758,446],{"class":246},[237,760,432],{"class":415},[237,762,763,765,767],{"class":239,"line":20},[237,764,437],{"class":415},[237,766,455],{"class":246},[237,768,432],{"class":415},[237,770,771,773],{"class":239,"line":25},[237,772,462],{"class":415},[237,774,775],{"class":246}," '[\n",[237,777,778],{"class":239,"line":30},[237,779,780],{"class":246},"    { \"timestamp\": \"2026-10-03T10:15:30Z\", \"level\": \"info\", \"message\": \"order charged\",\n",[237,782,783],{"class":239,"line":35},[237,784,785],{"class":246},"      \"logger\": \"billing\", \"attributes\": { \"order_id\": 7 } }\n",[237,787,788],{"class":239,"line":41},[237,789,790],{"class":246},"  ]'\n",[264,792,793,801],{},[267,794,795],{},[270,796,797,799],{},[273,798,544],{},[273,800,547],{},[286,802,803,815,836,845,855,865],{},[270,804,805,809],{},[291,806,807],{},[184,808,630],{},[291,810,811,814],{},[179,812,813],{},"required",", not empty. It is stored as you send it: do not put secrets in it",[270,816,817,821],{},[291,818,819],{},[184,820,576],{},[291,822,823,582,825,582,827,582,829,592,831,833,834],{},[184,824,581],{},[184,826,585],{},[184,828,588],{},[184,830,591],{},[184,832,595],{},"; anything else becomes ",[184,835,585],{},[270,837,838,842],{},[291,839,840],{},[184,841,566],{},[291,843,844],{},"ISO 8601 or seconds since 1970",[270,846,847,852],{},[291,848,849],{},[184,850,851],{},"logger",[291,853,854],{},"the name of the part of your app that wrote it",[270,856,857,862],{},[291,858,859],{},[184,860,861],{},"attributes",[291,863,864],{},"any object; values under sensitive keys are filtered",[270,866,867,877],{},[291,868,869,582,871,582,873,582,875],{},[184,870,556],{},[184,872,706],{},[184,874,643],{},[184,876,646],{},[291,878,655],{},[164,880,882],{"id":881},"send-performance-samples","Send performance samples",[228,884,886],{"className":230,"code":885,"language":232,"meta":233,"style":233},"curl -X POST https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Fmetrics \\\n  -H \"Authorization: Bearer $CYI_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '[\n    { \"kind\": \"slow_query\", \"duration_ms\": 812.4,\n      \"sql\": \"SELECT * FROM orders WHERE id = 7\", \"environment\": \"production\" },\n    { \"kind\": \"slow_method\", \"duration_ms\": 240.0, \"label\": \"Invoice#render\" }\n  ]'\n",[184,887,888,905,917,925,931,936,941,946],{"__ignoreMap":233},[237,889,890,892,894,896,898,900,903],{"class":239,"line":8},[237,891,412],{"class":242},[237,893,416],{"class":415},[237,895,419],{"class":246},[237,897,422],{"class":246},[237,899,426],{"class":425},[237,901,902],{"class":246},"\u002Fmetrics",[237,904,432],{"class":415},[237,906,907,909,911,913,915],{"class":239,"line":15},[237,908,437],{"class":415},[237,910,440],{"class":246},[237,912,443],{"class":425},[237,914,446],{"class":246},[237,916,432],{"class":415},[237,918,919,921,923],{"class":239,"line":20},[237,920,437],{"class":415},[237,922,455],{"class":246},[237,924,432],{"class":415},[237,926,927,929],{"class":239,"line":25},[237,928,462],{"class":415},[237,930,775],{"class":246},[237,932,933],{"class":239,"line":30},[237,934,935],{"class":246},"    { \"kind\": \"slow_query\", \"duration_ms\": 812.4,\n",[237,937,938],{"class":239,"line":35},[237,939,940],{"class":246},"      \"sql\": \"SELECT * FROM orders WHERE id = 7\", \"environment\": \"production\" },\n",[237,942,943],{"class":239,"line":41},[237,944,945],{"class":246},"    { \"kind\": \"slow_method\", \"duration_ms\": 240.0, \"label\": \"Invoice#render\" }\n",[237,947,948],{"class":239,"line":52},[237,949,790],{"class":246},[264,951,952,960],{},[267,953,954],{},[270,955,956,958],{},[273,957,544],{},[273,959,547],{},[286,961,962,983,993,1006,1021,1055,1065],{},[270,963,964,969],{},[291,965,966],{},[184,967,968],{},"kind",[291,970,971,973,974,582,977,592,980],{},[179,972,813],{},": ",[184,975,976],{},"slow_query",[184,978,979],{},"slow_method",[184,981,982],{},"performance_issue",[270,984,985,990],{},[291,986,987],{},[184,988,989],{},"duration_ms",[291,991,992],{},"how long it took",[270,994,995,1000],{},[291,996,997],{},[184,998,999],{},"sql",[291,1001,1002,1003,1005],{},"for ",[184,1004,976],{},"; numbers and ids are replaced so equal queries group together",[270,1007,1008,1013],{},[291,1009,1010],{},[184,1011,1012],{},"label",[291,1014,1002,1015,1017,1018,1020],{},[184,1016,979],{},"; ",[179,1019,813],{},", it is what samples are grouped by",[270,1022,1023,1028],{},[291,1024,1025],{},[184,1026,1027],{},"subtype",[291,1029,1002,1030,1017,1032,973,1034,582,1037,582,1040,582,1043,582,1046,582,1049,592,1052],{},[184,1031,982],{},[179,1033,813],{},[184,1035,1036],{},"n_plus_one",[184,1038,1039],{},"slow_request",[184,1041,1042],{},"slow_external_http",[184,1044,1045],{},"high_query_count",[184,1047,1048],{},"jank",[184,1050,1051],{},"repeated_http",[184,1053,1054],{},"rebuild_storm",[270,1056,1057,1062],{},[291,1058,1059],{},[184,1060,1061],{},"sample_id",[291,1063,1064],{},"your own unique id (a UUID), for safe retries",[270,1066,1067,1076],{},[291,1068,1069,582,1072,582,1074],{},[184,1070,1071],{},"occurred_at",[184,1073,643],{},[184,1075,706],{},[291,1077,655],{},[164,1079,1081],{"id":1080},"send-page-views","Send page views",[228,1083,1085],{"className":230,"code":1084,"language":232,"meta":233,"style":233},"curl -X POST https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Fpageviews \\\n  -H \"Authorization: Bearer $CYI_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"hostname\": \"www.example.com\", \"path\": \"\u002Fpricing\",\n        \"referrer\": \"https:\u002F\u002Fwww.google.com\u002F\", \"utm_source\": \"newsletter\" }'\n",[184,1086,1087,1104,1116,1124,1131],{"__ignoreMap":233},[237,1088,1089,1091,1093,1095,1097,1099,1102],{"class":239,"line":8},[237,1090,412],{"class":242},[237,1092,416],{"class":415},[237,1094,419],{"class":246},[237,1096,422],{"class":246},[237,1098,426],{"class":425},[237,1100,1101],{"class":246},"\u002Fpageviews",[237,1103,432],{"class":415},[237,1105,1106,1108,1110,1112,1114],{"class":239,"line":15},[237,1107,437],{"class":415},[237,1109,440],{"class":246},[237,1111,443],{"class":425},[237,1113,446],{"class":246},[237,1115,432],{"class":415},[237,1117,1118,1120,1122],{"class":239,"line":20},[237,1119,437],{"class":415},[237,1121,455],{"class":246},[237,1123,432],{"class":415},[237,1125,1126,1128],{"class":239,"line":25},[237,1127,462],{"class":415},[237,1129,1130],{"class":246}," '{ \"hostname\": \"www.example.com\", \"path\": \"\u002Fpricing\",\n",[237,1132,1133],{"class":239,"line":30},[237,1134,1135],{"class":246},"        \"referrer\": \"https:\u002F\u002Fwww.google.com\u002F\", \"utm_source\": \"newsletter\" }'\n",[264,1137,1138,1146],{},[267,1139,1140],{},[270,1141,1142,1144],{},[273,1143,544],{},[273,1145,547],{},[286,1147,1148,1166,1176,1186,1207,1217],{},[270,1149,1150,1158],{},[291,1151,1152,582,1155],{},[184,1153,1154],{},"hostname",[184,1156,1157],{},"path",[291,1159,1160,1162,1163,1165],{},[179,1161,813],{},". ",[184,1164,1157],{}," never includes the query string",[270,1167,1168,1173],{},[291,1169,1170],{},[184,1171,1172],{},"name",[291,1174,1175],{},"leave it out for a page view; any other name is a custom event",[270,1177,1178,1183],{},[291,1179,1180],{},[184,1181,1182],{},"referrer",[291,1184,1185],{},"only its host name is kept",[270,1187,1188,1205],{},[291,1189,1190,582,1193,582,1196,582,1199,582,1202],{},[184,1191,1192],{},"utm_source",[184,1194,1195],{},"utm_medium",[184,1197,1198],{},"utm_campaign",[184,1200,1201],{},"utm_term",[184,1203,1204],{},"utm_content",[291,1206,655],{},[270,1208,1209,1214],{},[291,1210,1211],{},[184,1212,1213],{},"screen_width",[291,1215,1216],{},"in pixels; stored only as a class (mobile, tablet, laptop, desktop)",[270,1218,1219,1227],{},[291,1220,1221,582,1223,582,1225],{},[184,1222,556],{},[184,1224,1071],{},[184,1226,643],{},[291,1228,655],{},[160,1230,1231,1232,1234,1235,219],{},"No cookie is used. The visitor is counted from a hash that changes every day and cannot be turned back into a person. A request that looks like a bot gets ",[184,1233,387],{}," with ",[184,1236,1237],{},"accepted: 0",[160,1239,1240,1241,1244,1245,219],{},"Page views need the secret token, so this address is called ",[179,1242,1243],{},"from your server",", not from the browser. For a website, use the ",[216,1246,218],{"href":49},[164,1248,1250],{"id":1249},"limits","Limits",[264,1252,1253,1263],{},[267,1254,1255],{},[270,1256,1257,1260],{},[273,1258,1259],{},"Limit",[273,1261,1262],{},"Value",[286,1264,1265,1273,1280,1288,1296,1304,1312],{},[270,1266,1267,1270],{},[291,1268,1269],{},"Logs in one request",[291,1271,1272],{},"1000",[270,1274,1275,1278],{},[291,1276,1277],{},"Performance samples in one request",[291,1279,1272],{},[270,1281,1282,1285],{},[291,1283,1284],{},"Page views in one request",[291,1286,1287],{},"100",[270,1289,1290,1293],{},[291,1291,1292],{},"Replay chunks in one request",[291,1294,1295],{},"50",[270,1297,1298,1301],{},[291,1299,1300],{},"Requests per minute, errors, logs, metrics (per project, each)",[291,1302,1303],{},"1200",[270,1305,1306,1309],{},[291,1307,1308],{},"Requests per minute, page views, replays (per project, each)",[291,1310,1311],{},"600",[270,1313,1314,1317],{},[291,1315,1316],{},"Requests per minute from one IP address, whole API",[291,1318,1319],{},"300",[160,1321,1322,1323,1326,1327,1330,1331,1334],{},"Over a size limit the answer is ",[184,1324,1325],{},"413"," and nothing is saved. Over a rate limit the answer is ",[184,1328,1329],{},"429"," with a ",[184,1332,1333],{},"Retry-After"," header, in seconds.",[160,1336,1337,1338,1341],{},"With the ",[216,1339,1340],{"href":124},"ingest gateway"," on, one request can be at most 5 MB.",[164,1343,1345],{"id":1344},"when-something-goes-wrong","When something goes wrong",[160,1347,1348],{},"An error answer looks like this:",[228,1350,1354],{"className":1351,"code":1352,"language":1353,"meta":233,"style":233},"language-json shiki shiki-themes github-light github-dark","{ \"error\": { \"code\": \"R422-LOG-004\", \"message\": \"…\" } }\n","json",[184,1355,1356],{"__ignoreMap":233},[237,1357,1358,1361,1364,1367,1370,1372,1375,1377,1380,1382,1385],{"class":239,"line":8},[237,1359,1360],{"class":425},"{ ",[237,1362,1363],{"class":415},"\"error\"",[237,1365,1366],{"class":425},": { ",[237,1368,1369],{"class":415},"\"code\"",[237,1371,973],{"class":425},[237,1373,1374],{"class":246},"\"R422-LOG-004\"",[237,1376,582],{"class":425},[237,1378,1379],{"class":415},"\"message\"",[237,1381,973],{"class":425},[237,1383,1384],{"class":246},"\"…\"",[237,1386,1387],{"class":425}," } }\n",[264,1389,1390,1402],{},[267,1391,1392],{},[270,1393,1394,1396,1399],{},[273,1395,284],{},[273,1397,1398],{},"Meaning",[273,1400,1401],{},"Send again?",[286,1403,1404,1415,1428,1440,1453,1465,1478,1493],{},[270,1405,1406,1410,1412],{},[291,1407,1408],{},[184,1409,387],{},[291,1411,391],{},[291,1413,1414],{},"no",[270,1416,1417,1422,1425],{},[291,1418,1419],{},[184,1420,1421],{},"401",[291,1423,1424],{},"token missing, wrong or revoked",[291,1426,1427],{},"no: fix the token",[270,1429,1430,1435,1438],{},[291,1431,1432],{},[184,1433,1434],{},"403",[291,1436,1437],{},"the token is not allowed to do this",[291,1439,1414],{},[270,1441,1442,1447,1450],{},[291,1443,1444],{},[184,1445,1446],{},"404",[291,1448,1449],{},"the project in the address is not the token's project",[291,1451,1452],{},"no: fix the address",[270,1454,1455,1459,1462],{},[291,1456,1457],{},[184,1458,1325],{},[291,1460,1461],{},"too many items in one request",[291,1463,1464],{},"no: send smaller batches",[270,1466,1467,1472,1475],{},[291,1468,1469],{},[184,1470,1471],{},"422",[291,1473,1474],{},"the body is not valid JSON, or no item in it is valid",[291,1476,1477],{},"no: fix the body",[270,1479,1480,1484,1487],{},[291,1481,1482],{},[184,1483,1329],{},[291,1485,1486],{},"too many requests",[291,1488,1489,1490,1492],{},"yes, after ",[184,1491,1333],{}," seconds",[270,1494,1495,1510,1513],{},[291,1496,1497,582,1500,582,1503,582,1506,1509],{},[184,1498,1499],{},"500",[184,1501,1502],{},"502",[184,1504,1505],{},"503",[184,1507,1508],{},"504",", or no answer",[291,1511,1512],{},"the app is busy or restarting",[291,1514,1515],{},"yes, with growing pauses",[160,1517,1518,1519,1526],{},"To retry safely, ",[179,1520,1521,1522,592,1524],{},"keep the same ",[184,1523,556],{},[184,1525,1061],{},": CloseYourIt then ignores the copy if the first attempt had arrived. Replay chunks are the exception: a retried chunk can be stored twice.",[164,1528,1530],{"id":1529},"read-data-back","Read data back",[160,1532,1533],{},"The same token reads the project's data. Each address returns the latest 25 items.",[264,1535,1536,1545],{},[267,1537,1538],{},[270,1539,1540,1542],{},[273,1541,278],{},[273,1543,1544],{},"Filters",[286,1546,1547,1568,1577,1594,1609],{},[270,1548,1549,1554],{},[291,1550,1551],{},[184,1552,1553],{},"GET \u002Fapi\u002Fv1\u002Ferror_groups",[291,1555,1556,973,1559,582,1562,582,1565],{},[184,1557,1558],{},"status",[184,1560,1561],{},"unresolved",[184,1563,1564],{},"resolved",[184,1566,1567],{},"ignored",[270,1569,1570,1575],{},[291,1571,1572],{},[184,1573,1574],{},"GET \u002Fapi\u002Fv1\u002Ferror_groups\u002F\u003Cid>",[291,1576],{},[270,1578,1579,1584],{},[291,1580,1581],{},[184,1582,1583],{},"GET \u002Fapi\u002Fv1\u002Fmetric_groups",[291,1585,1586,973,1588,582,1590,582,1592],{},[184,1587,968],{},[184,1589,976],{},[184,1591,979],{},[184,1593,982],{},[270,1595,1596,1601],{},[291,1597,1598],{},[184,1599,1600],{},"GET \u002Fapi\u002Fv1\u002Flog_entries",[291,1602,1603,582,1605,582,1607],{},[184,1604,576],{},[184,1606,706],{},[184,1608,643],{},[270,1610,1611,1616],{},[291,1612,1613],{},[184,1614,1615],{},"GET \u002Fapi\u002Fv1\u002Fprojects\u002F\u003Cid>\u002Fanalytics",[291,1617,1618,973,1621,582,1624,582,1627,582,1630,1017,1633],{},[184,1619,1620],{},"range",[184,1622,1623],{},"24h",[184,1625,1626],{},"7d",[184,1628,1629],{},"30d",[184,1631,1632],{},"1y",[184,1634,643],{},[228,1636,1638],{"className":230,"code":1637,"language":232,"meta":233,"style":233},"curl -H \"Authorization: Bearer $CYI_TOKEN\" \\\n  \"https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Ferror_groups?status=unresolved\"\n",[184,1639,1640,1655],{"__ignoreMap":233},[237,1641,1642,1644,1647,1649,1651,1653],{"class":239,"line":8},[237,1643,412],{"class":242},[237,1645,1646],{"class":415}," -H",[237,1648,440],{"class":246},[237,1650,443],{"class":425},[237,1652,446],{"class":246},[237,1654,432],{"class":415},[237,1656,1657],{"class":239,"line":15},[237,1658,1659],{"class":246},"  \"https:\u002F\u002Fbugs.example.com\u002Fapi\u002Fv1\u002Ferror_groups?status=unresolved\"\n",[160,1661,1662,1663,1666,1667,1670],{},"To mark an error as resolved: ",[184,1664,1665],{},"PUT \u002Fapi\u002Fv1\u002Ferror_groups\u002F\u003Cid>\u002Fresolution",". To reopen it: ",[184,1668,1669],{},"DELETE"," on the same address.",[164,1672,1674],{"id":1673},"coming-from-sentry","Coming from Sentry",[160,1676,1677,1678,219],{},"Applications that already use a Sentry SDK do not need this page: they keep their SDK and change one setting. See ",[216,1679,75],{"href":74},[1681,1682,1683],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":233,"searchDepth":15,"depth":15,"links":1685},[1686,1687,1688,1689,1690,1691,1692,1693,1694,1695],{"id":166,"depth":15,"text":167},{"id":261,"depth":15,"text":262},{"id":398,"depth":15,"text":399},{"id":725,"depth":15,"text":726},{"id":881,"depth":15,"text":882},{"id":1080,"depth":15,"text":1081},{"id":1249,"depth":15,"text":1250},{"id":1344,"depth":15,"text":1345},{"id":1529,"depth":15,"text":1530},{"id":1673,"depth":15,"text":1674},"md",{},true,{"title":115,"description":116},"docs\u002Fhttp-api","gQ2oCS1SDzbhRqk9fHpwc2iu-5hfCk59BqLTSxgf_mo",1791302513339]