Migrar desde Exa

Mantén exa-py o exa-js. Cambia la dirección base y la key.

typesearch tiene una capa de compatibilidad que habla la API de Exa: los mismos parámetros, la misma forma de respuesta y los mismos errores. Con los SDKs oficiales, migrar son dos líneas.

from exa_py import Exa

# antes: exa = Exa(api_key=EXA_API_KEY)
exa = Exa(api_key=TYPESEARCH_API_KEY, base_url="https://api.typesearch.ai/compat/exa")

results = exa.search("el dólar", num_results=10, type="fast", include_domains=["infobae.com"])
similar = exa.find_similar(results.results[0].url, exclude_source_domain=True)
pages = exa.get_contents([r.url for r in results.results], highlights=True)

Están soportados /search, /findSimilar y /contents. La key va en el encabezado que ya usa el SDK.

Parámetros

ExaEn typesearch
query, numResultsIgual. Hasta 50 resultados (limited:numResults si pides más).
typeinstantultra · fastfast · auto, neural, keyword, hybridnormal · deep*deep.
includeDomains, excludeDomainsIgual, hasta 20. *.dominio.com también.
startPublishedDate, endPublishedDateIgual.
includeText, excludeTextSobre título, bajada y fragmentos (approximated:includeText).
categorynews o nada. Cualquier otra categoría responde vacío sin buscar ni cobrar (unsupported:category).
contents.highlightsFragmentos textuales de las notas leídas; la bajada en las demás.
contents.textUn extracto breve, nunca la página completa (limited:text).
contents.summaryNo se genera: no redactamos resúmenes (unsupported:summary).
/findSimilarNotas del índice sobre la misma noticia. excludeSourceDomain funciona.
/contentsMetadatos y extractos breves. Con highlights.query, el modelo los elige.

Nada se rompe en silencio

Lo que no soportamos se acepta y se informa en el encabezado X-Compat-Warnings de la respuesta —ignored:…, limited:…, approximated:… o unsupported:…—, así el código que migras sigue funcionando. Sólo lo que cambiaría el sentido del pedido es un error, con el formato de Exa: { requestId, error, tag }.

Lo nuestro

Agrega un campo typesearch al cuerpo del pedido para lo que Exa no tiene: tono, lo esencial, un modo o un tope de costo. Vuelve en un campo typesearch de la respuesta. Sirve cualquier cliente que te deje agregar campos al JSON:

curl https://api.typesearch.ai/compat/exa/search \
  -H "x-api-key: $TYPESEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "el dólar", "numResults": 5, "typesearch": { "tone": true, "mode": "normal" } }'

Para todo lo demás, la API nativa y nuestros SDKs lo exponen completo.

Lo que se queda en Exa

Los índices de personas, empresas y papers, el texto completo de las páginas y las respuestas o resúmenes generados no son parte de typesearch. Si tu producto depende de eso, deja esas llamadas en Exa y trae el resto.

En esta página