OutFlo Public API / Guide

Analytics and reporting

Query organization and campaign performance through focused reporting endpoints.

Overview

Analytics operations use query parameters for date ranges, campaigns, senders, statuses, and aggregation behavior. Every endpoint returns the same response envelope even though its data object reflects a different reporting surface.

Authentication

Send the same x-api-key header with every request.

Manage API keys
Canonical contract

Request and response schemas

Every operation below follows the same contract order. All responses use the standard status, data, and error envelope.

GET/api/public/campaigns/{id}/analytics/overviewGet campaign analytics overview

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

FieldTypeRequiredDescription
connection_statusstring · CSVNoComma-separated connection statuses.
reply_statusstring · CSVNoComma-separated reply statuses.
account_idstring · CSVNoComma-separated sender account UUIDs.
overall_statusstring · CSVNoComma-separated lead workflow statuses.
from_datestring · date-timeNoInclusive ISO 8601 start timestamp.
to_datestring · date-timeNoInclusive ISO 8601 end timestamp.
search_textstringNoCase-insensitive lead search text.
timezonestringNoTimezone used for date grouping.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet campaign analytics overview result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "connection_status": "<string>",
  "reply_status": "<string>",
  "account_id": "<string>",
  "overall_status": "<string>",
  "from_date": "<string>",
  "to_date": "<string>",
  "search_text": "<string>",
  "timezone": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/campaigns/{id}/analytics/funnelGet campaign funnel analytics

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

FieldTypeRequiredDescription
connection_statusstring · CSVNoComma-separated connection statuses.
reply_statusstring · CSVNoComma-separated reply statuses.
account_idstring · CSVNoComma-separated sender account UUIDs.
overall_statusstring · CSVNoComma-separated lead workflow statuses.
from_datestring · date-timeNoInclusive ISO 8601 start timestamp.
to_datestring · date-timeNoInclusive ISO 8601 end timestamp.
search_textstringNoCase-insensitive lead search text.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet campaign funnel analytics result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "connection_status": "<string>",
  "reply_status": "<string>",
  "account_id": "<string>",
  "overall_status": "<string>",
  "from_date": "<string>",
  "to_date": "<string>",
  "search_text": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/campaigns/{id}/analytics/sequencesGet campaign sequence analytics

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

No query parameters.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet campaign sequence analytics result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Request example
{
  "headers": {
    "x-api-key": "<string>"
  }
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/campaigns/{id}/analytics/tagsGet campaign tag analytics

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

FieldTypeRequiredDescription
idstring · UUIDYesid path identifier.

Query parameters

FieldTypeRequiredDescription
tag_idsstring · CSVNoComma-separated tag IDs.
connection_statusstring · CSVNoComma-separated connection statuses.
reply_statusstring · CSVNoComma-separated reply statuses.
account_idstring · CSVNoComma-separated sender account UUIDs.
overall_statusstring · CSVNoComma-separated lead workflow statuses.
from_datestring · date-timeNoInclusive ISO 8601 start timestamp.
to_datestring · date-timeNoInclusive ISO 8601 end timestamp.
search_textstringNoCase-insensitive lead search text.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet campaign tag analytics result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "tag_ids": "<string>",
  "connection_status": "<string>",
  "reply_status": "<string>",
  "account_id": "<string>",
  "overall_status": "<string>",
  "from_date": "<string>",
  "to_date": "<string>",
  "search_text": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/analytics/overviewGet organization analytics overview

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
start_datestring · dateNoInclusive reporting start date in YYYY-MM-DD or ISO format.
end_datestring · dateNoInclusive reporting end date in YYYY-MM-DD or ISO format.
campaign_idstring · CSVNoComma-separated campaign UUIDs.
account_idstring · CSVNoComma-separated sender account UUIDs.
statusenumNoactive, paused, draft, or completed.
timezonestringNoIANA timezone used to group reporting dates.
bucketenumNodaily or weekly aggregation bucket.
rollingbooleanNoWhether values should use a rolling window.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet organization analytics overview result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "start_date": "<string>",
  "end_date": "<string>",
  "campaign_id": "<string>",
  "account_id": "<string>",
  "status": "<string>",
  "timezone": "<string>",
  "bucket": "<string>",
  "rolling": false
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/analytics/timeseriesGet organization analytics timeseries

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
start_datestring · dateNoInclusive reporting start date in YYYY-MM-DD or ISO format.
end_datestring · dateNoInclusive reporting end date in YYYY-MM-DD or ISO format.
campaign_idstring · CSVNoComma-separated campaign UUIDs.
account_idstring · CSVNoComma-separated sender account UUIDs.
statusenumNoactive, paused, draft, or completed.
timezonestringNoIANA timezone used to group reporting dates.
bucketenumNodaily or weekly aggregation bucket.
rollingbooleanNoWhether values should use a rolling window.
metricenumNoMetric to plot, such as replies_received or messages_sent.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet organization analytics timeseries result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "start_date": "<string>",
  "end_date": "<string>",
  "campaign_id": "<string>",
  "account_id": "<string>",
  "status": "<string>",
  "timezone": "<string>",
  "bucket": "<string>",
  "rolling": false,
  "metric": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/analytics/sendersGet sender analytics

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
start_datestring · dateNoInclusive reporting start date in YYYY-MM-DD or ISO format.
end_datestring · dateNoInclusive reporting end date in YYYY-MM-DD or ISO format.
campaign_idstring · CSVNoComma-separated campaign UUIDs.
account_idstring · CSVNoComma-separated sender account UUIDs.
statusenumNoactive, paused, draft, or completed.
timezonestringNoIANA timezone used to group reporting dates.
rollingbooleanNoWhether values should use a rolling window.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet sender analytics result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "start_date": "<string>",
  "end_date": "<string>",
  "campaign_id": "<string>",
  "account_id": "<string>",
  "status": "<string>",
  "timezone": "<string>",
  "rolling": false
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}
GET/api/public/analytics/campaignsGet campaign analytics

Headers

FieldTypeRequiredDescription
x-api-keystringYesWorkspace API key.

Path parameters

No path parameters.

Query parameters

FieldTypeRequiredDescription
start_datestring · dateNoInclusive reporting start date in YYYY-MM-DD or ISO format.
end_datestring · dateNoInclusive reporting end date in YYYY-MM-DD or ISO format.
campaign_idstring · CSVNoComma-separated campaign UUIDs.
account_idstring · CSVNoComma-separated sender account UUIDs.
statusenumNoactive, paused, draft, or completed.
timezonestringNoIANA timezone used to group reporting dates.

Request body

No request body.

Success response · 200

FieldTypeRequiredDescription
statusintegerYesHTTP status mirrored in the JSON body. Success: 200.
dataobject | array | nullYesGet campaign analytics result. The exact data fields depend on the selected resource.
errorstring | nullYesNull on success; a developer-readable message on failure.
Query example
{
  "start_date": "<string>",
  "end_date": "<string>",
  "campaign_id": "<string>",
  "account_id": "<string>",
  "status": "<string>",
  "timezone": "<string>"
}
Standard success envelope · 200
{
  "status": 200,
  "data": "<endpoint-specific response data>",
  "error": null
}
Standard error envelope
{
  "status": 400,
  "data": null,
  "error": "Developer-readable error message"
}