Below is our OpenAPI specification, which provides a complete definition of the Metaphor API.
---
openapi3.1.0
info
version1.0.2
title Exa Search API - LATEST
description A comprehensive API for internet-scale search, allowing
users to perform queries and retrieve results from a wide variety of
sources using embeddings-based and traditional search.
servers
url https //api.exa.ai
paths
/search
post
operationId search
summary Search
description Perform a search with a Exa prompt-engineered query and
retrieve a list of relevant results. Optionally get contents.
requestBody
requiredtrue
content
application/json
schema
allOf
type object
properties
query
type string
example"Here is an article about the state of search:"
description The query string.
default"Here is an article about the state of search:"
useAutoprompt
type boolean
description If true, your query will be converted to a Exa query. Default false.
type
type string
description The Type of search, 'keyword', 'neural', or 'auto' (auto decides between keyword and neural). Default neural.
includeText
type array
items
type string
description The 'Phrase Filter' text used to post-process the neural search results and only return phrase filtered results.
required
query
$ref"#/components/schemas/CommonRequest"
example
query"Here is a new legal-tech startup"
useAutoprompttrue
numResults5
type"neural"
excludeDomains
"www.linkedin.com"
includeText
"firm"
startCrawlDate"2015-03-01T00:00:00"
endCrawlDate"2024-06-24T00:00:00"
category"company"
responses
"200"
$ref"#/components/responses/SearchResponse"
"400"
$ref"#/components/responses/BadRequestError"
"408"
$ref"#/components/responses/TimeoutError"
"429"
$ref"#/components/responses/RateLimitError"
"500"
$ref"#/components/responses/InternalServerError"
"503"
$ref"#/components/responses/ServiceUnavailableError"
/findSimilar
post
operationId findSimilar
summary Find similar
description Find similar links to the link provided. Optionally get contents.
requestBody
requiredtrue
content
application/json
schema
allOf
type object
properties
url
type string
example https //slatestarcodex.com/2014/07/30/meditations-on-moloch/
description The url for which you would like to find similar links
required
url
$ref"#/components/schemas/CommonRequest"
examples
validRequest
summary Valid findSimilar request
value
contents
text
maxCharacters100
url"https://www.lesswrong.com/posts/D7PumeYTDPfBTp3i7/the-waluigi-effect-mega-post"
numResults5
excludeDomains
startCrawlDate"2023-01-01T00:00:00.000Z"
endCrawlDate"2023-12-31T00:00:00.000Z"
startPublishedDate"2023-01-01T00:00:00.000Z"
endPublishedDate"2023-12-31T00:00:00.000Z"
responses
"200"
$ref"#/components/responses/FindSimilarResponse"
"400"
$ref"#/components/responses/BadRequestError"
"408"
$ref"#/components/responses/TimeoutError"
"429"
$ref"#/components/responses/RateLimitError"
"500"
$ref"#/components/responses/InternalServerError"
"503"
$ref"#/components/responses/ServiceUnavailableError"
/contents
post
summary Get contents
operationId'getContents'
requestBody
requiredtrue
content
application/json
schema
type object
allOf
type object
properties
ids
type array
description Array of document IDs obtained from searches
items
type string
required
ids
$ref'#/components/schemas/ContentsRequest'
example
text
maxCharacters100
includeHtmlTagsfalse
highlights
numSentences2
highlightsPerUrl1
query"Description"
ids
"www.legalrobot.com"
"www.evenuplaw.com"
"www.legalontech.com"
responses
"200"
$ref'#/components/responses/ContentsResponse'
"400"
$ref"#/components/responses/BadRequestError"
"408"
$ref"#/components/responses/TimeoutError"
"429"
$ref"#/components/responses/RateLimitError"
"500"
$ref"#/components/responses/InternalServerError"
"503"
$ref"#/components/responses/ServiceUnavailableError"
components
securitySchemes
apikey
type apiKey
name x-api-key
in header
description"An API key that will be supplied in a named header when logged in."
x-default"5364cbda-7f88-4683-a3f9-873d55f0bb2e"
schemas
ContentsRequest
type object
properties
text
type object
description Parsed contents of the page.
properties
maxCharacters
type integer
description Max length in characters for the text returned
includeHtmlTags
type boolean
description Whether HTML tags, which can help the LLM understand structure of text, should be included. Default false
highlights
type object
description Relevant extract(s) from the webpage.
properties
numSentences
type integer
description The number of sentences to be returned in each snippet. Default 5
highlightsPerUrl
type integer
description The number of snippets to return per page. Default 1
query
type string
description If specified, targets snippets most relevant to the query. In search, defaults to the search query.
summary
type object
description Summary of the webpage
properties
query
type string
description If specified, tries to answer the query in the summary
CommonRequest
type object
properties
numResults
type integer
description Number of search results to return. Default 10. Max 10 for basic
plans. Up to thousands for custom plans.
example10
includeDomains
type array
items
type string
description List of domains to include in the search. If specified, results
will only come from these domains.
example
example.com
sample.net
excludeDomains
type array
items
type string
description List of domains to exclude in the search. If specified, results
will not include any from these domains.
example
excludedomain.com
excludeme.net
startCrawlDate
type string
format date-time
description Crawl date refers to the date that Exa discovered a link.
Results will include links that were crawled after this date. Must
be specified in ISO 8601 format.
example 2023-01-01
endCrawlDate
type string
format date-time
description Crawl date refers to the date that Exa discovered a link.
Results will include links that were crawled before this date. Must
be specified in ISO 8601 format.
example 2023-12-31
startPublishedDate
type string
format date-time
description Only links with a published date after this will be returned. Must
be specified in ISO 8601 format.
example 2023-01-01
endPublishedDate
type string
format date-time
description Only links with a published date before this will be returned. Must
be specified in ISO 8601 format.
example 2023-12-31
includeText
type array
items
type string
description List of strings that must be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words.
excludeText
type array
items
type string
description List of strings that must not be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words.
contents
$ref'#/components/schemas/ContentsRequest'
Result
type object
properties
title
type string
description The title of the search result.
url
type string
format uri
description The URL of the search result.
publishedDate
type string
nullabletrue
description An estimate of the creation date, from parsing HTML content. Format
is YYYY-MM-DD.
author
type string
nullabletrue
description If available, the author of the content.
score
type number
nullabletrue
description A number from 0 to 1 representing similarity between the query/url
and the result.
id
type string
description The temporary ID for the document. Useful for /contents endpoint.
ResultWithContent
allOf
$ref"#/components/schemas/Result"
type object
properties
text
type string
description The full content text of the search result.
# TODO: think we need to change this
highlights
type array
items
type string
description Array of highlights extracted from the search result content.
highlightScores
type array
items
type number
format float
description Array of cosine similarity scores for each highlighted
Error
type object
properties
code
type string
description A machine-readable error code.
message
type string
description A human-readable error message.
responses
#Search API response schema and examples
SearchResponse
description OK
content
application/json
schema
type object
properties
results
type array
description A list of search results containing title, URL, published date,
author, and score.
items
$ref"#/components/schemas/ResultWithContent"
autopromptString
type string
description The Exa query created by the autoprompt functionality.
autoDate
type string
description If applicable, the date filter intelligently inferred from input queries that have autopropmpt on.
example
autopromptString"Here is a new legal-tech startup:"
results
score0.20622172951698303
title"Know what you sign â¢"
id"https://legalrobot.com/"
url"https://legalrobot.com/"
publishedDate"2022-11-01"
author null
score0.20499876141548157
title"EvenUp"
id"https://www.evenuplaw.com/"
url"https://www.evenuplaw.com/"
publishedDate"2023-01-01"
author null
score0.20453940331935883
title"Automateâtedious out ofcontract review."
id"https://www.legalontech.com/"
url"https://www.legalontech.com/"
publishedDate"2023-04-01"
author null
score0.20372281968593597
title"ChatGPT for Legal Documents"
id"https://www.law-pilot.com/"
url"https://www.law-pilot.com/"
publishedDate"2023-01-01"
author null
score0.20369493961334229
title"AI data analysis for law firms"
id"https://www.legalyze.ai/"
url"https://www.legalyze.ai/"
publishedDate"2023-01-01"
author null
requestId"d8035c28f0e49330ebf14b86c52593bc"
#FindSimilar API response schema and examples
FindSimilarResponse
description OK
content
application/json
schema
type object
properties
results
type array
description A list of search results containing title, URL, published date,
author, and score.
items
$ref"#/components/schemas/ResultWithContent"
example
results
score0.8948079943656921
title"The Waluigi Effect (mega-post) - AI Alignment Forum"
id"https://www.alignmentforum.org/posts/D7PumeYTDPfBTp3i7/the-waluigi-effect-mega-post"
url"https://www.alignmentforum.org/posts/D7PumeYTDPfBTp3i7/the-waluigi-effect-mega-post"
publishedDate"2023-03-03"
author"Cleo Nardo"
text"Everyone carries a shadow, and the less it is embodied in the individual's conscious life, the black"
score0.729297399520874
title"The Waluigi Effect"
id"https://news.ycombinator.com/item?id=35042431"
url"https://news.ycombinator.com/item?id=35042431"
publishedDate"2023-03-06"
author null
text"This is fun to read and think about, but it's also important to keep in mind that this is very light"
score0.7086403965950012
title"Waluigi, Carl Jung, and the Case for Moral AI"
id"https://www.wired.com/story/waluigi-effect-generative-artificial-intelligence-morality/"
url"https://www.wired.com/story/waluigi-effect-generative-artificial-intelligence-morality/"
publishedDate"2023-05-25"
author"Condé Nast; Nabeel S Qureshi"
text"20th century, the psychoanalyst Carl Jung came up with the concept of the shadow—the human personali"
score0.6984729766845703
title"GPTs are Predictors, not Imitators - AI Alignment Forum"
id"https://www.alignmentforum.org/posts/nH4c3Q9t9F3nJ7y8W/gpts-are-predictors-not-imitators"
url"https://www.alignmentforum.org/posts/nH4c3Q9t9F3nJ7y8W/gpts-are-predictors-not-imitators"
publishedDate"2023-04-08"
author"Eliezer Yudkowsky"
text"(Related text posted to Twitter; this version is edited and has a more advanced final section.) Imag"
score0.6897473335266113
title"A Gentle Introduction to Hallucinations in Large Language Models - MachineLearningMastery.com"
id"https://machinelearningmastery.com/a-gentle-introduction-to-hallucinations-in-large-language-models/"
url"https://machinelearningmastery.com/a-gentle-introduction-to-hallucinations-in-large-language-models/"
publishedDate"2023-06-01"
author"Adrian Tam"
text"Large Language Models (LLMs) are known to have 'hallucinations.' This is a behavior in that the mode"
requestId"0509c907b3a8fc209a84d25848f4bcc3"
#Contents API response schema and examples
ContentsResponse
description OK
content
application/json
schema
type object
properties
results
type array
items
$ref"#/components/schemas/ResultWithContent"
example
autopromptString"Here is a new legal-tech startup:"
results
score0.20622172951698303
title"Know what you sign â¢"
id"https://legalrobot.com/"
url"https://legalrobot.com/"
publishedDate"2022-11-01"
author null
score0.20499876141548157
title"EvenUp"
id"https://www.evenuplaw.com/"
url"https://www.evenuplaw.com/"
publishedDate"2023-01-01"
author null
score0.20453940331935883
title"Automateâtedious out ofcontract review."
id"https://www.legalontech.com/"
url"https://www.legalontech.com/"
publishedDate"2023-04-01"
author null
score0.20372281968593597
title"ChatGPT for Legal Documents"
id"https://www.law-pilot.com/"
url"https://www.law-pilot.com/"
publishedDate"2023-01-01"
author null
score0.20369493961334229
title"AI data analysis for law firms"
id"https://www.legalyze.ai/"
url"https://www.legalyze.ai/"
publishedDate"2023-01-01"
author null
requestId"d8035c28f0e49330ebf14b86c52593bc"
#Error responses
BadRequestError
description Bad Request - Check your request
content
application/json
schema
$ref"#/components/schemas/Error"
examples
generalError
summary Bad Request Error
value
requestId"..."
error Bad Request
invalidIncludeDomains
summary Invalid Include Domains
value
requestId"..."
error"includeDomains must be an array of strings with length > 0 and length <= 100"
invalidExcludeDomains
summary Invalid Exclude Domains
value
requestId"..."
error"excludeDomains must be an array of strings with length > 0 and length <= 100"
missingRequiredField
summary Missing Required Field
value
requestId"..."
error"Missing required field: {field}"
noContentFound
summary No Content Found
value
requestId"..."
error"Could not find any content for the given ids."
invalidNumResults
summary Invalid Number of Results
value
requestId"..."
error"Invalid numResults. numResults must be greater than 0"
invalidStartCrawlDate
summary Invalid Start Crawl Date
value
requestId"..."
error"Invalid startCrawlDate. startCrawlDate must be a valid date"
invalidEndCrawlDate
summary Invalid End Crawl Date
value
requestId"..."
error"Invalid endCrawlDate. endCrawlDate must be a valid date"
invalidCrawlDateRange
summary Invalid Crawl Date Range
value
requestId"..."
error"Invalid startCrawlDate and endCrawlDate. startCrawlDate must be before endCrawlDate"
invalidStartPublishedDate
summary Invalid Start Published Date
value
requestId"..."
error"Invalid startPublishedDate. startPublishedDate must be a valid date"
invalidEndPublishedDate
summary Invalid End Published Date
value
requestId"..."
error"Invalid endPublishedDate. endPublishedDate must be a valid date"
invalidPublishedDateRange
summary Invalid Published Date Range
value
requestId"..."
error"Invalid startPublishedDate and endPublishedDate. startPublishedDate must be before endPublishedDate"
invalidDomainSpecification
summary Invalid Domain Specification
value
requestId"..."
error"Invalid includeDomains and excludeDomains. Only one of includeDomains or excludeDomains can be specified"
invalidIncludeDomainsType
summary Invalid Include Domains Type
value
requestId"..."
error"Invalid includeDomains. includeDomains must be an array"
invalidExcludeDomainsType
summary Invalid Exclude Domains Type
value
requestId"..."
error"Invalid excludeDomains. excludeDomains must be an array"
invalidIncludeDomainsContent
summary Invalid Include Domains Content
value
requestId"..."
error"Invalid includeDomains. includeDomains must be an array of nonempty strings."
invalidExcludeDomainsContent
summary Invalid Exclude Domains Content
value
requestId"..."
error"Invalid excludeDomains. excludeDomains must be an array of strings with length > 0 and length <= 100"
invalidKeywordSearchDomain
summary Invalid Keyword Search Domain
value
requestId"..."
error"Invalid includeDomains. Only one domain can be specified for keyword search type"
invalidCategory
summary Invalid Category
value
requestId"..."
error"Invalid category. Currently, the only categories: company, papers, news article, github, tweet, movie, song, personal site, pdf"
emptyIds
summary Empty IDs
value
requestId"..."
error"For contents requests, ids must not be empty"
invalidQuery
summary Invalid Query
value
requestId"..."
error"Invalid query. query must be a non-empty string"
invalidSearchType
summary Invalid Search Type
value
requestId"..."
error"Invalid search type. Search type must be neural, keyword, or auto."
invalidNumResultsForHighlights
summary Invalid Number of Results for Highlights
value
requestId"..."
error"Invalid numResults. numResults must be <= 40 for highlights searches for performance reasons. If you need this customized, contact us at hello@exa.ai"
InternalServerError
description Internal Server Error - Something went wrong on our end
content
application/json
schema
$ref"#/components/schemas/Error"
examples
generalError
summary General internal server error
value
requestId"..."
error"Internal Server Error"
message"An unexpected error occurred. Please try again later."
dependencyError
summary Dependency error causing service outage
value
requestId"..."
error"3rd party dependency error"
message"3rd party dependency is failing"
TimeoutError
description Timeout Error - The request took too long to process
content
application/json
schema
$ref"#/components/schemas/Error"
examples
generalError
summary Timeout Error
value
requestId"..."
error Timeout Error
RateLimitError
description Rate Limit Error - You have exceeded the rate limit
content
application/json
schema
$ref"#/components/schemas/Error"
examples
generalError
summary Rate Limit Error
value
requestId"..."
error Rate Limit Error
usageLimitReached
summary API Key Usage Limit Reached
value
requestId"..."
error"API key usage limit reached: {currentUsage}/{usageLimit}"
planLimitExceeded
summary Plan Limit Exceeded
value
requestId"..."
error"You are asking for a number of results above what your plan allows. To be able to get up to thousands of results per search, contact hello@metaphor.systems and we will figure something out."
ServiceUnavailableError
description Service Unavailable Error - One or more services temporarily unavailable
content
application/json
schema
$ref"#/components/schemas/Error"
examples
serviceError
summary Service is unavailable - either due to crawling or capacity issues
value
requestId"..."
error"Service unavailable error"
message"An unexpected error occurred. Please try again later."
capacityError
summary Capacity issues causing outage
value
requestId"..."
error"Service unavailable error"
message"Sorry, we are at capacity."
security
apikey