Brand Marketing Workflows
TFI Studio is built for teams that need to keep creative output on-brand while still moving at API speed. The common pattern is simple: define a reusable project in the studio, discover that project from your app, send campaign-specific values, and deliver the output through signed URLs.Core workflow
- Create a reusable project in TFI Studio.
- Keep brand-safe instructions, template assets, callback settings, and active dates on that project.
- Fetch active projects with
GET /api/provider/projects/active. - Fetch expected input fields with
GET /api/provider/projects/:projectId/mapping-fields. - Submit campaign data to
POST /jobs/v2. - Poll the job and deliver the output through
GET /storage/generate-signed-path.
Why teams use this pattern
- Marketing keeps control of brand structure in the studio instead of hardcoding every variation in product code.
- Engineering gets a stable API contract around project discovery, job creation, and output delivery.
- Operations can monitor credits, retries, and generated outputs from one control plane.
- Agencies and multi-brand teams can reuse the same integration while swapping projects per client or campaign.
Typical use cases
Product launches
Use one approved project per launch theme, then inject product names, CTA copy, voiceover files, and avatar assets per channel.Personalized campaign variants
Resolve the active project at runtime and feed audience- or region-specific values into the same rendering pipeline.Secure partner delivery
Keep outputs in storage and only expose temporary signed URLs when assets are ready for download or review.Solutions TFI Studio supports
- AI talking-video workflows for launch announcements, explainers, and campaign updates
- Template-driven video and image production for repeatable brand systems
- Secure file delivery with signed output links
- Shared studio operations for marketing, creative, finance, and engineering
Recommended implementation shape
- Store your TFI API key in your backend or worker environment
- Cache the active-project list for a short window if you render frequently
- Build forms dynamically from the mapping-fields response instead of hardcoding input names
- Persist returned job UUIDs so you can poll, audit, or retrigger work later