Audiala Interest Search API

The Interest Search API from Audiala — 1 operation(s) for interest search.

Operations 1

POST /interest-search Interest Search #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/audiala-com:audiala-com-interest-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

audiala-com-interest-search-api-openapi.yml Raw ↑
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