Audiala Interest Search API
The Interest Search API from Audiala — 1 operation(s) for interest search.
The Interest Search API from Audiala — 1 operation(s) for interest search.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/audiala-com:audiala-com-interest-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: MarcoPolo Interest Search API
description: API for the MarcoPolo application
version: 0.1.0
tags:
- name: Interest Search
paths:
/interest-search:
post:
summary: Interest Search
description: 'Search for monuments matching user interests via vector similarity.
Uses pre-computed voyage-3.5-lite embeddings in pgvector.
Returns monuments ranked by semantic relevance to interests.'
operationId: interest_search_interest_search_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-internal-token
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Internal-Token
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InterestSearchRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InterestSearchResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Interest Search
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
InterestSearchResponse:
properties:
monuments:
items:
$ref: '#/components/schemas/InterestMonument'
type: array
title: Monuments
city_id:
type: string
title: City Id
timing_ms:
additionalProperties:
type: number
type: object
title: Timing Ms
lazy_embedded:
type: boolean
title: Lazy Embedded
default: false
source:
anyOf:
- type: string
- type: 'null'
title: Source
candidates_from_city:
type: integer
title: Candidates From City
default: 0
candidates_from_wiki:
type: integer
title: Candidates From Wiki
default: 0
candidates_from_lexical:
type: integer
title: Candidates From Lexical
default: 0
wiki_collections_available:
type: integer
title: Wiki Collections Available
default: 0
reranked:
type: boolean
title: Reranked
default: false
judged:
type: boolean
title: Judged
default: false
hops:
type: integer
title: Hops
default: 1
gate_passed:
type: boolean
title: Gate Passed
default: true
subqueries:
items:
type: string
type: array
title: Subqueries
default: []
error:
anyOf:
- type: string
- type: 'null'
title: Error
type: object
required:
- monuments
- city_id
- timing_ms
title: InterestSearchResponse
InterestSearchRequest:
properties:
city_id:
type: string
title: City Id
description: Wikidata city ID, e.g. Q90
interests:
type: string
title: Interests
description: Comma-separated interests, e.g. 'art, impressionism'
top_k:
type: integer
maximum: 100.0
minimum: 1.0
title: Top K
description: Max monuments to return
default: 30
language:
anyOf:
- type: string
- type: 'null'
title: Language
description: 'ISO 639-1 / BCP-47 hint for the language `match_reason` strings must be written in (e.g. ''en'', ''fr'', ''ja''). When omitted, the language the `interests` text is written in is used. Threaded into the judge prompt and the passthrough-reason localizer (EQ-2: language fidelity).'
judge:
type: boolean
title: Judge
description: Run a single-hop LLM judge (gemini-3.1-flash-lite) on the rerank output to filter name/description mismatches and reorder by intent. Adds ~1s + ~$0.0005 per call. Default-on as of the popularity-rerank rollout — clients can pass judge=false to bypass for latency-sensitive paths.
default: true
plan:
type: boolean
title: Plan
description: 'Gated planner-loop: judge + confidence gate. If the judge''s top score < PLAN_GATE_CONFIDENCE_FLOOR or it returned fewer than top_k items, a planner emits up to 3 reformulated sub-queries; their results are merged into the candidate pool and re-judged. Hard cap: 2 hops. Median request stays single-hop; tail queries spend ~2.5s extra + ~$0.001.'
default: false
type: object
required:
- city_id
- interests
title: InterestSearchRequest
InterestMonument:
properties:
row_id:
type: integer
title: Row Id
monument_name:
type: string
title: Monument Name
similarity_score:
type: number
title: Similarity Score
latitude:
type: number
title: Latitude
longitude:
type: number
title: Longitude
match_reason:
type: string
title: Match Reason
type: object
required:
- row_id
- monument_name
- similarity_score
- latitude
- longitude
- match_reason
title: InterestMonument
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError