← Back to index

Search APIs

POST /api/v1/search/smart

Auth: Required Scope: file-level

Semantic vector search using EmbeddingGemma-300m. Generates a query embedding via EmbeddingGemma (port 11436), then searches pgvector story_parent and llm_parent chunks by cosine similarity.

Request Parameters

Field Type Required Default Description
uuid string Yes — File UUID to search within
query string Yes — Search text
page integer No 1 Page number
page_size integer No 5 Items per page

Example

curl -s -X POST "$API/api/v1/search/smart" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $JWT" \
  -d '{"uuid": "'"$FILE_UUID"'", "query": "Audrey Hepburn"}'

Response (200)

{
  "query": "Audrey Hepburn",
  "results": [
    {
      "parent_id": 12345,
      "start_time": 299.0,
      "end_time": 300.0,
      "summary": "[299s-300s, 1s] Cast: Audrey Hepburn. Total: 1 lines, 5 words...",
      "similarity": 0.72
    }
  ],
  "strategy": "semantic_vector_search"
}

POST /api/v1/search/universal

Auth: Required Scope: file-level

Multi-type BM25 full-text search across chunks, frames, and persons. Uses PostgreSQL tsvector.

Request Parameters

Field Type Required Default Description
query string Yes — Search text
uuid string No — Restrict to specific file
types string[] No ["chunk","frame","person"] Search types
page integer No 1 Page number
page_size integer No 20 Items per page

Example

curl -s -X POST "$API/api/v1/search/universal" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $JWT" \
  -d '{"uuid": "'"$FILE_UUID"'", "query": "Cary Grant"}'

Response (200)

{
  "results": [
    {
      "type": "chunk",
      "chunk_id": "uuid_1429",
      "chunk_type": "story_child",
      "start_time": 429.16,
      "end_time": 430.5,
      "text": "You could have the stamps.",
      "score": 0.9
    }
  ],
  "total": 20,
  "took_ms": 18
}

POST /api/v1/search/frames

Auth: Required Scope: file-level

Search face detection frames by identity name or trace ID.


POST /api/v1/search/identity_text

Auth: Required Scope: file-level

Search text chunks spoken by a specific identity.


Visual Search

Method Endpoint Description
POST /api/v1/search/visual Search visual chunks
POST /api/v1/search/visual/class Search by object class
POST /api/v1/search/visual/density Search by object density
POST /api/v1/search/visual/combination Search by object combination
POST /api/v1/search/visual/stats Visual chunk statistics

Embedding Model

Detail Value
Model EmbeddingGemma-300m
Endpoint POST /api/v1/embeddings on port 11436
Dimension 768
Storage pgvector (chunk.embedding column)