Skip to main content

ROAS Evolution Endpoint

The ROAS Evolution endpoint provides detailed analytics about Return on Advertising Spend (ROAS) over time. This endpoint allows you to track and analyze the effectiveness of your marketing investments across different channels and campaigns.

Endpoint Details

  • URL: https://app.sealmetrics.com/api/report/roas-evolution
  • Method: GET
  • Authentication: Bearer Token required

Request Parameters

Headers

HeaderValueRequired
AuthorizationBearer your_access_tokenYes
Acceptapplication/jsonYes
Connectionkeep-aliveRecommended
Accept-Encodinggzip, deflate, brRecommended

Query Parameters

ParameterTypeRequiredDescription
account_idstringYesYour account identifier
date_rangestringYesDate range (YYYYMMDD,YYYYMMDD or presets like this_month)
skipintegerNoRecords to skip (default 0)
limitintegerNoMax records to return (default 100, max 100)
time_unitstringNo"daily", "weekly", or "monthly" (default: daily)
utm_mediumstringNoFilter by medium
utm_sourcestringNoFilter by source
utm_campaignstringNoFilter by campaign
countrystringNoISO country code

Example Request

cURL

curl --location 'https://app.sealmetrics.com/api/report/roas-evolution?account_id=000000000000000000001234&date_range=this_month&skip=0&limit=100&time_unit=daily' --header 'Authorization: Bearer TOKEN_HERE' --header 'Accept: application/json' --header 'Connection: keep-alive' --header 'Accept-Encoding: gzip, deflate, br'

Python

import requests

url = "https://app.sealmetrics.com/api/report/roas-evolution"

querystring = {
"account_id": "000000000000000000001234",
"date_range": "this_month",
"skip": "0",
"limit": "100",
"time_unit": "daily"
}

headers = {
"Authorization": "Bearer TOKEN_HERE",
"Accept": "application/json",
"Connection": "keep-alive",
"Accept-Encoding": "gzip, deflate, br"
}

response = requests.get(url, headers=headers, params=querystring)
print(response.text)

JavaScript

var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer TOKEN_HERE");
myHeaders.append("Accept", "application/json");
myHeaders.append("Connection", "keep-alive");
myHeaders.append("Accept-Encoding", "gzip, deflate, br");

var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};

fetch("https://app.sealmetrics.com/api/report/roas-evolution?account_id=000000000000000000001234&date_range=this_month&skip=0&limit=100&time_unit=daily", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));

Response

Success Response (200 OK)

{
"status": "ok",
"data": [
{
"_id": "2024-07-01",
"clicks": 1623,
"page_views": 10458,
"conversions": 117,
"microconversions": 441,
"revenue": 42466.97
},
{
"_id": "2024-07-02",
"clicks": 1845,
"page_views": 11258,
"conversions": 132,
"microconversions": 487,
"revenue": 38975.23
}
]
}

Response Parameters

FieldTypeDescription
_idstringDate/time period based on time_unit
clicksnumberClicks in the period
page_viewsnumberPage views in the period
conversionsnumberConversions in the period
microconversionsnumberMicroconversions in the period
revenuenumberRevenue in the period

Error Response (401 Unauthorized)

{
"status": "error",
"message": "Unauthenticated"
}

Error Response (400 Bad Request)

{
"status": "error",
"message": "Missing required parameter: account_id"
}

Notes

  • Use time_unit to control aggregation granularity.
  • Combine with UTM filters for deeper attribution.
  • ROAS = revenue / ad spend (ad spend is not included in this endpoint).