Item endpoints
REST endpoints for retrieving item metadata, related items, and exclusion checks.
Item endpoints are mounted under /exq/item/ and return metadata about individual media items stored in a collection's SQLite database.
POST /exq/item/base
Returns the basic information needed to display an item: its URI, thumbnail URL, and original media URL.
Request body
{
"media_ids": [42, 17, 830],
"session_info": {
"session": "abc123",
"collection": "my_collection",
"modelId": "model_1"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
media_ids |
list[int] |
Yes | Media IDs to retrieve |
session_info |
SessionInfo |
Yes | Session context |
Response
{
"items": [
{
"id": 42,
"uri": "video/segment_042.mp4",
"thumbnail_url": "https://cdn.example.com/thumbs/segment_042.jpg",
"original_url": "https://cdn.example.com/originals/segment_042.mp4"
}
]
}
POST /exq/item/details
Returns extended metadata for one or more items, including all tag values relevant to the active filters. Used to populate detail panels in the UI.
Request body
{
"media_ids": [42],
"tagset_ids": [1, 3, 5],
"session_info": {
"session": "abc123",
"collection": "my_collection",
"modelId": "model_1"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
media_ids |
list[int] |
Yes | Media IDs to retrieve |
tagset_ids |
list[int] |
Yes | IDs of the tagsets whose values to include |
session_info |
SessionInfo |
Yes | Session context |
Response
Returns base item info plus a tags map keyed by tagset ID:
{
"items": [
{
"id": 42,
"uri": "video/segment_042.mp4",
"thumbnail_url": "https://cdn.example.com/thumbs/segment_042.jpg",
"original_url": "https://cdn.example.com/originals/segment_042.mp4",
"tags": {
"1": ["outdoor", "daylight"],
"3": [2024],
"5": ["sports"]
}
}
]
}
POST /exq/item/related
Returns items that share the same group_id as the requested item. Useful for surfacing video segments from the same shot or sequence.
Request body
{
"media_ids": [42],
"session_info": {
"session": "abc123",
"collection": "my_collection",
"modelId": "model_1"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
media_ids |
list[int] |
Yes | Media IDs to find related items for |
session_info |
SessionInfo |
Yes | Session context |
Response
{
"related": {
"42": [43, 44, 45]
}
}
The response maps each requested media ID to a list of related media IDs. Items without group membership return an empty list.
POST /exq/item/excluded
Checks whether a media item belongs to a group that has been fully excluded by the user. Used by the UI to suppress items that belong to a dismissed sequence.
Request body
{
"media_id": 42,
"excluded_group_ids": [7, 12, 33],
"session_info": {
"session": "abc123",
"collection": "my_collection",
"modelId": "model_1"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
media_id |
integer |
Yes | The media ID to check |
excluded_group_ids |
list[int] |
Yes | Group IDs that the user has excluded |
session_info |
SessionInfo |
Yes | Session context |
Response
{
"excluded": true
}