Oviond
Guides

Querying Data

How to use the query endpoint with metrics, dimensions, and date ranges

Querying Data

The query endpoint is the core of the Oviond API. It fetches and formats data from any integration using a consistent request/response structure.

Endpoint

POST /v1/integrations/{id}/query

Required Headers

HeaderValueDescription
Content-Typeapplication/jsonRequest body format
AuthorizationBearer oviond_xxxYour Oviond API key (see Authentication)
X-Client-IDCLIENT_IDYour CLIENT ID

Request Body

FieldTypeRequiredDescription
dataViewstringYesThe data view to query (e.g. "default", "campaigns")
metricsstring[]YesArray of metric IDs to fetch
dimensionsstring[]YesDimension IDs to group results by
dateRangeobjectYesCurrent and previous date ranges
timezonestringYesIANA timezone (e.g. "UTC", "America/New_York")
filtersobject[]NoOptional filters to narrow results (GA4, Google Ads, Facebook Ads, Instagram Ads)
extraobjectNoIntegration-specific parameters (see Extra Parameters below)

Date Ranges

Every query requires both a current and previous date range for comparison:

{
  "dateRange": {
    "current": {
      "startDate": "2025-01-01",
      "endDate": "2025-01-31"
    },
    "previous": {
      "startDate": "2024-12-01",
      "endDate": "2024-12-31"
    }
  }
}

Dates use YYYY-MM-DD format.

Metrics

Metrics are the numeric values you want to fetch. Each integration defines its own metric IDs — browse them in the Field Reference.

{
  "metrics": ["sessions", "pageviews", "bounce_rate"]
}

Dimensions

Dimensions break down metrics by a category (e.g. by country, by page, by campaign):

{
  "dimensions": ["country"]
}

Some integrations support multiple dimensions in the array:

  • Google Ads
  • Meta Ads
  • Instagram Ads
  • Google Analytics 4

Response Format

All query responses use the FormattedResult structure:

{
  "success": true,
  "data": {
    "current": [
      { "date": "2025-01-01", "sessions": 150, "pageviews": 420 }
    ],
    "currentSummary": {
      "sessions": 4500,
      "pageviews": 12600
    },
    "previous": [
      { "date": "2024-12-01", "sessions": 130, "pageviews": 380 }
    ],
    "previousSummary": {
      "sessions": 4100,
      "pageviews": 11200
    },
    "state": "ACTIVE"
  }
}

The state field indicates:

  • ACTIVE — data was returned successfully
  • NO_DATA — query succeeded but no data in range
  • ERROR — something went wrong

Data Views

Integrations can have multiple data views representing different data sets. For example, a social media integration might have "posts", "audience", and "stories" data views.

Check available data views for an integration:

curl https://api.oviond.com/v1/integrations/{id}

Extra Parameters

The extra field passes integration-specific parameters that don't fit into the standard metrics, dimensions, filters, or dateRange fields. These are typically entity selections (campaigns, audiences, etc.), view filters, or integration-specific settings.

{
  "dataView": "CAMPAIGNS",
  "metrics": ["impressions", "clicks"],
  "dimensions": ["campaign"],
  "dateRange": { ... },
  "extra": {
    "campaigns": [{ "value": "123" }, { "value": "456" }],
    "attribution": "7d_click"
  }
}

Only the integrations listed below use extra. Integrations not listed here ignore it.

Facebook Ads

FieldTypeDescription
attributionstringAttribution model (e.g. "7d_click", "1d_view"). Defaults to account setting.
attributionWindowsstring[]Attribution windows. Defaults to ["default"].
campaignsobject[]Filter by campaigns. Each object: { value: "campaign_id" }.
adsetsobject[]Filter by ad sets. Each object: { value: "adset_id" }.
adsobject[]Filter by ads. Each object: { value: "ad_id" }.

Instagram Ads

FieldTypeDescription
attributionstringAttribution model. Defaults to account setting.

LinkedIn Ads

FieldTypeDescription
campaignGroupsobject[]Filter by campaign groups. Each object: { value: "group_id" }.
campaignsobject[]Filter by campaigns. Each object: { value: "campaign_id" }.
adsobject[]Filter by creatives. Each object: { value: "creative_id" }.

TikTok Ads

