IntentLink Product Recommendations API
The product-recommendations API from IntentLink — 1 operation(s) for product-recommendations.
The product-recommendations API from IntentLink — 1 operation(s) for product-recommendations.
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/intentlink-io:intentlink-io-product-recommendations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Affiliate Recommendation Service Product Recommendations API
version: 0.1.0
tags:
- name: product-recommendations
paths:
/api/v1/recommend/product/search:
post:
tags:
- product-recommendations
summary: Search Products
operationId: search_products_api_v1_recommend_product_search_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecommendationSearchRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RecommendationResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
Coupon:
properties:
code:
anyOf:
- type: string
- type: 'null'
title: Code
description:
anyOf:
- type: string
- type: 'null'
title: Description
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Expires At
requires_manual_entry:
type: boolean
title: Requires Manual Entry
default: false
type: object
title: Coupon
RecommendationResponse:
properties:
request_id:
type: string
title: Request Id
status:
$ref: '#/components/schemas/RecommendationStatus'
coverage:
$ref: '#/components/schemas/Coverage'
normalized_request:
additionalProperties: true
type: object
title: Normalized Request
attribution:
anyOf:
- $ref: '#/components/schemas/Attribution'
- type: 'null'
best:
anyOf:
- $ref: '#/components/schemas/Offer'
- type: 'null'
results:
items:
$ref: '#/components/schemas/Offer'
type: array
title: Results
agent_message:
type: string
title: Agent Message
errors:
items:
additionalProperties: true
type: object
type: array
title: Errors
ranking_explanation:
anyOf:
- $ref: '#/components/schemas/RankingExplanation'
- type: 'null'
from_cache:
type: boolean
title: From Cache
default: false
type: object
required:
- request_id
- status
- coverage
- agent_message
title: RecommendationResponse
TrackingContext:
properties:
agent_session_id:
anyOf:
- type: string
- type: 'null'
title: Agent Session Id
end_user_id_hash:
anyOf:
- type: string
- type: 'null'
title: End User Id Hash
sub_id:
anyOf:
- type: string
- type: 'null'
title: Sub Id
channel:
anyOf:
- type: string
- type: 'null'
title: Channel
type: object
title: TrackingContext
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
SettlementStatus:
type: string
enum:
- pending_click
- pending_conversion
- eligible
- rejected
- paid
title: SettlementStatus
SearchConstraints:
properties:
max_price:
anyOf:
- type: number
- type: 'null'
title: Max Price
must_be_in_stock:
type: boolean
title: Must Be In Stock
default: true
allow_refurbished:
type: boolean
title: Allow Refurbished
default: false
allowed_sources:
items:
type: string
type: array
title: Allowed Sources
excluded_sources:
items:
type: string
type: array
title: Excluded Sources
min_confidence:
type: number
maximum: 1.0
minimum: 0.0
title: Min Confidence
default: 0.65
max_results:
type: integer
maximum: 20.0
minimum: 1.0
title: Max Results
default: 5
type: object
title: SearchConstraints
RecommendationStatus:
type: string
enum:
- ok
- needs_clarification
- no_results
- partial_results
- error
title: RecommendationStatus
RecommendationSearchRequest:
properties:
product_name:
type: string
minLength: 1
title: Product Name
caller:
$ref: '#/components/schemas/Caller'
raw_user_query:
anyOf:
- type: string
- type: 'null'
title: Raw User Query
intent:
$ref: '#/components/schemas/ShoppingIntent'
default: cheapest
market:
$ref: '#/components/schemas/Market'
product:
$ref: '#/components/schemas/ProductConstraints'
constraints:
$ref: '#/components/schemas/SearchConstraints'
tracking:
$ref: '#/components/schemas/TrackingContext'
ranking:
anyOf:
- $ref: '#/components/schemas/RankRequest'
- type: 'null'
type: object
required:
- product_name
- caller
title: RecommendationSearchRequest
RankRequest:
properties:
algorithm:
type: string
const: topsis
title: Algorithm
default: topsis
priority:
anyOf:
- $ref: '#/components/schemas/PriorityProfile'
- type: 'null'
top_n:
type: integer
maximum: 20.0
minimum: 1.0
title: Top N
default: 5
explain_top_k_dims:
type: integer
maximum: 10.0
minimum: 1.0
title: Explain Top K Dims
default: 3
use_intent_preset:
type: boolean
title: Use Intent Preset
default: true
type: object
title: RankRequest
Caller:
properties:
agent_id:
type: string
title: Agent Id
developer_id:
anyOf:
- type: string
- type: 'null'
title: Developer Id
agent_name:
anyOf:
- type: string
- type: 'null'
title: Agent Name
agent_version:
anyOf:
- type: string
- type: 'null'
title: Agent Version
developer_account_id:
anyOf:
- type: string
- type: 'null'
title: Developer Account Id
app_id:
anyOf:
- type: string
- type: 'null'
title: App Id
integration_id:
anyOf:
- type: string
- type: 'null'
title: Integration Id
type: object
required:
- agent_id
title: Caller
Offer:
properties:
offer_id:
type: string
title: Offer Id
title:
type: string
title: Title
source:
$ref: '#/components/schemas/SourceSnapshot'
description:
anyOf:
- type: string
- type: 'null'
title: Description
effective_price:
anyOf:
- type: number
- type: 'null'
title: Effective Price
currency:
anyOf:
- type: string
- type: 'null'
title: Currency
affiliate_url:
anyOf:
- type: string
maxLength: 2083
minLength: 1
format: uri
- type: 'null'
title: Affiliate Url
brand:
anyOf:
- type: string
- type: 'null'
title: Brand
category:
anyOf:
- type: string
- type: 'null'
title: Category
product_type:
anyOf:
- type: string
- type: 'null'
title: Product Type
product_highlight:
anyOf:
- type: string
- type: 'null'
title: Product Highlight
product_condition:
anyOf:
- type: string
- type: 'null'
title: Product Condition
image_url:
anyOf:
- type: string
maxLength: 2083
minLength: 1
format: uri
- type: 'null'
title: Image Url
additional_image_link:
anyOf:
- type: string
- type: 'null'
title: Additional Image Link
mobile_url:
anyOf:
- type: string
maxLength: 2083
minLength: 1
format: uri
- type: 'null'
title: Mobile Url
price:
anyOf:
- type: number
- type: 'null'
title: Price
sale_price:
anyOf:
- type: number
- type: 'null'
title: Sale Price
list_price:
anyOf:
- type: number
- type: 'null'
title: List Price
discount_amount:
anyOf:
- type: number
- type: 'null'
title: Discount Amount
discount_percent:
anyOf:
- type: number
- type: 'null'
title: Discount Percent
commission_rate:
anyOf:
- type: number
- type: 'null'
title: Commission Rate
rating:
anyOf:
- type: number
- type: 'null'
title: Rating
review_count:
anyOf:
- type: integer
- type: 'null'
title: Review Count
shipping_estimate:
anyOf:
- type: number
- type: 'null'
title: Shipping Estimate
tax_estimate:
anyOf:
- type: number
- type: 'null'
title: Tax Estimate
availability:
anyOf:
- type: string
- type: 'null'
title: Availability
coupon:
anyOf:
- $ref: '#/components/schemas/Coupon'
- type: 'null'
destination_url:
anyOf:
- type: string
maxLength: 2083
minLength: 1
format: uri
- type: 'null'
title: Destination Url
target_country:
anyOf:
- type: string
- type: 'null'
title: Target Country
advertiser_country:
anyOf:
- type: string
- type: 'null'
title: Advertiser Country
serviceable_areas:
anyOf:
- type: string
- type: 'null'
title: Serviceable Areas
link_expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Link Expires At
price_updated_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Price Updated At
score:
anyOf:
- type: number
- type: 'null'
title: Score
confidence:
type: number
maximum: 1.0
minimum: 0.0
title: Confidence
default: 0
why:
items:
type: string
type: array
title: Why
warnings:
items:
type: string
type: array
title: Warnings
type: object
required:
- offer_id
- title
- source
title: Offer
Coverage:
properties:
claim:
type: string
title: Claim
networks:
items:
type: string
type: array
title: Networks
source_count:
type: integer
title: Source Count
default: 0
offer_count:
type: integer
title: Offer Count
default: 0
freshness_seconds:
anyOf:
- type: integer
- type: 'null'
title: Freshness Seconds
limitations:
items:
type: string
type: array
title: Limitations
type: object
required:
- claim
title: Coverage
Attribution:
properties:
attribution_id:
type: string
title: Attribution Id
click_id:
type: string
title: Click Id
agent_id:
type: string
title: Agent Id
developer_id:
anyOf:
- type: string
- type: 'null'
title: Developer Id
developer_account_id:
anyOf:
- type: string
- type: 'null'
title: Developer Account Id
revenue_share_policy_id:
anyOf:
- type: string
- type: 'null'
title: Revenue Share Policy Id
settlement_status:
$ref: '#/components/schemas/SettlementStatus'
default: pending_click
type: object
required:
- attribution_id
- click_id
- agent_id
title: Attribution
RankingExplanation:
properties:
algorithm:
type: string
title: Algorithm
default: topsis
active_dimensions:
items:
type: string
type: array
title: Active Dimensions
weights:
additionalProperties:
type: number
type: object
title: Weights
closeness_score:
additionalProperties:
type: number
type: object
title: Closeness Score
per_offer_dim_ranks:
additionalProperties:
additionalProperties:
type: integer
type: object
type: object
title: Per Offer Dim Ranks
type: object
title: RankingExplanation
Market:
properties:
country:
anyOf:
- type: string
- type: 'null'
title: Country
currency:
anyOf:
- type: string
- type: 'null'
title: Currency
language:
anyOf:
- type: string
- type: 'null'
title: Language
type: object
title: Market
ShoppingIntent:
type: string
enum:
- cheapest
- best_discount
- best_value
- fastest_delivery
title: ShoppingIntent
ProductConstraints:
properties:
brand:
anyOf:
- type: string
- type: 'null'
title: Brand
category:
anyOf:
- type: string
- type: 'null'
title: Category
keywords:
items:
type: string
type: array
title: Keywords
model:
anyOf:
- type: string
- type: 'null'
title: Model
color:
anyOf:
- type: string
- type: 'null'
title: Color
gender:
anyOf:
- type: string
- type: 'null'
title: Gender
type: object
title: ProductConstraints
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
PriorityTier:
type: string
enum:
- important
- secondary
- other
- irrelevant
title: PriorityTier
SourceSnapshot:
properties:
network:
type: string
title: Network
upstream_advertiser_id:
anyOf:
- type: string
- type: 'null'
title: Upstream Advertiser Id
upstream_advertiser_name:
anyOf:
- type: string
- type: 'null'
title: Upstream Advertiser Name
upstream_offer_id:
anyOf:
- type: string
- type: 'null'
title: Upstream Offer Id
source_platform:
anyOf:
- type: string
- type: 'null'
title: Source Platform
type: object
required:
- network
title: SourceSnapshot
PriorityProfile:
properties:
important:
items:
type: string
type: array
title: Important
secondary:
items:
type: string
type: array
title: Secondary
irrelevant:
items:
type: string
type: array
title: Irrelevant
tier_coefficients:
additionalProperties:
type: number
propertyNames:
$ref: '#/components/schemas/PriorityTier'
type: object
title: Tier Coefficients
intra_tier_distribution:
type: string
enum:
- equal
- rank_decay
title: Intra Tier Distribution
default: equal
type: object
title: PriorityProfile
securitySchemes:
HTTPBearer:
type: http
scheme: bearer