CampaignsApprovals
List Approvals
List message approvals across all campaigns (or filtered to one).
AuthorizationBearer <token>
In: header
Query Parameters
campaign_id?string|null
campaign_lead_id?string|null
approval_status?string
Default
"pending"page?integer
Default
1page_size?integer
Default
50Header Parameters
x-tenant-id?string|null
Response Body
application/json
application/json
curl -X GET "https://api.obert.io/api/campaigns/approvals"{
"data": [
{
"id": "string",
"tenant_id": "string",
"campaign_id": "string",
"campaign_lead_id": "string",
"node_id": "string",
"generated_message": "string",
"ai_prompt": "string",
"lead_context": {},
"status": "pending",
"approved_message": "string",
"reviewed_by": "string",
"reviewed_at": "2019-08-24T14:15:22Z",
"created_at": "2019-08-24T14:15:22Z",
"campaign_name": "string",
"lead_name": "string",
"lead_headline": "string",
"lead_company": "string",
"lead_profile_picture_url": "string",
"lead_linkedin_url": "string",
"sender_name": "string",
"sender_profile_picture_url": "string",
"icp_score": 0,
"icp_tier": "string",
"personalization_reasoning": "string",
"personalization_score": 0,
"citations": [
{}
],
"versions": []
}
],
"total": 0,
"has_more": false,
"page": 1,
"page_size": 0
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}GETGet Approval Send Window
Snapshot of the send-window decision — drives the approval dialog. Returns ``allowed_now=true`` when an immediate send is inside the working window. Otherwise the response carries the ``next_slot`` and ``reason`` so the frontend can render the 'outside working hours' confirmation dialog before the actual approve call.
POSTRegenerate Message
Regenerate the AI message with optional feedback.