Skip to main content
filters decides what the spec contains: which collections and globals are documented, which Payload-internal collections show up, which extra endpoint groups are generated, and which individual operations are dropped. It’s one flat object.

Choosing entities with include and exclude

These two lists pick which collections and globals are documented. Each entry is an EntityMatcher — one of three shapes: Two rules govern how the lists combine:
  • include is an allowlist. Leave it empty and everything is documented; add anything and only matching entities survive.
  • exclude always wins. An entity matching both lists is dropped.

Document only a few collections

Once include has entries, everything else stays out of the spec:
payload.config.ts

Document everything except a few entities

payload.config.ts

Match a group of slugs with a regular expression

The pattern is tested against the slug. This keeps every collection whose slug starts with public- and drops everything else:
payload.config.ts
Common patterns, for reference:
  • /^public-/ — slug starts with public-
  • /-draft$/ — slug ends with -draft
  • /^(posts|pages)$/ — slug is exactly posts or pages
  • /internal/i — slug contains internal, case-insensitive

Disambiguate a collection from a global

A plain string matches any entity with that slug. When a collection and a global share one, use { kind, slug } to target just one of them:
payload.config.ts

Mix them

include narrows the set first, then exclude removes from what’s left:
payload.config.ts
include and exclude only apply to your own collections and globals. Hidden and Payload-internal collections are governed by includeHidden and includeSystem, which run first — adding payload-jobs to include won’t surface it unless includeSystem is on.

Dropping individual operations

include / exclude work at the entity level. To remove specific operations — one method on one collection, every DELETE, anything under a path prefix — use excludeOperations or excludeWhen.

excludeOperations

Each rule is a set of conditions. Within one rule, every field you set must match (AND). Across rules, an operation is dropped if any rule matches it (OR). A field you leave out matches anything.
payload.config.ts

excludeWhen

For logic that doesn’t fit a rule, excludeWhen is the escape hatch. It runs after excludeOperations and receives the method, path, slug, and kind of every operation; return true to drop it:
payload.config.ts
Filters only remove things from the document. To change how a kept operation is marked (public vs. secured), see Security marking.