Launch Campaigns
Launch a Campaign Launcher template with your own creatives. You build and save the template once in the visual builder at Scalemate; this endpoint launches it with the creative links you supply.
The template is self-contained — the ad account, campaign, ad set and ad settings all live inside it. Your request only supplies the creatives and a webhook.
v2 endpoint. This launches Campaign Launcher templates and supports Facebook sales templates only. Use the Campaign templates endpoint to see which of your templates are launchable.
Endpoint Details
URL: https://api.scalemate.co/api/external/v2/launch
Method: POST
Headers
Content-Type: application/json
X-Api-Key: <YOUR_API_KEY>You can generate the API Key at the Settings page under the API Key section.
Parameters
template_id
integer (required)
Campaign Launcher template id. Find it via the Campaign templates endpoint or at the end of the builder URL. The template must be active and supported (a Facebook sales template).
file_links
array (required)
Creatives to launch. Each item is either a Google Drive URL (string) or an object with per-creative metadata (see below). Only Google Drive links are supported.
webhook_url
string (required)
Publicly accessible HTTPS URL. A POST with the launch result is sent here on completion.
campaign_name_override
string (optional)
Overrides the campaign name from the template.
adset_name_override
string (optional)
Overrides all ad set names. Split numbering (01_, 02_) is still appended when an ad set is split.
max_creatives_per_adset
integer (optional)
Overrides the template's per-ad-set max-creatives limit. Must be a positive integer.
daily_budget_override
number (optional)
Daily budget for this launch, in the ad account's currency (e.g. 49.99). Minimum 15. Only for templates where daily_budget_override_supported is true — see below.
file_links object form (per-creative overrides):
url
yes
Google Drive link to the creative file
title
no
Ad headline for this creative
description
no
Ad primary text / description for this creative
destination_url
no
Landing page URL for this creative
If an optional field is omitted, the value from the template's ad defaults is used.
Overriding the daily budget
daily_budget_override is a single amount for the whole launch, in major currency units of the ad account's currency — dollars, not cents. Fractions are allowed (49.99). The minimum is 15.
Where the amount lands depends on the template's budget mode:
CBO (campaign budget optimisation) → the created campaign's daily budget.
ABO (ad set budgets) → the daily budget of every ad set the launch creates. Ad sets that split into numbered copies (
01_,02_, …) each receive the full amount, so total daily spend multiplies with the number of copies.
The template must be able to receive the value. Check daily_budget_override_supported on the Campaign templates endpoint, or send the param and handle the 422:
CBO
The campaign is newly created (not an existing one) and uses a daily budget
ABO
Every ad set is newly created and uses a daily budget
An ABO template that reuses an existing campaign is fine — the budget lives on the newly created ad sets.
Meta's own per-currency and per-billing-event minimums still apply when the campaign is created.
How creatives are placed
The template's stored ads are ignored. Each ad set's ad defaults act as the prototype; one ad is created per accepted creative, named after the file (extension stripped).
Ad sets can have a creative filename filter (set per ad set in the Campaign Launcher UI — comma-separated, case-insensitive substrings;
*acts as a glob, e.g.*_9x16.*):Ad set with a filter → receives only creatives whose filename matches.
Ad set without a filter → receives all supplied creatives.
If an ad set ends up with more creatives than its max-creatives limit, it is split into numbered copies (
01_Name,02_Name, …) — same behaviour as the builder.
Example Request Body
Example cURL Request
Example Response
202 Accepted
Poll the Launch Campaigns Status endpoint with the job_id to track progress.
Error Responses
422
{ "error": "..." }
Missing/invalid params (e.g. no template_id, invalid webhook_url, empty file_links, daily_budget_override below 15 or not a number), ad account not connected, or Google Drive not connected.
422
{ "error": "Template not supported", "unsupported_reasons": [ ... ] }
The template uses a feature v2 can't launch. See the Campaign templates endpoint for the reason codes.
422
{ "error": "Template does not support daily_budget_override: ..." }
daily_budget_override was sent for a template that can't receive it. The message lists the blocking codes — see the Campaign templates endpoint.
404
{ "error": "Template not found" }
No active template with that id for your account.
Webhook Response
Sent as a POST to your webhook_url when the launch finishes. The same object (without job_id) is available under results on the Launch Campaigns Status endpoint.
The response is a campaign → ad set → ad tree describing what the launch created — no internal placeholders to resolve.
status
success (all entities created), partial (some ads failed), or failed (nothing created). On a hard error before execution, status is failed, campaigns is null, and the top-level error holds the message.
campaigns[]
The campaign → ad set → ad tree this launch created. When the template reuses an existing campaign or ad set, it appears with its existing remote_id and name, and only the newly created ads are nested under it.
….adsets[].ads[]
One entry per created ad: remote_id, name (the creative filename) and source_url (the link you supplied). A failed ad has "remote_id": null and an "error" field.
error
Top-level error message when the whole launch fails before execution; otherwise null.
completed_at
ISO 8601 timestamp of completion.
Last updated