Adsmithy API
Generate professional ads with AI — optimized for Google, Amazon, Meta, TikTok and 15+ platforms. Integrate Adsmithy into your workflows via REST API.
AI Generation
15+ models
20 Platforms
Google, Meta, Amazon…
API Key Auth
Bearer token
Rate Limits
Per plan
Base URL
https://adsmithy.com/api/v1Authentication
All API requests must include your API key in the Authorization header as a Bearer token. Create and manage your keys in Settings → API and AI assistants.
Key format
ask_live_[48 hex chars]Required plan
Keep your API key secret. Never expose it client-side in public code or commit it to version control. Use environment variables.
AI assistants (MCP)
Adsmithy is also an MCP server: Claude Code, Cursor and other AI assistants can make, list and critique your ads themselves. Same key, scopes, rate limits and credits as the API; every ad lands in your Library.
claude.ai, ChatGPT and other assistants with connectors
Add a custom connector with the address https://adsmithy.com/api/mcp, then sign in to your Adsmithy account and allow access. No key to copy: the assistant signs in with OAuth (Pro and Business plans).
Claude Code (with an API key)
Cursor and other clients
A remote MCP server (Streamable HTTP) at https://adsmithy.com/api/mcp, with your key in the Authorization header.
| Tool | What it does | Credits |
|---|---|---|
| generate_ad | One ad (POST /generate) | The model's cost |
| generate_ads | Variations for several platforms (POST /generate/batch) | Per image made |
| score_ad | AI critique of ads (POST /score) | 1 per ad |
| list_generations | Your ads (GET /generations) | Free |
| get_generation | One ad, with a preview (GET /generations/:id) | Free |
| list_models | Models, costs and platform presets (GET /models) | Free |
| get_account | Plan and credits left (GET /me) | Free |
Rate Limits
Limits are applied per API key using a sliding window. Rate limit headers are included in every response.
| Plan | Requests / hour | API Access |
|---|---|---|
| Free | — | |
| Starter | — | |
| Pro | 100 req/h | |
| Agency | 500 req/h |
Platform Presets
Pass a platform field to POST /generate to automatically apply the correct aspect ratio and style guidance.
google_displayGoogle Display
google_responsiveGoogle Responsive
amazon_productAmazon Product
amazon_lifestyleAmazon Lifestyle
meta_feedMeta Feed
meta_storyMeta Story
meta_carouselMeta Carousel
tiktokTikTok
linkedin_postLinkedIn Post
youtube_thumbnailYouTube Thumbnail
pinterest_pinPinterest Pin
snapchat_storySnapchat Story
/api/v1/meReturns the authenticated user's account info: plan, credits balance, rate limits, and active scopes.
Response
Example
/api/v1/modelsList all available AI generation models with their capabilities, supported aspect ratios, and credit costs.
Response (excerpt)
Example
/api/v1/generateGenerate a single ad image. Optionally target a specific platform to automatically apply the correct dimensions and style guidance. Credits are consumed on success.
Request Body
promptrequiredstringThe generation prompt describing the ad.
platformstringPlatform preset ID (see Platform Presets). Overrides aspect_ratio.
modelstringAI model to use. Default: "nano-banana-2.1", the model the app uses. See GET /models.
aspect_ratiostringAspect ratio override. One of: "1:1", "16:9", "9:16", "4:5", "4:3", "2:3"...
reference_imagesstring[]Array of image URLs to use as style/content reference (max 4, model-dependent).
brand_idstringYour brand ID. Automatically injects brand name and colors into the prompt.
product_idstringScraped product ID. Injects product name and description.
platform_paramsobjectAd-specific context: { headline, description, cta, target_audience, tone }. Tone: "professional" | "playful" | "luxury" | "bold" | "minimalist".
output_formatstring"webp" (default) | "jpg" | "png"
Response
Example
/api/v1/generate/batchGenerate multiple ad variations across one or more platforms in a single call. Total images = count × platforms.length. Credits are consumed only for successful generations.
Request Body
promptrequiredstringBase prompt. Each variation explores a different composition.
countnumberNumber of variations per platform. Min 1, max 10. Default: 3.
platformsrequiredstring[]Array of platform preset IDs. Min 1, max 5. Default: ['meta_feed'].
modelstringAI model to use. Default: "nano-banana-2.1", the model the app uses.
brand_idstringBrand ID for context.
platform_paramsobjectShared ad params: { headline, cta, tone }.
Response
Example
/api/v1/scoreScore one or more ads using AI vision analysis. Returns an overall score (0-100), component breakdown, CTR/CVR predictions, and improvement recommendations. Cost: 1 credit per ad.
Request Body (one of)
generation_idstringScore by generation ID (recommended — no extra credit needed for image fetch).
generation_idsstring[]Batch score up to 20 generation IDs at once.
image_urlstringScore any image by URL.
contextstringOptional prompt/context to improve score accuracy (used with image_url).
Response
Example
/api/v1/generationsList your ad generations with pagination. Filter by status or brand.
Query Parameters
limitnumberResults per page. Max 100, default 20.
offsetnumberPagination offset. Default 0.
statusstring"pending" | "completed" | "failed"
brand_idstringFilter by brand ID.
Response
Example
/api/v1/generations/:idGet full details of a specific generation including AI scores, recommendations, and batch info.
Response
Try it
Use a real generation_id from .
Error Codes
All errors return a JSON body with error and code fields.
| HTTP | Code | Description |
|---|---|---|
| 401 | MISSING_AUTH | Missing or invalid Authorization header. |
| 401 | INVALID_KEY | API key not found. |
| 401 | KEY_REVOKED | API key has been revoked. |
| 401 | KEY_EXPIRED | API key has expired. |
| 402 | INSUFFICIENT_CREDITS | Not enough credits to complete the request. |
| 403 | PLAN_UPGRADE_REQUIRED | API access requires Pro or Agency plan. |
| 403 | INSUFFICIENT_SCOPE | API key missing required scope. |
| 429 | RATE_LIMIT_EXCEEDED | Hourly rate limit exceeded. |
| 500 | GENERATION_FAILED | AI generation failed. Retry the request. |