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/epsilon-ads-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: 3.2.0
info:
title: Epsilon Retail Media Integration Ads API
version: '1'
x-source: https://developers.citrusad.com/integration/reference/
servers:
- url: https://integration-BASE-URL.citrusad.com/v1/
security:
- sec0: []
tags:
- name: Ads
paths:
/ads/generate:
post:
summary: Generate product and banner ads
description: ''
operationId: generate
requestBody:
content:
application/json:
schema:
type: object
required:
- catalogId
- placement
- maxNumberOfAds
properties:
catalogId:
type: string
description: The catalogId you are requesting ads for. Typically a single identifier for a retailer.
placement:
type: string
description: The placement you are requesting ads for.
customerId:
type: string
description: Your unique customerId. Optional.
sessionId:
type: string
description: Unique sessionId used for attribution. Required to be consistent between a user's session and order reporting.
searchTerm:
type: string
description: Used for search placements. The exact search term entered by the customer on your site.
targetedProductGtin:
type: string
description: Used for cross-sell placements. The product code that is being advertised against
maxNumberOfAds:
type: integer
description: The maximum number of product ads to receive.
format: int32
contentStandardId:
type: string
description: The banner contentStandardId. Required for banners.
bannerSlotIds:
type: array
description: The banner slots ads are required. Will be superseded by bannerSlots array object.
items:
type: string
productFilters:
type: string
description: An array or arrays are required depending on your ad generation filtering. Used in category placements or any other placement to further define business rules. Not currently compatible with cross-sell or upsell placements.
default: '[ [ "category:Frozen" ], ["Location:Brisbane Central"]]'
format: json
options:
type: array
items:
properties:
filtermode:
type: string
description: Defines the ad generation filtering mode.
default: AndOr
cached:
type: boolean
description: Defines if the retailer expects to cache the adId
default: false
includeAdvertiserInfo:
type: boolean
description: Defines if the retailer requires advertiser information to comply with the EU's Digital Services Act
default: true
type: object
bannerSlots:
type: array
description: The banner slots that are requested. Specifying maxNumberOfAds for the banner allows you to retrieve multiple of the same banner slot.
items:
properties:
slotId:
type: string
description: The bannerSlotId ads are required for.
maxNumberOfAds:
type: integer
description: The maximum number of product ads to receive.
format: int32
type: object
audience:
type: array
items:
properties:
segmentIds:
type: array
description: The list of segment IDs that the customer can access.
default: []
items:
type: string
sourceId:
type: string
description: The agreed ID of the source between Epsilon and yourself. Used when multiple sources are used for segments. Not required if only syncing from one source.
default: retailer-cdp-1
type: object
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"ads\": [\n {\n \"id\": \"string\",\n \"gtin\": \"string\",\n \"discount\": {\n \"amount\": \"number\",\n \"minPrice\": \"number\",\n \"maxPerCustomer\": \"integer\"\n },\n \"expiry\": \"string\",\n \"position\": \"integer\",\n \t\"metadata\": {\n \t\t\t\"advertiserInfo\": {\n \t\t\t\t\t\"advertiser\": \"string\",\n \t\t\t\"onBehalfOf\": \"string\",\n \t\t\t},\n {\n \"id\": \"string\",\n \"gtin\": \"string\",\n \"discount\": {\n \"amount\": \"number\",\n \"minPrice\": \"number\",\n \"maxPerCustomer\": \"integer\"\n },\n \"expiry\": \"string\",\n \"position\": \"integer\"\n \t\"metadata\": {\n \t\t\t\"advertiserInfo\": {\n \t\t\t\t\t\"advertiser\": \"string\",\n \t\t\t\"onBehalfOf\": \"string\",\n },\n {\n \"id\": \"string\",\n \"gtin\": \"string\",\n \"discount\": {\n \"amount\": \"number\",\n \"minPrice\": \"number\",\n \"maxPerCustomer\": \"integer\"\n },\n \"expiry\": \"string\",\n \"position\": \"integer\"\n \t\"metadata\": {\n \t\t\t\"advertiserInfo\": {\n \t\t\t\t\t\"advertiser\": \"string\",\n \t\t\t\"onBehalfOf\": \"string\", \n }\n ],\n \"banners\": [\n {\n \"id\": \"string\",\n \"contentStandardId\": \"string\",\n \"slotId\": \"string\",\n \"imageUrl\": \"string\",\n \"linkUrl\": \"string\",\n \"altText\": \"string\",\n \"text\": \"\",\n \"gtins\": [\n \"string\",\n \"string\"\n ],\n \"expiry\": \"2022-03-10T05:53:14.653320236Z\",\n \"tags\": {}\n }\n ],\n \"products\": [], \n \"metadata\": []\n\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: ''
'401':
description: '401'
content:
text/plain:
examples:
Result:
value: ''
'403':
description: '403'
content:
text/plain:
examples:
Result:
value: ''
'404':
description: '404'
content:
text/plain:
examples:
Result:
value: ''
'429':
description: '429'
content:
text/plain:
examples:
Result:
value: ''
'500':
description: '500'
content:
text/plain:
examples:
Result:
value: ''
'502':
description: '502'
content:
text/plain:
examples:
Result:
value: ''
'503':
description: '503'
content:
text/plain:
examples:
Result:
value: ''
'504':
description: '504'
content:
text/plain:
examples:
Result:
value: ''
deprecated: false
tags:
- Ads
/ads/bannerx:
post:
summary: Generate banner X ads
description: ''
operationId: bannerx
requestBody:
content:
application/json:
schema:
type: object
required:
- catalogId
- placement
properties:
catalogId:
type: string
description: The catalogId you are requesting ads for. Typically a single identifier for a retailer.
placement:
type: string
description: The placement you are requesting ads for.
customerId:
type: string
description: Your unique customerId. Optional.
sessionId:
type: string
description: Unique sessionId used for attribution. Required to be consistent between a user's session and order reporting.
searchTerm:
type: string
description: Used for search placements. The exact search term entered by the customer on your site.
contentStandardId:
type: string
description: The banner contentStandardId. Required for banners.
bannerSlotIds:
type: array
description: The banner slots ads are required for.
items:
properties:
slotId:
type: string
description: The bannerSlotId ads are required for.
maxNumberOfAds:
type: integer
description: The maximum number of product ads to receive.
format: int32
type: object
productFilters:
type: string
description: An array or arrays are required depending on your ad generation filtering. Used in category placements or any other placement to further define business rules. Not currently compatible with cross-sell or upsell placements.
default: '[ [ "category:Frozen" ], ["Location:Brisbane Central"]]'
format: json
options:
type: array
items:
properties:
filtermode:
type: string
description: Defines the ad generation filtering mode.
default: AndOr
cached:
type: boolean
description: Defines if the retailer expects to cache the adId
default: false
includeAdvertiserInfo:
type: boolean
description: Defines if the retailer requires advertiser information to comply with the EU's Digital Services Act
default: true
type: object
audience:
type: array
items:
properties:
segmentIds:
type: array
description: The list of segment IDs that the customer can access.
default: []
items:
type: string
sourceId:
type: string
description: The agreed ID of the source between Epsilon and yourself. Used when multiple sources are used for segments. Not required if only syncing from one source.
default: retailer-cdp-1
type: object
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"ads\": [\n {\n \"contentStandardId\": \"string\",\n \"slotId\": \"string\",\n \"banners\": [\n {\n \"citrusAdId\": \"string\",\n \"citrusCampaignName\": \"string\",\n \"citrusContentStandardId\": \"string\",\n \"citrusSlotId\": \"string\",\n \"citrusExpiry\": \"string\",\n \"headingText\": \"string\",\n \"bannerText\": \"string\",\n \"bannerTextColour\": \"string\",\n \"ctaFlag\": boolean,\n \"ctaText\": \"string\",\n \"ctaTextAccessibility\": \"string\",\n \"ctaLink\": \"string\",\n \"backgroundColour\": \"string\",\n \"backgroundImage\": \"string\",\n \"backgroundImagePosition\": \"string\",\n \"heroImage\": \"string\",\n \"heroImageAltText\": \"string\",\n \"secondaryHeroImage\": \"string\",\n \"secondaryHeroImageAltText\": \"string\",\n \"tags\": {},\n \"gtins\": [\n \"string\",\n \"string\"\n ],\n \"position\": integer,\n \t\"metadata\": {\n \t\t\t\t\t\t\t\"advertiserInfo\": {\n \t\t\t\t\t\t\t\"advertiser\": \"string\",\n \t\t\t\t\t\t\t\"onBehalfOf\": \"string\"\n }\n }\n ]\n }\n ], \n \"metadata\": []\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: ''
'401':
description: '401'
content:
text/plain:
examples:
Result:
value: ''
'403':
description: '403'
content:
text/plain:
examples:
Result:
value: ''
'404':
description: '404'
content:
text/plain:
examples:
Result:
value: ''
'429':
description: '429'
content:
text/plain:
examples:
Result:
value: ''
'500':
description: '500'
content:
text/plain:
examples:
Result:
value: ''
'502':
description: '502'
content:
text/plain:
examples:
Result:
value: ''
'503':
description: '503'
content:
text/plain:
examples:
Result:
value: ''
'504':
description: '504'
content:
text/plain:
examples:
Result:
value: ''
deprecated: false
tags:
- Ads
components:
securitySchemes:
sec0:
type: apiKey
name: Authorization
in: header
x-bearer-format: basic
x-default: YOUR_API_KEY