Appearance
Content Assets query
The Content Assets list has a query bar for every question the filter dropdowns can't answer. Open it with Advanced filter (the funnel) — the Query field sits at the bottom of the panel, and nothing runs until you click Apply filters.
A query combines the dropdowns you've set with what you type: both apply. Under Executed query in the same panel you can see everything that is running.
status=error language:de
deliveredCount=0 OR lastDeliveredAt<2026-09-01
data.brand=Acme AND -data.descriptionSyntax at a glance
| You write | Matches assets where … |
|---|---|
field:value | the field contains value, ignoring case |
field=value | the field is exactly value |
field!=value | the field is anything but value |
field>value, >=, <, <= | the field is greater / less than value (numbers and dates) |
field~pattern | the field matches a regular expression |
field:[a,b,c] | the field is any of the listed values |
field | the field is present |
-field | the field is absent |
A B or A AND B | both apply |
A OR B | either applies |
-A or NOT A | A does not apply |
( … ) | groups conditions |
AND, OR and NOT can be written in any case. AND binds tighter than OR, so a OR b c means a OR (b AND c) — add parentheses when you mean something else.
As you type, the query bar suggests field names, and for fields with a fixed set of values (status, language, source, …) the values too. Press Tab to accept a suggestion.
Operators
Contains: :
field:value matches when the field contains the text, ignoring case. language:de finds de-DE, de-AT and de-CH; data.title:shirt finds "T-Shirt" and "Shirts".
That is convenient for searching but loose for exact values, so the query bar points out each : it finds and offers to change it to =. On number fields : and = give the same result.
Exact: = and !=
field=value is an exact, case-sensitive match. Use it for ids and fixed values: status=delivered, objectUid=SKU-1042.
For a data.* field a numeric-looking value matches whether your data stores it as a number or as text, so data.gtin=4006381333931 works either way. A value with a leading zero (data.sku=0100) is matched as text only, so it never finds a different item. Put the value in quotes to force text: data.sku="4006381333931".
Comparisons: >, >=, <, <=
Compare numbers and dates: wordCount>=150, finishedAt<2026-09-01.
Write dates as YYYY-MM-DD, optionally with a time (2026-09-01T14:30). They are read in your browser's time zone; add Z for UTC (2026-09-01T00:00Z).
Two comparisons on the same field make a range: wordCount>=100 wordCount<300.
Regular expressions: ~
field~pattern matches a regular expression, ignoring case: data.title~^Super finds titles starting with "super". Write field~/pattern/ for a case-sensitive match.
Lists: field:[a,b]
status:[error,rejected] matches either value exactly. This is the one use of : the query bar does not suggest changing.
Present and absent
A field name on its own matches assets where the field is present; with a leading - it matches where it is absent:
-objectUid assets not linked to an object
data.discount objects that carry a discount field
-data.description objects with no description in your dataValues
- Text with spaces or special characters goes in quotes:
data.name="Müller & Co". true,falseandnullare values:data.discontinued=true.{}is an empty object:data.features!={}.- Field names that contain
:or other special characters go in quotes as well:"data.addr:city"=Berlin.
Fields
Asset fields
| Field | Type | What it is |
|---|---|---|
status | text | Status of the latest version: success, error, delivered or rejected (see below) |
language | text | Language code, e.g. de-DE |
objectUid | text | uid of the object the asset was synthesized from |
dataPoolId | text | The data pool the object came from |
source | text | What wrote the latest version: llm (AI writer), ruleset (deterministic writer), import (imported) or composite (composed) |
engineProfile | text | Engine profile of the latest version: core, agent or reason |
params | list | Parameters the asset was synthesized with |
finishedAt | date | When the latest version was finished |
qaRulesVersion | text | QA rules version that checked the latest version |
platformVersion | text | axite platform version that synthesized the latest version |
Status values:
success— synthesized and checked, not deliverederror— synthesis faileddelivered— sent to your delivery targetrejected— held back by a QA Gate or Guardrail Gate in the workflow
Quality and length
All of these describe the latest version.
| Field | Type | What it is |
|---|---|---|
qaScore | number | QA score, stored from 0 to 1: write qaScore<0.7, not qaScore<70 |
guardrailScore | number | Guardrail score as stored. Use the Guardrail Score filter in the panel for score bands |
errorCount | number | Number of QA error findings |
warningCount | number | Number of QA warning findings |
wordCount | number | Words in the text |
characterCount | number | Characters in the text |
sentenceCount | number | Sentences in the text |
errorCount counts QA findings. Versions that failed to synthesize are counted by erroredCount (below).
Older assets may have no length counts yet. They don't match any length condition, so wordCount<50 leaves them out instead of treating them as short.
Version history
Every field above describes an asset's latest version. These describe all of its versions, so you can ask about an asset's whole history — for example, which assets have had no delivered version since a date.
| Field | Type | What it is |
|---|---|---|
versionCount | number | Versions stored for the asset, any status |
deliveredCount | number | Versions that were delivered |
lastDeliveredAt | date | When a version was last delivered |
rejectedCount | number | Versions that were rejected |
lastRejectedAt | date | When a version was last rejected |
successCount | number | Versions that finished with status success |
lastSuccessAt | date | When a version last finished with status success |
erroredCount | number | Versions whose synthesis failed |
lastErroredAt | date | When a version last failed |
versionHistoryComplete | yes / absent | Present when the asset's whole history is recorded (see below) |
Every count is a number, including 0. A last…At date exists only if that status ever happened, so lastDeliveredAt<2026-09-01 means "delivered, but not since 1 September" and leaves out assets that were never delivered. To include those, add deliveredCount=0:
deliveredCount=0 OR lastDeliveredAt<2026-09-01Use deliveredCount=0, not -lastDeliveredAt, to ask for "never delivered".
The Last delivered filter in the panel covers the three most common cases (never delivered; not in the last 7, 30 or 90 days). Use the query bar for everything else.
Only assets with a complete history are included
A query that uses any version-history field only returns assets whose whole history is recorded (versionHistoryComplete). Assets created before history recording started on your engine are left out, because their counts would start partway through. An asset delivered six months ago and rejected today would otherwise show as never delivered.
The history of older assets is filled in once, after this feature is released. Until that has reached your engine, these filters under-count. They never include an asset by mistake, but they can miss some. The Last delivered filter shows how many assets it left out. Afterwards, version-history queries cover every asset.
To see which assets are not covered yet, query -versionHistoryComplete. Combining it with a version-history field (for example -versionHistoryComplete AND deliveredCount=0) always returns nothing.
Your data: data.*
Any field of the object an asset was synthesized from can be queried with the data. prefix and its path: data.brand, data.price, data.dimensions.width.
data.brand=Acme
data.price>=100
data.category:shoes -data.descriptionFields you've pinned as columns in the data pool also show up in the suggestions under their own name. You can write them without data. (brand=Acme).
data.* conditions are looked up in your data pools first, then matched to assets. Three things follow from that:
- Combine them with
AND, freely.data.brand=Acme AND status=errorworks. - Don't mix them with asset fields inside one
OR. Indata.brand=Acme OR status=error, thedata.brandpart can't match. Write two separate queries instead. - Up to 5,000 objects per data pool. If more objects match, you'll see a warning that the results may be incomplete. Narrow the query, or pick a data pool in the panel.
If a data.* condition matches no objects, a message says so. That is usually a misspelled field name, or a value stored as text that needs quotes (data.sku="123").
Examples
Errors and rejections in German
(status=error OR status=rejected) AND language:deShort texts with QA errors
wordCount<50 AND errorCount>0Synthesized before a date, to re-run with the latest setup
finishedAt<2026-09-01AI writer content on the Reason profile
source=llm AND engineProfile=reasonNo delivered version since 1 September, or never delivered
deliveredCount=0 OR lastDeliveredAt<2026-09-01Tried more than once, never delivered
deliveredCount=0 AND versionCount>1Rejected again and again, not delivered since June
rejectedCount>=3 AND lastDeliveredAt<2026-06-01Was delivered once, latest version is not
deliveredCount>0 AND status!=deliveredFailed at least once this month
lastErroredAt>=2026-10-01History not recorded yet
-versionHistoryCompleteOne brand, no description in the data yet
data.brand=Acme AND -data.descriptionActing on a query
Synthesize Filtered and Export act on exactly what the list shows: the query plus every filter you've set. Version-history queries keep the same complete-history restriction there, so a bulk synthesis never picks up assets whose history isn't recorded.
The query is kept in the page address, so you can bookmark or share a filtered view.