Skip to main content

Search

Search entities

This endpoint allows searching for entities in the Foundry world based on a query string. Search world entities and compendiums using the native built-in search engine. No third-party modules required. Results are ranked by relevance: exact match, prefix match, substring match, word-prefix match, and subsequence match.

Required scope: search

Parameters

NameTypeRequiredSourceDescription
clientIdstringqueryClient ID for the Foundry world
querystringquerySearch query string (omit to browse all entities matching filter)
filterstringqueryFilter string — simple: filter="Actor"; compound: filter="documentType:Item,subType:weapon". Supported keys: documentType, subType, folder, package, resultType
excludeCompendiumsbooleanqueryExclude compendium entries from results (default: false — compendiums are included by default)
limitnumberqueryMaximum number of results to return (default: 200, max: 500)
minifiedbooleanqueryReturn minimal fields only — uuid, id, name, img, documentType (default: false)
ownedByUserIdstringqueryFilter results to only documents the specified Foundry user (ID or username) has Owner permission on
userIdstringquery, bodyFoundry user ID or username to scope permissions (omit for GM-level access)

Returns

object - Search results containing matching entities

Try It Out

Code Examples

const baseUrl = 'http://localhost:3010';
const path = '/search';
const params = {
clientId: 'fvtt_d3db244ce1d8af0b',
filter: 'documentType:Actor',
excludeCompendiums: 'true'
};
const queryString = new URLSearchParams(params).toString();
const url = `${baseUrl}${path}?${queryString}`;

const response = await fetch(url, {
method: 'GET',
headers: {
'x-api-key': 'your-api-key-here'
}
});
const data = await response.json();
console.log(data);

Response

Status: 200

{
"type": "search-result",
"requestId": "search_1780520764222",
"filter": "documentType:Actor",
"results": [
0: {
"documentType": "Actor",
"folder": null,
"id": "2midVQ1laJFMrN4D",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.2midVQ1laJFMrN4D",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.2midVQ1laJFMrN4D]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
1: {
"documentType": "Actor",
"folder": null,
"id": "IGDNKF9amHdCQYGX",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.IGDNKF9amHdCQYGX",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.IGDNKF9amHdCQYGX]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
2: {
"documentType": "Actor",
"folder": null,
"id": "Q8f1DRjKZJmtZNvD",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.Q8f1DRjKZJmtZNvD",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.Q8f1DRjKZJmtZNvD]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
3: {
"documentType": "Actor",
"folder": null,
"id": "V162ZiBjzf489Ekz",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.V162ZiBjzf489Ekz",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.V162ZiBjzf489Ekz]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
4: {
"documentType": "Actor",
"folder": null,
"id": "Xp4mNa6B0fBeKAAF",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.Xp4mNa6B0fBeKAAF",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.Xp4mNa6B0fBeKAAF]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
5: {
"documentType": "Actor",
"folder": null,
"id": "ZTJRxZIdnhFQalD0",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.ZTJRxZIdnhFQalD0",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.ZTJRxZIdnhFQalD0]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
6: {
"documentType": "Actor",
"folder": null,
"id": "dKQ5TvZ1ySmZ5zC1",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.dKQ5TvZ1ySmZ5zC1",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.dKQ5TvZ1ySmZ5zC1]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
7: {
"documentType": "Actor",
"folder": null,
"id": "haaLIgOLEYGT0nqK",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.haaLIgOLEYGT0nqK",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.haaLIgOLEYGT0nqK]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
8: {
"documentType": "Actor",
"folder": null,
"id": "iOn5ZWzR0Hv1gN06",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.iOn5ZWzR0Hv1gN06",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.iOn5ZWzR0Hv1gN06]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
9: {
"documentType": "Actor",
"folder": null,
"id": "liCyZwJ5BRnryiXU",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.liCyZwJ5BRnryiXU",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.liCyZwJ5BRnryiXU]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
10: {
"documentType": "Actor",
"folder": null,
"id": "mNMNalBcWKhoQ8QE",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.mNMNalBcWKhoQ8QE",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.mNMNalBcWKhoQ8QE]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
11: {
"documentType": "Actor",
"folder": null,
"id": "wZR5R8cIs1dUpKC7",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.wZR5R8cIs1dUpKC7",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.wZR5R8cIs1dUpKC7]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
12: {
"documentType": "Actor",
"folder": null,
"id": "ywz3tLzEpjMCdXhK",
"name": "hook-test-actor",
"package": null,
"packageName": null,
"subType": "base",
"uuid": "Actor.ywz3tLzEpjMCdXhK",
"icon": "icons/svg/mystery-man.svg",
"journalLink": "@UUID[Actor.ywz3tLzEpjMCdXhK]{hook-test-actor}",
"tagline": "Actors Directory",
"formattedMatch": "hook-test-actor",
"resultType": "WorldEntity"
},
13: {
"documentType": "Actor",
"folder": null,
"id": "4f57kTea0R0ZTOta",
"name": "test-perrin (halfling monk)",
"package": null,
"packageName": null,
"subType": "character",
"uuid": "Actor.4f57kTea0R0ZTOta",
"icon": "systems/dnd5e/tokens/heroes/MonkStaff.webp",
"journalLink": "@UUID[Actor.4f57kTea0R0ZTOta]{test-perrin (halfling monk)}",
"tagline": "Actors Directory",
"formattedMatch": "test-perrin (halfling monk)",
"resultType": "WorldEntity"
},
14: {
"documentType": "Actor",
"folder": null,
"id": "3Uhyx1yXkrDR0IKP",
"name": "test-perrin (halfling monk)",
"package": null,
"packageName": null,
"subType": "character",
"uuid": "Actor.3Uhyx1yXkrDR0IKP",
"icon": "systems/dnd5e/tokens/heroes/MonkStaff.webp",
"journalLink": "@UUID[Actor.3Uhyx1yXkrDR0IKP]{test-perrin (halfling monk)}",
"tagline": "Actors Directory",
"formattedMatch": "test-perrin (halfling monk)",
"resultType": "WorldEntity"
},
15: {
"documentType": "Actor",
"folder": null,
"id": "yqVY0l6AY0HDtq7Z",
"name": "Updated Test Actor",
"package": null,
"packageName": null,
"subType": "character",
"uuid": "Actor.yqVY0l6AY0HDtq7Z",
"icon": "systems/dnd5e/tokens/heroes/MonkStaff.webp",
"journalLink": "@UUID[Actor.yqVY0l6AY0HDtq7Z]{Updated Test Actor}",
"tagline": "Actors Directory",
"formattedMatch": "Updated Test Actor",
"resultType": "WorldEntity"
},
16: {
"documentType": "Actor",
"folder": null,
"id": "u3iSEGYdk5UNZy7X",
"name": "Updated Test Actor",
"package": null,
"packageName": null,
"subType": "character",
"uuid": "Actor.u3iSEGYdk5UNZy7X",
"icon": "systems/dnd5e/tokens/heroes/MonkStaff.webp",
"journalLink": "@UUID[Actor.u3iSEGYdk5UNZy7X]{Updated Test Actor}",
"tagline": "Actors Directory",
"formattedMatch": "Updated Test Actor",
"resultType": "WorldEntity"
}
]
}