Polimake

Search API

Referencia preview de la API de busqueda semantica de Polimake para encontrar activos creativos con lenguaje natural.

· Platform

El equipo detrás de Polimake. Exploramos la intersección entre tecnología, creatividad y automatización.

Publicado:
Search API

La Search API permite encontrar recursos creativos con lenguaje natural. Esta pensada para DAMs internos, CRMs, CMS, intranets, copilotos y agentes que necesitan recuperar el recurso correcto sin navegar carpetas.

Estado: contrato preview. Los nombres finales de endpoint y campos pueden cambiar antes de disponibilidad general.

Endpoint

POST /v1/media/search

Request

{
  "project_id": "brand-assets",
  "query": "presentacion para cliente de energia renovable",
  "top_k": 10,
  "mime_types": ["application/pdf", "application/vnd.ms-powerpoint"],
  "filters": {
    "has_logo": true
  }
}

Parametros

CampoTipoRequeridoDescripcion
project_idstringSiProyecto donde buscar.
querystringSiConsulta en lenguaje natural.
top_knumberNoNumero maximo de resultados. Por defecto, 10.
mime_typesstring[]NoLimita resultados por tipo MIME.
filtersobjectNoFiltros estructurados disponibles segun proyecto.

Ejemplo con curl

curl https://api.polimake.com/v1/media/search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "brand-assets",
    "query": "presentacion para cliente de energia renovable",
    "top_k": 10,
    "mime_types": ["application/pdf", "application/vnd.ms-powerpoint"]
  }'

Ejemplo con JavaScript

async function searchPolimakeMedia(query) {
  const response = await fetch("https://api.polimake.com/v1/media/search", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.POLIMAKE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      project_id: "brand-assets",
      query,
      top_k: 10,
    }),
  });

  if (!response.ok) {
    const error = await response.json().catch(() => null);
    throw new Error(error?.error?.message || `Polimake API error: ${response.status}`);
  }

  return response.json();
}

Ejemplo con Python

import os
import requests

def search_polimake_media(query: str):
    response = requests.post(
        "https://api.polimake.com/v1/media/search",
        headers={
            "Authorization": f"Bearer {os.environ['POLIMAKE_API_KEY']}",
            "Content-Type": "application/json",
        },
        json={
            "project_id": "brand-assets",
            "query": query,
            "top_k": 10,
        },
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

Response

{
  "object": "search_result",
  "query": "presentacion para cliente de energia renovable",
  "items": [
    {
      "id": "media_01HX9R8K4Q2Z4T",
      "object": "media_object",
      "score": 0.92,
      "project_id": "brand-assets",
      "filename": "deck-renovables-q2.pdf",
      "mime_type": "application/pdf",
      "urls": {
        "preview": "https://cdn.polimake.com/previews/media_01HX9R8K4Q2Z4T.webp"
      },
      "ai": {
        "description": "Presentacion comercial sobre energia renovable con graficos trimestrales.",
        "tags": ["energia renovable", "presentacion", "ventas", "graficos"]
      }
    }
  ]
}

Buenas practicas

  • Envia consultas completas, no solo keywords.
  • Usa mime_types cuando sepas que buscas documentos, imagenes o videos.
  • Usa top_k bajo para interfaces rapidas y subelo para procesos offline.
  • Muestra ai.description al usuario para explicar por que aparece un resultado.
  • Guarda el id del media object, no la URL temporal de preview.