Skip to content

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.description

Syntax at a glance ​

You writeMatches assets where …
field:valuethe field contains value, ignoring case
field=valuethe field is exactly value
field!=valuethe field is anything but value
field>value, >=, <, <=the field is greater / less than value (numbers and dates)
field~patternthe field matches a regular expression
field:[a,b,c]the field is any of the listed values
fieldthe field is present
-fieldthe field is absent
A B or A AND Bboth apply
A OR Beither applies
-A or NOT AA 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 data

Values ​

  • Text with spaces or special characters goes in quotes: data.name="Müller & Co".
  • true, false and null are 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 ​

FieldTypeWhat it is
statustextStatus of the latest version: success, error, delivered or rejected (see below)
languagetextLanguage code, e.g. de-DE
objectUidtextuid of the object the asset was synthesized from
dataPoolIdtextThe data pool the object came from
sourcetextWhat wrote the latest version: llm (AI writer), ruleset (deterministic writer), import (imported) or composite (composed)
engineProfiletextEngine profile of the latest version: core, agent or reason
paramslistParameters the asset was synthesized with
finishedAtdateWhen the latest version was finished
qaRulesVersiontextQA rules version that checked the latest version
platformVersiontextaxite platform version that synthesized the latest version

Status values:

  • success — synthesized and checked, not delivered
  • error — synthesis failed
  • delivered — sent to your delivery target
  • rejected — held back by a QA Gate or Guardrail Gate in the workflow

Quality and length ​

All of these describe the latest version.

FieldTypeWhat it is
qaScorenumberQA score, stored from 0 to 1: write qaScore<0.7, not qaScore<70
guardrailScorenumberGuardrail score as stored. Use the Guardrail Score filter in the panel for score bands
errorCountnumberNumber of QA error findings
warningCountnumberNumber of QA warning findings
wordCountnumberWords in the text
characterCountnumberCharacters in the text
sentenceCountnumberSentences 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.

FieldTypeWhat it is
versionCountnumberVersions stored for the asset, any status
deliveredCountnumberVersions that were delivered
lastDeliveredAtdateWhen a version was last delivered
rejectedCountnumberVersions that were rejected
lastRejectedAtdateWhen a version was last rejected
successCountnumberVersions that finished with status success
lastSuccessAtdateWhen a version last finished with status success
erroredCountnumberVersions whose synthesis failed
lastErroredAtdateWhen a version last failed
versionHistoryCompleteyes / absentPresent 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-01

Use 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.description

Fields 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=error works.
  • Don't mix them with asset fields inside one OR. In data.brand=Acme OR status=error, the data.brand part 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:de

Short texts with QA errors

wordCount<50 AND errorCount>0

Synthesized before a date, to re-run with the latest setup

finishedAt<2026-09-01

AI writer content on the Reason profile

source=llm AND engineProfile=reason

No delivered version since 1 September, or never delivered

deliveredCount=0 OR lastDeliveredAt<2026-09-01

Tried more than once, never delivered

deliveredCount=0 AND versionCount>1

Rejected again and again, not delivered since June

rejectedCount>=3 AND lastDeliveredAt<2026-06-01

Was delivered once, latest version is not

deliveredCount>0 AND status!=delivered

Failed at least once this month

lastErroredAt>=2026-10-01

History not recorded yet

-versionHistoryComplete

One brand, no description in the data yet

data.brand=Acme AND -data.description

Acting 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.