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=["reddiaria.example"])
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).
typeinstant → ultra · fast, auto, neural, keyword, hybrid → fast · deep* → deep. fast no lee las páginas: los contenidos se cobran por página (abajo).
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 que el modelo elige para la consulta (o highlights.query). En ultra y fast se lee la página de cada resultado y se cobra por página: $0,40 cada 1.000. En deep, de las notas que leyó, incluido en su precio.
contents.textUn extracto breve, nunca la página completa (limited:text). En ultra y fast, se cobra por página: $0,20 cada 1.000.
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.

Lo que cuesta

La búsqueda de Exa ($7 cada 1.000, precio de lista revisado el 25 de septiembre de 2026) incluye el texto y los highlights de hasta 10 resultados. Acá cada parte tiene su precio: una búsqueda fast cuesta $1,40 cada 1.000 y devuelve titulares y bajadas (type: "instant" es ultra, $1,00 cada 1.000, sólo titulares), y cada página de la que pides contenidos se cobra aparte. Con el texto de 10 resultados, una búsqueda rápida sale $3,40 cada 1.000; con los highlights de 10, $5,40. normal ($2,20) lee los 4 mejores antes de ordenarlos, y deep ($5,60, contra $12–15 de la búsqueda profunda de Exa) lee 8 con fragmentos. Si necesitas el texto completo de cada resultado, Exa te da más por su precio: mira lo que se queda en Exa.

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