Call Synter directly from your backend in the language you already ship. Every SDK wraps the same production REST API the MCP clients use, with typed, idiomatic methods for campaigns, analytics, creative, and audiences.
You need an API key. It's auto-generated on signup — grab or rotate it in the Developer portal. Keys start with syn_. Treat them as secrets: SDKs are server-side only — never embed a key in browser or mobile-client code. Read the wire contract in the API reference.
npm install @synterai/sdk-jsimport { Synter } from '@synterai/sdk-js';
// Server-side only — your API key is a secret. Never ship it to the browser.
const synter = new Synter(process.env.SYNTER_API_KEY!);
const campaigns = await synter.campaigns.list({ status: 'ENABLED', limit: 10 });
await synter.campaigns.createSearch({
campaign_name: 'Q4 Launch',
daily_budget: 50,
keywords: ['running shoes'],
headlines: ['Fast. Light. Yours.', 'New Season, New PR', 'Free Shipping Today'],
descriptions: ['Premium running shoes built for speed.', 'Order today, ships free.'],
final_url: 'https://example.com/shoes',
});pip install synterfrom synter import Synter
# Server-side only — your API key is a secret.
client = Synter(api_key="syn_...") # or set SYNTER_API_KEY
campaigns = client.campaigns.list(platform="google", status="ENABLED", limit=20)
result = client.campaigns.create_search(
campaign_name="Q4 Launch",
daily_budget=50,
keywords=["running shoes", "trail shoes"],
headlines=["Buy Shoes Now", "Best Shoes 2026", "Free Shipping"],
descriptions=["Great shoes for less.", "Shop today."],
final_url="https://example.com/shoes",
)cargo add synter// Server-side only — your API key is a secret.
let client = Client::builder()
.api_key(std::env::var("SYNTER_API_KEY")?)
.build()?;
let campaigns = client.campaigns().list(Default::default()).await?;