FieldTypeDescription
campaignsobject[]Filter by campaigns. Each object: { value: "campaign_id" }.
adgroupsobject[]Filter by ad groups. Each object: { value: "adgroup_id" }.
adsobject[]Filter by ads. Each object: { value: "ad_id" }.

Twitter Ads

FieldTypeDescription
placementstringAd placement (e.g. "ALL_ON_TWITTER", "PUBLISHER_NETWORK").

Google Search Console

FieldTypeDescription
searchTypestringSearch type: "web", "image", "video", "news". Defaults to "web".

Google PageSpeed

FieldTypeDescription
categorystringLighthouse category (e.g. "performance", "accessibility").
strategystringDevice strategy: "desktop" or "mobile". Defaults to "desktop".
connectionTypestringConnection type for Chrome UX Report.
deviceTypestringDevice type for Chrome UX Report.

Google Sheets

FieldTypeDescription
aggregatebooleanWhether to aggregate row data.
symbolsobjectSymbol mapping for columns.

HubSpot

FieldTypeDescription
groupBystringGroup analytics by source dimension (e.g. "social", "organic"). Defaults to "none".

Semrush

FieldTypeDescription
regionobjectSearch engine region. { value: "us" }. Defaults to "us".
campaignobjectPosition tracking campaign. { value: "campaign_id" }.

SE Ranking

FieldTypeDescription
searchEngineobjectSearch engine selection. { value: "engine_id" }.
keywordobjectKeyword filter. { value: "keyword_text" }.
competitorobjectCompetitor filter. { value: "competitor_domain" }.
sourceanyData source.
typeanyQuery type.
checkanyCheck configuration.
compareanyComparison configuration.

Serpstat

FieldTypeDescription
searchEngineobjectSearch engine. { value: "google_com" }.
keywordobjectKeyword filter. { value: "keyword_text" }.

Mailchimp

FieldTypeDescription
campaignobjectFilter to a specific campaign. { value: "campaign_id" }.
audienceobjectFilter to a specific audience/list. { value: "list_id" }.
automationobjectFilter to a specific automation. { value: "automation_id" }.
interestCategoryobjectInterest category for audience interests. { value: "category_id" }.
interestobjectSpecific interest within a category. { value: "interest_id" }.
campaignClickobjectCampaign link click filter. { value: "link_id" }.

Campaign Monitor

FieldTypeDescription
campaignsobject[]Filter by campaigns. Each object: { value: "campaign_id" }.
listsobject[]Filter by subscriber lists. Each object: { value: "list_id" }.
journeysobject[]Filter by journeys. Each object: { value: "journey_id" }.

Klaviyo

FieldTypeDescription
campaignsobject[]Filter by campaigns (future use).
flowsobject[]Filter by flows (future use).

GetResponse

FieldTypeDescription
newslettersobject[]Filter by newsletters/campaigns. Each object: { value: "newsletter_id" }.

YouTube

FieldTypeDescription
viewobjectFilter to a specific video. { value: "video_id" }.

Instagram

FieldTypeDescription
viewobjectFilter to specific media. { value: "media_id" }.
mediaSurfacesstring[]Filter media by type (e.g. ["FEED"]).
hashtagstringHashtag to search.
hashtagTypestringHashtag search type: "recent_media" or "top_media". Defaults to "recent_media".

Call Rail

FieldTypeDescription
companystringFilter calls by company ID.

Mention

FieldTypeDescription
viewobjectSelect a specific alert. { value: "alert_id" }.

Vimeo

FieldTypeDescription
viewobjectFilter to a specific video. { value: "video_id" }.

Wistia

FieldTypeDescription
viewobjectFilter to a specific media. { value: "media_id" }.

Sendinblue (Brevo)

FieldTypeDescription
viewobjectFilter to a specific campaign. { value: "campaign_id" }.

ConvertKit

FieldTypeDescription
viewobjectView filter. { value: "form_id" }.

Drip

FieldTypeDescription
viewobjectView filter. { value: "campaign_id" }.

Basecamp

FieldTypeDescription
viewobjectSelect a to-do list. { value: "todolist_id" }.

WooCommerce

FieldTypeDescription
statusstringOrder status filter (e.g. "completed", "processing").

TikTok Organic

FieldTypeDescription
businessCategorystringBusiness category for benchmarks. Defaults to "OTHER".

Go High Level

FieldTypeDescription
statusstringOpportunity/contact status filter. Defaults to "all".