Draft
Conversation
Users asking "how to delete logs?" landed on the datasets reference page
and found no guidance on query-based event deletion. The page covered
trimming (bulk deletion by date) and deleting whole datasets, but had
no mention of the /v2/datasets/_apl/delete endpoint for targeted removal.
Added a new "Delete events by query" section that explains the block-level
deletion model, warns about the operation cost, and links to the detailed
delete-blocks page. Also fixed a typo ("wantto") in delete-blocks.mdx.
Related support ticket:
- https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KPC7YF848P4JPW3FX0JJZB7D/
Made-with: Cursor
A user noticed that trigger_from_n_runs is available in the API and Terraform Provider but absent from the dashboard UI, and opened a support ticket asking whether it was available. The threshold monitors page gave no indication that this option existed or that it was limited to programmatic configuration only. Added a step noting that trigger_from_n_runs requires consecutive threshold crossings before firing an alert, and that it is only configurable via the API and Terraform Provider. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KPXPMM3S36SE6WDHKD2YN1YR/ Made-with: Cursor
A user wanted to convert min(_time) to a date string for display in a dashboard and couldn't find any documentation on how to format datetime values. The datetime-functions page listed available functions but gave no guidance on converting a datetime result to a readable string. Added a "Format datetime values as strings" section explaining how to use tostring() on datetime results, how to combine it with startofday() to get a date-only string, and how to extract individual components using datetime_part and related functions. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KQ00XCMRZB57QPZ3NE01PGWE/ Made-with: Cursor
The datasets page had no section explaining that Axiom doesn't support deleting individual events. Users who tried to find a way to delete specific log entries got a support response explaining the limitation, but the docs had no equivalent explanation. Added a "Delete individual events" section before the Trim section that: - Clearly states individual event deletion isn't supported - Explains why (block-based storage) - Points to the three available alternatives: trim by date, block delete API for exceptional cases, and full dataset deletion Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KPC7YF848P4JPW3FX0JJZB7D/ Made-with: Cursor
Users migrating from Datadog asked whether they can set org-wide default column configurations in the Stream and Query tabs for their entire organization. Support explained that these settings are per-user only. The docs described what could be configured but said nothing about who the settings apply to, leaving users to assume org-wide defaults might exist. Added a brief note in both the Stream tab view settings section and the Query tab "Select displayed fields" section stating that these preferences are saved per user, with no org-wide defaults for column layout. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KP5B3KQKFK9BTX4YC2RYB5G6/ Made-with: Cursor
…y to transform data Users frequently ask how to modify or edit events after ingestion. The virtual fields page did not explain that events are immutable, leaving users without a clear answer. Added an explicit note at the top of the page explaining event immutability and positioning virtual fields as the primary mechanism for reshaping and transforming data at query time. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KNPV6R8CZXVBX13ESY5Q8Y8T/ Made-with: Cursor
Users asked how to apply probabilistic sampling to traces before they reach Axiom. Axiom does not sample data at ingest, so users must configure this in the OTel Collector. Added a new "Sampling" section explaining both probabilistic_sampler (uniform random sampling) and tail_sampling (policy-based sampling after full trace collection), with YAML configuration examples for each. Also noted the load-balancing requirement for tail sampling in multi-Collector setups. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KNMH3JY5J2CXYV8E5TEPQGBC/ Made-with: Cursor
Users sending logs from Render often want to drop health-check and other low-value log lines. Axiom does not filter at the ingest endpoint, so the docs only showed a direct syslog setup and left users without a solution. Added a new section explaining how to route Render's log stream through an OTel Collector with a filter processor to drop unwanted records before they reach Axiom, including a working YAML configuration example. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KNVC1F9998HKAVTF09H952E7/ Made-with: Cursor
Users logging with the @axiomhq/nextjs or next-axiom libraries sometimes spread dynamic or user-supplied objects directly into the `fields` parameter. When these objects contain unpredictable keys (e.g. per-request identifiers, user input), the dataset can quickly approach or exceed the field limit, causing ingest to fail silently for those events. Added a Warning callout to both the @axiomhq/nextjs and next-axiom Logs sections linking to the Limits reference and the map-fields guide, so users understand why they should stick to a fixed set of field keys. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KMJRD80PH5MJ8C59AASWP0DD/ Made-with: Cursor
…section A customer asked about three MPL capabilities: querying the same timeseries multiple times in one query, naming individual subqueries, and using an 'auto' alignment period. Two gaps were identified: 1. The align section did not state that an explicit duration is required. Users familiar with Grafana or PromQL expect automatic step/resolution derived from the query time range; MPL does not support this. 2. The compute section did not make it clear that both subqueries can target the same metric/timeseries. The example already does this, but there was no prose explaining the pattern. Changes: - Added a sentence to the align section stating that an explicit duration is required and that automatic window sizing is not supported. - Rewrote the compute section introduction and added explanatory prose before the example to make the same-timeseries pattern discoverable. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KMN66MG8MCZZ0Y81GS1PFGB2/ Made-with: Cursor
The triggerFromNRuns field lets users require N consecutive check runs to meet the threshold condition before the monitor triggers. This is not exposed in the Axiom UI and previously required undiscovered API knowledge, causing users to open support tickets. The new section in configure-monitors.mdx explains the field, shows a JSON example, and links to the relevant REST API endpoints. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KN2VTAZP0RAG7VJZ09P2FSJ4/ Made-with: Cursor
The RBAC docs explained roles and dataset-level capabilities in general terms but lacked a concrete workflow showing how to restrict a user to only certain datasets. Users had to figure out the combination of custom roles, individual dataset permissions, and the None base role on their own. Added a new "Restrict users to specific datasets" section under the dataset-level capabilities section that walks through a complete three-step example: create a role with per-dataset query permissions, create a group with that role, assign the None base role to users. Added a tip showing the same pattern applies to ingest access. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KM3MXX59KN0VZX3T1KMVBX6A/ Made-with: Cursor
Users who built dashboard elements using MPL (Metrics Query Language) found that parameterized filter bars had no effect on those elements. The docs did not mention this limitation, leaving users confused about why their filters weren't working. Added a note under the filter bar description to clarify that dashboard filters apply to APL chart queries only. MPL-based elements are not affected by filter bars, and users who need filters across all charts should write their queries in APL. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KM6N2R9HDR25K9FHC79GTH7M/ Made-with: Cursor
…nections Users expected to be able to query live operational data from relational databases (such as Postgres on AWS RDS) using the externaldata operator to complement their historical data in Axiom. The docs described the operator in terms of cloud storage and HTTP endpoints but did not explicitly state that live database connections are unsupported, causing confusion. Added an info callout to the externaldata operator page making it clear that the operator only works with static files in cloud storage or HTTP endpoints, not live DB connections. The note also suggests the workaround of exporting data from the database to a file in cloud storage. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KKHBC7FFWZBST2AY2EYJHZB8/ Made-with: Cursor
The monitor examples page lacked guidance on how to create an alert that fires only when a metric stays above a threshold for a sustained period, rather than triggering on a brief spike. Support received a question from a user who wanted to alert when a metric remained above a threshold for 30 minutes continuously. The solution is to use min() as the aggregation in the threshold monitor query and set the range to the desired sustained duration. Because min() returns the lowest value in the window, the result only exceeds the threshold if every data point in the window was above the threshold. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KKCMZH3WXQEN91GSG24ZG89E/ Made-with: Cursor
Users receiving a "No activity detected by monitor" notification were confused about what it meant and whether there was a bug in their setup. The previous description of the Alert on no data setting did not explain what the notification message would say, nor did it mention a common use case for this feature. Updated the description to include the exact notification message text and a concrete example of when to use this option (detecting when a data source stops sending events, e.g. an agent going offline). Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJGD96179A445SH8TTE8CM3S/ Made-with: Cursor
New users iterating quickly on their event schema during prototyping were confused when they hit the once-per-day vacuum limit and had no documented path forward. The vacuum fields section mentioned the limit but gave no practical guidance on what to do when it blocks progress. Added a list of alternatives: using a dedicated development dataset, deleting and recreating the dataset, and trimming before vacuuming. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KKBV0YBPA8KB1REX75Y9SZ4M/ Made-with: Cursor
The docs described has as matching when "RHS is a whole term in LHS" but did not explain what constitutes a term boundary. Users were confused about why has_cs matched in some cases but not others with similar strings — for example, "parentSpanId" has "parent" returns False because the entire camelCase value is a single term (no non-alphanumeric separators), while "North America" has "North" returns True because the space is a term boundary. Added a "What is a term?" section explaining term boundaries with concrete counter-examples, and clarified when to use has vs contains vs startswith to guide users to the right operator for their use case. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJZX8B71WHSG4F6W3MYH1JY0/ Made-with: Cursor
…essages Users asked how to include the app name (or other custom attributes) in Slack alerts sent by monitors. The existing docs mentioned that enabling Notify by group includes the group value in the message, but there was no practical guidance showing how to use this to include fields like app_name, service_name, or other identifiers. Added a new section "Include custom fields in alert messages" with examples for both threshold monitors (group by the field + Notify by group) and match monitors (use project to select specific fields). Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KK16M61S319S5P7XH4N1MQDV/ Made-with: Cursor
…board element Users expected to resize columns in the table dashboard element but could not find a way to do it. Column resizing is only available in the Query tab (Explore) when the column-per-field view is active, not in dashboard table elements. Added a note pointing users to the Query tab and linking to the relevant section. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJPVFBGJ667NYR3Y13RH9CXN/ Made-with: Cursor
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Islam Shehata <thesollyz@users.noreply.github.com>
The metrics query page mentioned rate and prom::rate functions but did not explain how they handle counter resets, or what cumulative counters are. Users querying cumulative counters that reset due to device restarts or deployments had no guidance on which functions to use or how to reconstruct totals across resets. Added a new section explaining cumulative counter resets, how map rate and align using prom::rate handle them, and how to combine rate with sum to display totals over time windows despite resets. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJ37SHHYDNDW56DFJP40T1BG/ Made-with: Cursor
The Loki endpoint page only showed JavaScript and Python client library examples, which did not help users migrating from an existing Loki deployment. Users with Promtail, Grafana Alloy, or Grafana Agent had no guidance on how to redirect their log streams to Axiom. Added a migration section with configuration examples for Promtail, Grafana Alloy, and Vector. Clarified the Loki HTTP push API path accepted by the endpoint. Added a comparison explaining when to use the Loki endpoint vs the Loki Multiplexer. Updated keywords for discoverability. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHXNCZJJ71XWZAGRCAK9J4EJ/ Made-with: Cursor
The _index field in the Elasticsearch Bulk API request body is ignored by Axiom. The target dataset must be specified in the URL path. This was unclear to users migrating from Elasticsearch who expected to set the index in the request body. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJ23MAYNBZEWQK96MT51F76Y/ Co-authored-by: Cursor <cursoragent@cursor.com>
Users were surprised that downloading query results as CSV only produced 50 entries. Added documentation explaining the default limit and how to increase it up to 50,000 using the limit operator in APL. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHQ68XM9T5H3B1W4E0HF7V84/ Co-authored-by: Cursor <cursoragent@cursor.com>
Multiple users reported unauthorized errors when connecting to Axiom MCP Server despite having valid API keys. Common issues include using the wrong token type, incorrect organization ID, cached credentials, and network restrictions in CI/CD environments. Added troubleshooting section covering these scenarios. Related support tickets: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KJ0RCTNRDG98J54JS8HJVRFH/ - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KH15E24W0Q7AH18XZFKGV3KH/ - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHJCW6DZ3JF40BFCW2WSV8YJ/ Co-authored-by: Cursor <cursoragent@cursor.com>
A user asked whether sending OTEL traces and logs to the same dataset would automatically correlate them. Added a section explaining the recommended approach: use separate datasets, span events for contextual logs, trace_id filtering for cross-dataset correlation, and span links for asynchronous scenarios. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHTXQAWASZFTE5VPPD9A7TVN/ Co-authored-by: Cursor <cursoragent@cursor.com>
A user asked whether data is automatically deleted after the retention period expires or whether manual action is required. Added explicit statement that Axiom automatically deletes expired data and that no manual trimming is needed. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHJ5JSC53HG4TF1JETPRNTS8/ Co-authored-by: Cursor <cursoragent@cursor.com>
A user was blocked on all queries and dashboards due to query limit exceeded errors with no guidance on what to do. Added troubleshooting section explaining what these errors mean, how to check current usage, and how to resolve or prevent them. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KHJK0391TTKF72Q7S56Q3GXT/ Co-authored-by: Cursor <cursoragent@cursor.com>
Users were confused about how to display data from multiple queries in a single table element. The documentation now explains that each table element uses a single query, and to combine multiple queries, users should use the union operator in their APL query. This addresses the limitation where users cannot add multiple separate queries to a single table element, and provides clear guidance on the recommended approach using union. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KBYZE14TFYVCD1SAM39ACDB3/
Users working with Convex DB Actions encountered issues with AI SDK telemetry not being exported because each action runs in an isolated environment. The documentation now includes a dedicated section explaining how to configure Axiom AI SDK for Convex Actions, specifically recommending the use of SimpleSpanProcessor instead of BatchSpanProcessor to ensure traces are exported immediately before the action completes. Related support ticket: - https://app.plain.com/workspace/w_01HA1Z15QQY1X6QR29KFMBMYTH/thread/th_01KBYQ38SW5BBYF8ZXGMM8TNRK/
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.