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/streetmetrics-attribution-studies-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: Streetmetrics Attribution Studies API
version: '3.0'
contact: {}
description: 'Operations tagged Attribution Studies across 2 of this provider''s published API definitions: streetmetrics-public-api-docs-json.json, streetmetrics-public-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
tags:
- name: Attribution Studies
paths:
/public/attribution-studies/files/{id}:
get:
operationId: AttributionStudyController_getAttributionStudyFile
parameters:
- name: id
required: true
in: path
description: ID of the attribution study
schema:
type: number
responses:
'200':
description: File downloaded successfully
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'404':
description: File not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Download an attribution study file as a ZIP
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/public/attribution-studies/{id}:
get:
operationId: AttributionStudyController_getAttributionStudy
parameters:
- name: id
required: true
in: path
description: ID of the attribution study
schema:
type: number
- name: limit
required: false
in: query
description: Limit the number of results (max 10000)
schema:
type: number
- name: sort
required: false
in: query
description: Field to sort by
schema:
type: string
- name: order
required: false
in: query
description: Order direction
schema:
type: string
enum:
- ASC
- DESC
- name: cursor
required: false
in: query
description: "Cursor for pagination. \n The cursor is used to fetch the next set of results in a paginated response.\n Typically, it is provided in the 'nextCursor' field of the previous response.\n Usage:\n - Start by making an initial request without a cursor.\n - In the response, you'll receive a 'nextCursor' if there are more results to fetch.\n - Use this 'nextCursor' value as the cursor in your subsequent request to fetch the next page of results.\n - Continue this process until the 'nextCursor' is null or not provided, indicating there are no more results.\n Example: \n \n ?cursor=12345\n "
schema:
type: string
- name: include
required: false
in: query
description: 'Entities to include in the response. Possible values: campaigns'
schema:
type: string
- name: search
required: false
in: query
description: "Search query string. The syntax is 'fieldName.operation(a|o):value'.\n The a|o (AND|OR) is optional and if not provided, it is considered as AND.\n Additional searches can be chained with a comma.\n Supported operations are:\n - gt: Greater than\n - lt: Less than\n - gte: Greater than or equal to\n - lte: Less than or equal to\n - eq: Equal to\n - ne: Not equal to\n - ilike: Case-insensitive like\n - like: Case-sensitive like\n - startilike: Case-insensitive like at the start\n - endilike: Case-insensitive like at the end\n - startlike: Case-sensitive like at the start\n - endlike: Case-sensitive like at the end\n Logical operators:\n - a: AND\n - o: OR\n Examples:\n - assetRef.ilike:E62\n Returns all assets with assetRef like E62\n - createdAt.gte:2021-01-01\n Returns all assets created after 2021-01-01\n - status.eqo:PENDING,status.eqo:APPROVED\n Returns all assets with status either PENDING OR APPROVED\n - name.startilike:John\n Returns all assets with name starting with John\n - age.gtea:30,age.lt:40\n Returns all assets with age greater than or equal to 30 and less than 40"
schema:
example: assetRef.ilike:E62,createdAt.gte:2021-01-01
type: string
responses:
'200':
description: Attribution study retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ClientAttributionStudyEntityDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'404':
description: Attribution study not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Get a specific attribution study by ID
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/public/attribution-studies:
get:
operationId: AttributionStudyController_getAttributionStudies
parameters:
- name: limit
required: false
in: query
description: Limit the number of results (max 10000)
schema:
type: number
- name: sort
required: false
in: query
description: Field to sort by
schema:
type: string
- name: order
required: false
in: query
description: Order direction
schema:
type: string
enum:
- ASC
- DESC
- name: cursor
required: false
in: query
description: "Cursor for pagination. \n The cursor is used to fetch the next set of results in a paginated response.\n Typically, it is provided in the 'nextCursor' field of the previous response.\n Usage:\n - Start by making an initial request without a cursor.\n - In the response, you'll receive a 'nextCursor' if there are more results to fetch.\n - Use this 'nextCursor' value as the cursor in your subsequent request to fetch the next page of results.\n - Continue this process until the 'nextCursor' is null or not provided, indicating there are no more results.\n Example: \n \n ?cursor=12345\n "
schema:
type: string
- name: include
required: false
in: query
description: 'Entities to include in the response. Possible values: campaigns'
schema:
type: string
- name: search
required: false
in: query
description: "Search query string. The syntax is 'fieldName.operation(a|o):value'.\n The a|o (AND|OR) is optional and if not provided, it is considered as AND.\n Additional searches can be chained with a comma.\n Supported operations are:\n - gt: Greater than\n - lt: Less than\n - gte: Greater than or equal to\n - lte: Less than or equal to\n - eq: Equal to\n - ne: Not equal to\n - ilike: Case-insensitive like\n - like: Case-sensitive like\n - startilike: Case-insensitive like at the start\n - endilike: Case-insensitive like at the end\n - startlike: Case-sensitive like at the start\n - endlike: Case-sensitive like at the end\n Logical operators:\n - a: AND\n - o: OR\n Examples:\n - assetRef.ilike:E62\n Returns all assets with assetRef like E62\n - createdAt.gte:2021-01-01\n Returns all assets created after 2021-01-01\n - status.eqo:PENDING,status.eqo:APPROVED\n Returns all assets with status either PENDING OR APPROVED\n - name.startilike:John\n Returns all assets with name starting with John\n - age.gtea:30,age.lt:40\n Returns all assets with age greater than or equal to 30 and less than 40"
schema:
example: assetRef.ilike:E62,createdAt.gte:2021-01-01
type: string
responses:
'200':
description: List of attribution studies retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientAttributionStudyEntityDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Get a list of attribution studies
tags:
- Attribution Studies
post:
description: Creates an attribution study for a campaign. For Footfall studies, the campaign must have at least one market that is not blacklisted; a request for a Footfall study against a fully-blacklisted campaign is rejected with a 400. If a Footfall campaign is partially blacklisted, the study is still created and a note about the excluded markets is appended to the response `message`. Web and Mobile studies are not subject to this blacklist check.
operationId: AttributionStudyController_createAttributionStudy
parameters: []
requestBody:
required: true
description: Data to create a new attribution study
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAttributionStudyDto'
responses:
'201':
description: Attribution study created successfully. For a partially-blacklisted Footfall campaign, the `message` field also notes which markets were excluded.
'400':
description: Footfall study requested against a campaign whose markets are all blacklisted.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Create a new attribution study
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/public/attribution-studies/conversions/date:
get:
description: Retrieves conversion data aggregated by date. When summaryBin is specified, data is grouped by time periods (week, month, day, etc.).
operationId: AttributionStudyController_getConversionsByDate
parameters:
- name: attributionId
required: true
in: query
description: Attribution study ID
schema:
type: number
- name: startDate
required: false
in: query
description: Start date as Unix timestamp in epoch seconds. If not provided, uses attribution study start date.
schema:
type: number
- name: endDate
required: false
in: query
description: End date as Unix timestamp in epoch seconds. If not provided, uses attribution study post-study end date.
schema:
type: number
- name: summaryBin
required: false
in: query
description: Optional summary bin for grouping data by time periods (WEEK, MONTH, DAY, HOUR, LIFETIME, DOW). When specified, results include summaryBinGrouping field.
schema:
type: string
enum:
- LIFETIME
- WEEK
- MONTH
- DAY
- HOUR
- DOW
- name: timezone
required: false
in: query
description: Timezone for date calculations
schema:
type: string
responses:
'200':
description: Conversions by date retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetConversionsByDateResponseDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Get conversions aggregated by date
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/public/attribution-studies/conversions/ad-group:
get:
description: Retrieves conversion data aggregated by ad group (flight). When summaryBin is specified, data is grouped by both ad group and time periods.
operationId: AttributionStudyController_getConversionsByAdGroup
parameters:
- name: attributionId
required: true
in: query
description: Attribution study ID
schema:
type: number
- name: startDate
required: false
in: query
description: Start date as Unix timestamp in epoch seconds. If not provided, uses attribution study start date.
schema:
type: number
- name: endDate
required: false
in: query
description: End date as Unix timestamp in epoch seconds. If not provided, uses attribution study post-study end date.
schema:
type: number
- name: summaryBin
required: false
in: query
description: Optional summary bin for grouping data by time periods (WEEK, MONTH, DAY, HOUR, LIFETIME, DOW). When specified, results include summaryBinGrouping field.
schema:
type: string
enum:
- LIFETIME
- WEEK
- MONTH
- DAY
- HOUR
- DOW
- name: timezone
required: false
in: query
description: Timezone for date calculations
schema:
type: string
responses:
'200':
description: Conversions by ad group retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetConversionsByAdGroupResponseDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Get conversions aggregated by ad group
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/public/attribution-studies/conversions/unit:
get:
description: Retrieves conversion data aggregated by unit (matchable or creative). When summaryBin is specified, data is grouped by both unit and time periods. Use useCreative=true to group by creative instead of matchable.
operationId: AttributionStudyController_getConversionsByUnit
parameters:
- name: attributionId
required: true
in: query
description: Attribution study ID
schema:
type: number
- name: startDate
required: false
in: query
description: Start date as Unix timestamp in epoch seconds. If not provided, uses attribution study start date.
schema:
type: number
- name: endDate
required: false
in: query
description: End date as Unix timestamp in epoch seconds. If not provided, uses attribution study post-study end date.
schema:
type: number
- name: summaryBin
required: false
in: query
description: Optional summary bin for grouping data by time periods (WEEK, MONTH, DAY, HOUR, LIFETIME, DOW). When specified, results include summaryBinGrouping field.
schema:
type: string
enum:
- LIFETIME
- WEEK
- MONTH
- DAY
- HOUR
- DOW
- name: timezone
required: false
in: query
description: Timezone for date calculations
schema:
type: string
- name: useCreative
required: false
in: query
description: When true, groups by creative fields instead of matchable fields. Only available for /unit endpoint.
schema:
type: boolean
responses:
'200':
description: Conversions by unit retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetConversionsByUnitResponseDto'
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
summary: Get conversions aggregated by unit
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/attribution-studies/files/{id}:
get:
operationId: AttributionStudyController_getAttributionStudyFile
summary: Download an attribution study file as a ZIP
parameters:
- name: id
required: true
in: path
description: ID of the attribution study
schema:
type: number
responses:
'200':
description: File downloaded successfully
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'404':
description: File not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/attribution-studies/{id}:
get:
operationId: AttributionStudyController_getAttributionStudy
summary: Get a specific attribution study by ID
parameters:
- name: id
required: true
in: path
description: ID of the attribution study
schema:
type: number
- name: limit
required: false
in: query
description: Limit the number of results (max 10000)
schema:
type: number
- name: sort
required: false
in: query
description: Field to sort by
schema:
type: string
- name: order
required: false
in: query
description: Order direction
schema:
enum:
- ASC
- DESC
type: string
- name: cursor
required: false
in: query
description: "Cursor for pagination. \n The cursor is used to fetch the next set of results in a paginated response.\n Typically, it is provided in the 'nextCursor' field of the previous response.\n Usage:\n - Start by making an initial request without a cursor.\n - In the response, you'll receive a 'nextCursor' if there are more results to fetch.\n - Use this 'nextCursor' value as the cursor in your subsequent request to fetch the next page of results.\n - Continue this process until the 'nextCursor' is null or not provided, indicating there are no more results.\n Example: \n \n ?cursor=12345\n "
schema:
type: string
- name: include
required: false
in: query
description: 'Entities to include in the response. Possible values: campaigns'
schema:
type: string
- name: search
required: false
in: query
description: "Search query string. The syntax is 'fieldName.operation(a|o):value'.\n The a|o (AND|OR) is optional and if not provided, it is considered as AND.\n Additional searches can be chained with a comma.\n Supported operations are:\n - gt: Greater than\n - lt: Less than\n - gte: Greater than or equal to\n - lte: Less than or equal to\n - eq: Equal to\n - ne: Not equal to\n - ilike: Case-insensitive like\n - like: Case-sensitive like\n - startilike: Case-insensitive like at the start\n - endilike: Case-insensitive like at the end\n - startlike: Case-sensitive like at the start\n - endlike: Case-sensitive like at the end\n Logical operators:\n - a: AND\n - o: OR\n Examples:\n - assetRef.ilike:E62\n Returns all assets with assetRef like E62\n - createdAt.gte:2021-01-01\n Returns all assets created after 2021-01-01\n - status.eqo:PENDING,status.eqo:APPROVED\n Returns all assets with status either PENDING OR APPROVED\n - name.startilike:John\n Returns all assets with name starting with John\n - age.gtea:30,age.lt:40\n Returns all assets with age greater than or equal to 30 and less than 40"
example: assetRef.ilike:E62,createdAt.gte:2021-01-01
schema:
type: string
responses:
'200':
description: Attribution study retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ClientAttributionStudyEntityDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'404':
description: Attribution study not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/attribution-studies:
get:
operationId: AttributionStudyController_getAttributionStudies
summary: Get a list of attribution studies
parameters:
- name: limit
required: false
in: query
description: Limit the number of results (max 10000)
schema:
type: number
- name: sort
required: false
in: query
description: Field to sort by
schema:
type: string
- name: order
required: false
in: query
description: Order direction
schema:
enum:
- ASC
- DESC
type: string
- name: cursor
required: false
in: query
description: "Cursor for pagination. \n The cursor is used to fetch the next set of results in a paginated response.\n Typically, it is provided in the 'nextCursor' field of the previous response.\n Usage:\n - Start by making an initial request without a cursor.\n - In the response, you'll receive a 'nextCursor' if there are more results to fetch.\n - Use this 'nextCursor' value as the cursor in your subsequent request to fetch the next page of results.\n - Continue this process until the 'nextCursor' is null or not provided, indicating there are no more results.\n Example: \n \n ?cursor=12345\n "
schema:
type: string
- name: include
required: false
in: query
description: 'Entities to include in the response. Possible values: campaigns'
schema:
type: string
- name: search
required: false
in: query
description: "Search query string. The syntax is 'fieldName.operation(a|o):value'.\n The a|o (AND|OR) is optional and if not provided, it is considered as AND.\n Additional searches can be chained with a comma.\n Supported operations are:\n - gt: Greater than\n - lt: Less than\n - gte: Greater than or equal to\n - lte: Less than or equal to\n - eq: Equal to\n - ne: Not equal to\n - ilike: Case-insensitive like\n - like: Case-sensitive like\n - startilike: Case-insensitive like at the start\n - endilike: Case-insensitive like at the end\n - startlike: Case-sensitive like at the start\n - endlike: Case-sensitive like at the end\n Logical operators:\n - a: AND\n - o: OR\n Examples:\n - assetRef.ilike:E62\n Returns all assets with assetRef like E62\n - createdAt.gte:2021-01-01\n Returns all assets created after 2021-01-01\n - status.eqo:PENDING,status.eqo:APPROVED\n Returns all assets with status either PENDING OR APPROVED\n - name.startilike:John\n Returns all assets with name starting with John\n - age.gtea:30,age.lt:40\n Returns all assets with age greater than or equal to 30 and less than 40"
example: assetRef.ilike:E62,createdAt.gte:2021-01-01
schema:
type: string
responses:
'200':
description: List of attribution studies retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientAttributionStudyEntityDto'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
tags:
- Attribution Studies
post:
operationId: AttributionStudyController_createAttributionStudy
summary: Create a new attribution study
parameters: []
requestBody:
required: true
description: Data to create a new attribution study
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAttributionStudyDto_2'
responses:
'201':
description: Attribution study created successfully
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDto'
tags:
- Attribution Studies
servers:
- url: https://dashboard.streetmetrics.io/v3/public/
/attribution-studies/conversions/date:
get:
operationId: AttributionStudyController_getConversionsByDate
summary: Get conversions aggregated by date
description: Retrieves conversion data aggregated by date. When summaryBin is specified, data is grouped by time periods (week, month, day, etc.).
parameters:
- name: attributionId
required: true
in: query
description: Attribution study ID
schema:
type: number
- name: startDate
required: false
in: query
description: Start date as Unix timestamp in epoch seconds. If not provided, uses attribution study start date.
schema:
type: number
- name: endDate
required: false
in: query
description: End date as Unix timestamp in epoch seconds. If not provided, uses attribution study post-study end date.
schema:
type: number
- name: summaryBin
required: false
in: query
description: Optional summary bin for grouping data by time periods (WEEK, MONTH, DAY, HOUR, LIFETIME, DOW). When specified, results include summaryBinGrouping field.
schema:
enum:
- LIFETIME
- WEEK
- MONTH
- DAY
- HOUR
- DOW
type: string
- name: timezone
required: false
in: query
descrip
# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/streetmetrics/refs/heads/main/openapi/streetmetrics-attribution-studies-api-openapi.yml