# Wildfield
> HTML ad builder. An agent receives a brief over MCP, then sets up the design system, scenes, imagery, physics, background video, sound, and a render.
## What Wildfield does
Wildfield creates display ads (banners, social posts, video) in multiple formats:
- Square (1080x1080), Portrait (1080x1350), Vertical (1080x1920), Landscape (1920x1080), Wide (1200x628), plus custom sizes
- Each project contains scenes with headlines, CTAs, layers, and optional project-level background video + audio
- Layout templates and a per-aspect-ratio grid
- Vector expressions: {0-100} number tweens, {cat, dog, bird} word cycles, {random} stable digit (preview == render, spans linked scenes)
- Animate Physics: eight forces on a vector layer (wind, turbulence, gravity, swirl, orbit, wave, float, spring). Recipes, Perfect loop, trails, Guide Physics (prompt / shapes / image / SVG / data / draw). LINK holds each scene's authored pose and field until the keyframe, then morphs. Count locks across a chain. Call get_motion_skill before writing physics
- 4-mode UI: Input, Layout, Canvas, Output (plus Imaging and Sound)
- AI imaging: generate, edit, outpaint, enhance (image + video), retouch, crop, SVG generation
- Render: PNG stills and async MP4 (AWS Lambda). One render at a time per account
- Website capture: screenshot a live URL
- Cloud: Dropbox and Google Drive
- Design systems: brand colours, fonts, logos
- Admin: access control, usage, credits
## Background video
Set project.bgVideoTrack once: { url, ref, fileName, poster, muted, srcW, srcH }.
One clip sits under the whole timeline. Do not put a video on every scene (legacy scenes[].bgVideo).
The editor can fit the timeline to the video length. Preview and Lambda share that single element so cuts stay clean.
## API
Base URL: https://wildfield.io
OpenAPI spec: https://wildfield.io/openapi.yaml
Interactive docs: https://wildfield.io/docs
Auth: X-API-Key header. Keys start with "adk_". Browser sessions may use Authorization: Bearer .
## 36 MCP tools
Hosted: https://wildfield.io/api/mcp with header X-API-Key: adk_...
Design systems: list_design_systems, create_design_system, update_design_system, delete_design_system
Projects: list_projects, get_project, create_project, update_project, delete_project, duplicate_project
Creative floor: patch_scene, preview_scene, critique_scene, apply_physics_recipe
Imagery: generate_image, list_generations, delete_generation, upload_image, outpaint_image, generate_vector, inpaint_image, retouch_image, edit_image, enhance_image, crop_image, capture_url
Audio: upload_audio
Motion: get_motion_skill, recall_motion
Render: render_video, get_render_progress, get_active_render, cancel_render, render_screenshot, save_render
Billing: get_credit_balance
Typical brief workflow:
1. get_credit_balance
2. list_design_systems then create_design_system or update_design_system
3. create_project (one idea per scene; image scenes get overlay)
4. generate_image with format + designSystemId, then patch_scene to attach
5. preview_scene / critique_scene. You are not done until you looked
6. get_motion_skill, then apply_physics_recipe (named recipe, no gsapCode)
7. Set project.bgVideoTrack for a campaign bed
8. get_active_render then render_video; poll get_render_progress
## Key REST endpoints
- POST /api/agent/patch-scene
- POST /api/agent/preview-scene
- POST /api/agent/apply-physics
- POST /api/genai/generate
- POST /api/genai/edit
- POST /api/genai/outpaint
- POST /api/genai/enhance
- POST /api/genai/enhance-video
- POST /api/genai/retouch
- POST /api/genai/animate
- POST /api/genai/vector
- POST /api/renders/screenshot
- POST /api/renders/video
- GET /api/renders/progress
- POST /api/renders/cancel
- GET /api/renders/active
- POST /api/capture/url
- POST /api/uploads/image
- GET /api/integrations/status
- GET /api/design-systems/list
- GET /api/projects/list
- POST /api/projects/save
- GET /api/agent/motion-skill
- GET /api/billing/status
## Quick start
1. Get an API key at wildfield.io (Settings > API Keys) or POST /api/auth/api-keys
2. Set header: X-API-Key: adk_your_key_here
3. Read https://wildfield.io/docs then call get_motion_skill before writing motion