Kaltura eSearch API¶
Kaltura's eSearch API, powered by Elasticsearch, provides flexible full-text search across media entries, categories, users, captions, custom metadata, cue points, and more — all in a single API call.
Base URL: https://www.kaltura.com/api_v3
Auth: KS passed as ks parameter in POST form data (see Session Guide)
Format: Form-encoded POST (application/x-www-form-urlencoded), format=1 for JSON responses
1. When to Use¶
- Content discovery platforms need fast, full-text search across video libraries with faceted filtering by media type, tags, categories, and custom metadata.
- Enterprise knowledge management requires searching inside captions, transcripts, and cue points to find the exact moment a topic is discussed.
- AI-powered content workflows use eSearch aggregations and cross-entity queries to analyze content distribution, identify gaps, and surface relevant media.
- Custom portal and app builders implement search-as-you-type experiences with ranked results, highlighted matches, and paginated browsing.
2. Prerequisites¶
- Kaltura Session (KS): USER KS (type=0) is sufficient for search operations; ADMIN KS (type=2) for searching across all content regardless of ownership. See Session Guide for generation methods.
- Partner ID and API credentials: Available from your Kaltura Management Console (KMC) under Settings > Integration Settings.
- Service URL: Set
$KALTURA_SERVICE_URLto your account's regional endpoint (default:https://www.kaltura.com/api_v3). - eSearch enabled: eSearch (Elasticsearch-based) is enabled by default on all Kaltura accounts. Content is indexed automatically upon creation and update.
3. API Endpoint & Structure¶
- Service:
elasticsearch_esearch - Primary Actions:
searchEntry: Search across media entries and their related data.searchCategory: Search category objects.searchUser: Search user objects.searchGroup: Search group objects.
- Endpoint Format:
$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/{action} - HTTP Method:
POST - Data Format:
application/x-www-form-urlencoded(Form Data). Nested parameters use standard array notation (e.g.,param[key][subkey]=value).
4. Authentication¶
Include the ks as part of the POST form data:
5. Core Request Parameters & Objects¶
Requests are built using specific Kaltura objects passed as form parameters.
ks(String): Your valid Kaltura Session string.format(Integer): Response format. Use1for JSON (recommended).searchParams(Object): The primary container for your search criteria. The specific type depends on the action (e.g.,KalturaESearchEntryParamsforsearchEntry).searchOperator(Object, e.g.,KalturaESearchEntryOperator): Defines the core search logic.operator(EnumKalturaESearchOperatorType): How to combine thesearchItems.1(AND_OP): All conditions must be met.2(OR_OP): At least one condition must be met.3(NOT_OP): Excludes items matching the nested conditions (typically used within an AND/OR operator).
searchItems(Array): An array of one or more Search Item objects (see Section 7) defining the specific criteria.
orderBy(ObjectKalturaESearchOrderBy, optional): Defines sorting.orderItems(Array ofKalturaESearchOrderByItem): Each item specifies:sortField(Enum, e.g.,KalturaESearchEntryOrderByFieldName): Field likecreated_at,plays,name,last_played_at.sortOrder(EnumKalturaESearchSortOrder):ascordesc.
aggregations(ObjectKalturaESearchAggregation, optional): Defines aggregations (see Example G in Section 9).aggregations(Array ofKalturaESearchAggregationItem): Each item specifies:fieldName(Enum, e.g.,KalturaESearchEntryAggregateByFieldName): Field to group by, likemedia_type.size(Integer): Max number of aggregation buckets to return.
pager(ObjectKalturaPager, optional): Controls pagination.pageIndex(Integer): The page number to retrieve (starts at 1).pageSize(Integer): Number of results per page (default 30, max 500).
6. Search Item (searchItems) Deep Dive¶
These objects define what you're searching for within the searchOperator.searchItems array.
Common Search Item Types:
KalturaESearchUnifiedItem: Searches across multiple standard fields (name, description, tags, captions, etc.). Ideal for general keyword searches.KalturaESearchEntryItem: Targets specific fields within aKalturaMediaEntryorKalturaBaseEntry.KalturaESearchCaptionItem: Searches specifically within caption content.KalturaESearchEntryMetadataItem: Searches within custom metadata fields linked to entries.KalturaESearchCuePointItem: Searches within data fields of cue points linked to entries.- (Similar items exist for Category, User, Group searches, e.g.,
KalturaESearchCategoryItem)
Key Properties for Search Items:
objectType(String): Required. The specific Kaltura class name (e.g.,"KalturaESearchUnifiedItem").searchTerm(String): The keyword, phrase, or value to search for. Ignored ifitemTypeisEXISTSorRANGE.itemType(EnumKalturaESearchItemType): Required. Defines the matching strategy:1(EXACT_MATCH): Matches the exact term (case-insensitive, tokenized).2(PARTIAL): Allows partial word matches and utilizes synonym expansion (e.g., 'delicious' finds 'yummy').3(STARTS_WITH): Matches terms that begin with thesearchTerm.4(EXISTS): Checks if the specifiedfieldNamehas any value.5(RANGE): Performs a range query using therangeproperty.
fieldName(Enum): Required for non-Unified items. Specifies the target field (e.g.,KalturaESearchEntryFieldName::NAME,KalturaESearchCaptionFieldName::CONTENT).addHighlight(Boolean, optional): Defaultfalse. Set totrueto receive highlighted snippets in the response showing where matches occurred.range(ObjectKalturaESearchRange): Required ifitemTypeisRANGE. Defines the boundaries:greaterThanOrEqual(Integer)lessThanOrEqual(Integer)greaterThan(Integer)lessThan(Integer)- (Use epoch timestamps in seconds for date fields like
created_at).
metadataProfileId(Integer, for Metadata items): ID of the metadata profile to search within.xpath(String, optional for Metadata items): Targets a specific XML path within the metadata. If omitted, searches all fields in the profile.
7. API Response Format (JSON)¶
The API typically returns a JSON object structured as follows:
totalCount(Integer): The total number of results matching the query, irrespective of pagination.objects(Array): An array where each element represents a matched item (e.g., an entry result).object(Object): The core Kaltura object itself (e.g.,KalturaMediaEntry,KalturaCategory) containing its standard properties (id,name,description,createdAt, etc.).highlight(Array, optional): An array ofKalturaESearchHighlightobjects, present ifaddHighlightwas requested.fieldName(String): The field where a match was found (e.g.,"name","description","captions_content").hits(Array): An array ofKalturaStringobjects, each containing:value(String): The text snippet with the match highlighted via<em>...</em>tags.
itemsData(Array, optional): Contains more granular results when searching within nested data like captions or metadata. Each element is aKalturaESearchItemDataResult.totalCount(Integer): Number of specific items found (e.g., matching caption lines).items(Array): Array of specific data items (e.g.,KalturaESearchCaptionItemData,KalturaESearchMetadataItemData). These objects contain details like the specific caption line text, start/end times, or metadata field values. They might also contain their own nestedhighlightarray.itemsType(String): Indicates the type of items (e.g.,"caption","metadata").
aggregations(Array, optional): Present if aggregations were requested. ContainsKalturaESearchAggregationResponseItemobjects.fieldName(String): The field used for aggregation (e.g.,"media_type").buckets(Array): Array ofKalturaESearchAggregationBucketobjects.value(String): The specific value for the bucket (e.g.,"1"for video media type).count(Integer): The number of results falling into this bucket.
8. Capabilities & Scenarios (with Curl Examples)¶
Examples pipe to jq for readability.
A. Basic Unified Keyword Search with Highlighting * Goal: Find entries matching "visual studio code" anywhere, show highlights. * Capability: Unified search, Highlighting, Partial/Synonym matching. * Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchUnifiedItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=visual studio code" \
-d "searchParams[searchOperator][searchItems][0][itemType]=2" \
-d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
Response:
{
"totalCount": 42,
"objects": [
{
"object": { "id": "1_abc123", "name": "...", "objectType": "KalturaMediaEntry" },
"highlight": [{ "fieldName": "name", "hits": "<em>search term</em> in title" }],
"itemsData": [...]
}
],
"objectType": "KalturaESearchEntryResponse"
}
B. Field-Specific Search (Entry Name, Starts With) * Goal: Find entries where the name starts with "AI Hacker". * Capability: Field-specific search, Starts With matching. * Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=AI Hacker" \
-d "searchParams[searchOperator][searchItems][0][itemType]=3" \
-d "searchParams[searchOperator][searchItems][0][fieldName]=name" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
C. Multi-Language Caption Search * Goal: Find entries with the Chinese word 食谱 ("recipe") in captions. * Capability: Multi-language, Field-specific search. * Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchCaptionItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=食谱" \
-d "searchParams[searchOperator][searchItems][0][itemType]=2" \
-d "searchParams[searchOperator][searchItems][0][fieldName]=content" \
-d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
D. Custom Metadata Search (Specific Field)
* Goal: Find entries where metadata profile ID 653 has the field /metadata/Field1 exactly matching "recipe".
* Capability: Metadata search, XPath targeting, Exact Match.
* Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryMetadataItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=recipe" \
-d "searchParams[searchOperator][searchItems][0][itemType]=1" \
-d "searchParams[searchOperator][searchItems][0][metadataProfileId]=653" \
-d "searchParams[searchOperator][searchItems][0][xpath]=/*[local-name()='metadata']/*[local-name()='Field1']" \
-d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
E. Complex Logic (AND/NOT) * Goal: Find entries with "strawberry" in the name AND which do NOT have "adding sugar" in the cue point text. * Capability: Complex logic operators, Field-specific search, Cue point search. * Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
# Main AND operator combines two items:
-d "searchParams[searchOperator][operator]=1" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
# Item 0: 'strawberry' in name
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
-d "searchParams[searchOperator][searchItems][0][itemType]=2" \
-d "searchParams[searchOperator][searchItems][0][fieldName]=name" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=strawberry" \
# Item 1: Nested NOT operator
-d "searchParams[searchOperator][searchItems][1][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[searchOperator][searchItems][1][operator]=3" \
# Item 1.0 (inside NOT): 'adding sugar' in cue point text
-d "searchParams[searchOperator][searchItems][1][searchItems][0][objectType]=KalturaESearchCuePointItem" \
-d "searchParams[searchOperator][searchItems][1][searchItems][0][itemType]=1" \
-d "searchParams[searchOperator][searchItems][1][searchItems][0][fieldName]=text" \
-d "searchParams[searchOperator][searchItems][1][searchItems][0][searchTerm]=adding sugar" \
# End searchParams object
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
F. Date Range Search * Goal: Find entries created between Jan 1, 2024 (1704067200) and Feb 1, 2024 (1706745600). * Capability: Range searching on date fields. * Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
-d "searchParams[searchOperator][searchItems][0][itemType]=5" \
-d "searchParams[searchOperator][searchItems][0][fieldName]=created_at" \
-d "searchParams[searchOperator][searchItems][0][range][objectType]=KalturaESearchRange" \
-d "searchParams[searchOperator][searchItems][0][range][greaterThanOrEqual]=1704067200" \
-d "searchParams[searchOperator][searchItems][0][range][lessThan]=1706745600" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "format=1" | jq .
G. Aggregation & Sorting
* Goal: Find "visual studio code", aggregate by media_type, sort by last_played_at (desc).
* Capability: Aggregation, Sorting.
* Curl:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchUnifiedItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=visual studio code" \
-d "searchParams[searchOperator][searchItems][0][itemType]=2" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "searchParams[aggregations][0][objectType]=KalturaESearchEntryAggregationItem" \
-d "searchParams[aggregations][0][fieldName]=media_type" \
-d "searchParams[aggregations][0][size]=10" \
-d "searchParams[orderBy][orderItems][0][objectType]=KalturaESearchOrderByItem" \
-d "searchParams[orderBy][orderItems][0][sortField]=last_played_at" \
-d "searchParams[orderBy][orderItems][0][sortOrder]=desc" \
-d "format=1" | jq .
9. Advanced Topics & Use Cases¶
- Aggregations (
searchParams[aggregations]):- Use Case: Get a summary view without retrieving all results, e.g., "Show me the count of videos vs. images matching 'tutorial'".
- How: Specify the field (e.g.,
KalturaESearchEntryAggregateByFieldName::MEDIA_TYPE) in aKalturaESearchEntryAggregationItemwithin thesearchParams. - Response: The
aggregationsarray in the response will contain buckets with counts for each media type found.
-
Searching Different Object Types:
- Use Case: Find categories tagged "Education" or users named "John Doe".
- How: Use the appropriate action (
searchCategory,searchUser,searchGroup) and the correspondingsearchParamstype (KalturaESearchCategoryParams,KalturaESearchUserParams,KalturaESearchGroupParams). The structure ofsearchOperatorandsearchItemsremains similar, but you use object-specific field names (e.g.,KalturaESearchCategoryFieldName::TAGS,KalturaESearchUserFieldName::FULL_NAME).
searchCategory example:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchCategory" \ -d "ks=$KALTURA_KS" \ -d "format=1" \ -d "searchParams[objectType]=KalturaESearchCategoryParams" \ -d "searchParams[searchOperator][objectType]=KalturaESearchCategoryOperator" \ -d "searchParams[searchOperator][operator]=1" \ -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchCategoryItem" \ -d "searchParams[searchOperator][searchItems][0][fieldName]=name" \ -d "searchParams[searchOperator][searchItems][0][itemType]=2" \ -d "searchParams[searchOperator][searchItems][0][searchTerm]=Education"searchUser example:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchUser" \ -d "ks=$KALTURA_KS" \ -d "format=1" \ -d "searchParams[objectType]=KalturaESearchUserParams" \ -d "searchParams[searchOperator][objectType]=KalturaESearchUserOperator" \ -d "searchParams[searchOperator][operator]=1" \ -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchUserItem" \ -d "searchParams[searchOperator][searchItems][0][fieldName]=full_name" \ -d "searchParams[searchOperator][searchItems][0][itemType]=2" \ -d "searchParams[searchOperator][searchItems][0][searchTerm]=John"searchGroup example:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchGroup" \ -d "ks=$KALTURA_KS" \ -d "format=1" \ -d "searchParams[objectType]=KalturaESearchGroupParams" \ -d "searchParams[searchOperator][objectType]=KalturaESearchGroupOperator" \ -d "searchParams[searchOperator][operator]=1" \ -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchGroupItem" \ -d "searchParams[searchOperator][searchItems][0][fieldName]=screen_name" \ -d "searchParams[searchOperator][searchItems][0][itemType]=2" \ -d "searchParams[searchOperator][searchItems][0][searchTerm]=Engineering"All four actions (
searchEntry,searchCategory,searchUser,searchGroup) return the same response structure:{ objects: [...], totalCount, objectType }. Each object is wrapped in{ object, itemsData, highlight }. * Nested Queries: * Use Case: Combining complex AND/OR/NOT logic as shown in Scenario E. * How: Place aKalturaESearchEntryOperator(or similar) within thesearchItemsarray of another operator. This allows nesting conditions (e.g.,A AND (B OR (NOT C))).
10. Edge Cases & Best Practices¶
- 10,000 Result Limit: Elasticsearch enforces a 10K result cap (500/page x 20 pages max). To traverse larger result sets, use
KalturaESearchRangeoncreated_atwith scroll-forward pagination — move the date window after each 10K batch. - Large Result Sets: Always use the
pagerparameter (pageIndex,pageSize) to retrieve results in manageable chunks. Iterate through pages by incrementingpageIndexuntil the number of returned objects is less thanpageSizeor zero. - Highlighting Context: Remember that highlights (
<em>tags) are embedded in the text. You might need to parse or display this HTML carefully. TheitemsDataarray provides more context for matches in captions or metadata than the top-levelhighlightarray. - Partial vs. Exact Match:
PARTIAL(itemType=2) is powerful due to synonyms but might return less precise results thanEXACT_MATCH(itemType=1). Choose based on the desired recall vs. precision. UseignoreSynonym=trueinsearchParamsto disable synonym expansion if needed. - NOT Operator Shorthand: Use the
!prefix infreeText(e.g.,searchTerm=!excluded) to exclude matches. For structured queries, useKalturaESearchOperatorTypewithNOT_OP(3). - Performance: Unified searches (
KalturaESearchUnifiedItem) are convenient but can be slower than targeted searches using specificfieldNames (likeNAMEorCAPTIONS_CONTENT) because they query more fields. Optimize by specifying fields when possible. - Schema Reference: The Kaltura API schema (XML) is the definitive source for all object structures, properties, enums, and their exact names. Refer to it frequently.
11. Key Objects & Enums Quick Reference¶
- Params:
KalturaESearchEntryParams,KalturaESearchCategoryParams,KalturaESearchUserParams - Operator:
KalturaESearchEntryOperator(and variants) - Items:
KalturaESearchUnifiedItem,KalturaESearchEntryItem,KalturaESearchCaptionItem,KalturaESearchEntryMetadataItem,KalturaESearchCuePointItem - Response:
KalturaESearchEntryResponse(and variants),KalturaESearchEntryResult(and variants),KalturaESearchHighlight,KalturaESearchItemDataResult,KalturaESearchAggregationResponse
Entry Field Names (KalturaESearchEntryFieldName)¶
Use these values in the fieldName property of KalturaESearchEntryItem:
| Value | Description |
|---|---|
id |
Entry ID |
name |
Entry display name |
description |
Entry description |
tags |
Entry tags |
admin_tags |
Admin-only tags |
reference_id |
External reference ID |
credit |
Credit/attribution text |
site_url |
Associated site URL |
created_at |
Creation timestamp (use RANGE itemType) |
updated_at |
Last update timestamp (use RANGE itemType) |
last_played_at |
Last playback timestamp (use RANGE itemType) |
start_date |
Scheduling start date |
end_date |
Scheduling end date |
media_type |
Media type (1=video, 2=image, 5=audio) |
entry_type |
Entry type (1=media, 7=live, etc.) |
moderation_status |
Moderation status value |
creator_kuser_id |
Creator user ID |
kuser_id |
Owner user ID |
plays |
Total play count (use RANGE for numeric filtering) |
votes |
Vote count |
display_in_search |
Search visibility (0=none, 1=partner, 2=network) |
parent_id |
Parent entry ID (for clips/children) |
root_id |
Root entry ID |
captions_content |
Full-text search within caption content |
conversion_profile_id |
Conversion profile ID |
access_control_id |
Access control profile ID |
redirect_entry_id |
Redirect target entry ID |
recorded_entry_id |
Associated recording entry ID |
template_entry_id |
Template entry ID |
is_live |
Whether entry is currently live |
is_quiz |
Whether entry is a quiz |
entitled_kusers_edit |
Users entitled to edit |
entitled_kusers_publish |
Users entitled to publish |
entitled_kusers_view |
Users entitled to view |
Caption Field Names (KalturaESearchCaptionFieldName)¶
Use these values in the fieldName property of KalturaESearchCaptionItem:
| Value | Description |
|---|---|
content |
Caption/transcript text content |
caption_asset_id |
Caption asset ID |
label |
Caption label/display name |
language |
Caption language code |
start_time |
Caption line start time (use RANGE) |
end_time |
Caption line end time (use RANGE) |
Order-By Field Names (KalturaESearchEntryOrderByFieldName)¶
Use these values in the sortField property of KalturaESearchOrderByItem:
| Value | Description |
|---|---|
created_at |
Creation date |
updated_at |
Last update date |
name |
Alphabetical by name |
plays |
Total play count |
plays_last_1_day |
Plays in last 24 hours |
plays_last_7_days |
Plays in last 7 days |
plays_last_30_days |
Plays in last 30 days |
views |
Total view count |
views_last_1_day |
Views in last 24 hours |
views_last_30_days |
Views in last 30 days |
rank |
Relevance/ranking score |
start_date |
Scheduling start date |
end_date |
Scheduling end date |
last_played_at |
Last playback date |
12. Error Handling¶
- Check the HTTP status code first.
- If the status is not 200, parse the JSON error response. Key fields are usually:
code: A string identifier for the error (e.g.,ESEARCH_SERVICE_DOWN,INVALID_KS).message: A human-readable description of the error.
- Common eSearch Errors:
ESEARCH_SERVICE_DOWN: The search service is temporarily unavailable. Consider retrying.ELASTIC_SEARCH_QUERY_NOT_VALID: Check the syntax and structure of yoursearchParams.PERMISSION_READ_ELASTIC_SEARCH_NOT_ALLOWED: Theksused does not have the necessary permissions.
- Implement logging for errors to aid debugging.
Retry strategy: For transient errors (HTTP 5xx, ESEARCH_SERVICE_DOWN, timeouts), retry with exponential backoff: 1s, 2s, 4s, with jitter, up to 3 retries. For client errors (INVALID_KS, ELASTIC_SEARCH_QUERY_NOT_VALID, permission errors), fix the request before retrying — these will not resolve on their own.
13. Related Guides¶
- Session Guide — Generate the KS required for all eSearch calls
- AppTokens — Secure KS generation for production integrations
- Upload & Delivery — Upload content that becomes searchable via eSearch
- Player Embed — Embed search results for playback
- REACH — Enrichment services: captions, metadata, tagging, and more (improves search quality)
- AI Genie — Conversational AI search (uses eSearch internally for RAG)
- Multi-Stream — Search for parent entries; use
parentEntryIdEqualfilter to find child entries - Webhooks — Trigger notifications based on content events (search results inform webhook conditions)
- Categories & Access Control API — Category-based filtering and entitlements that affect search result visibility
- Custom Metadata API — Custom metadata schemas searchable via
KalturaESearchEntryMetadataItem - Captions & Transcripts API — Caption assets searchable via
KalturaESearchCaptionItem - API Getting Started — Foundation guide covering content model and API patterns
- Syndication — Search for entries to include in syndication feeds
- Cue Points & Interactive Video — Cue point search with
KalturaESearchCuePointItem(12 searchable fields: text, tags, question, answers, type)