## Start a top-level technique run `client.Runs.StartTechnique(ctx, body) (*RunStartTechniqueResponse, error)` **post** `/runs/technique` Starts a technique run through the normalized top-level run resource. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate. ### Parameters - `body RunStartTechniqueParams` - `Inputs param.Field[map[string, any]]` Technique inputs - `TechniqueID param.Field[string]` Technique identifier - `WorkspaceID param.Field[string]` Workspace identifier ### Returns - `type RunStartTechniqueResponse struct{…}` - `ChargedCost float64` - `EstimatedSeconds int64` - `RunID string` Run identifier - `Type RunStartTechniqueResponseType` Run type - `const RunStartTechniqueResponseTypeGeneration RunStartTechniqueResponseType = "generation"` - `const RunStartTechniqueResponseTypeTechnique RunStartTechniqueResponseType = "technique"` - `const RunStartTechniqueResponseTypeAction RunStartTechniqueResponseType = "action"` - `Action RunStartTechniqueResponseAction` - `ActionID string` Action identifier - `const RunStartTechniqueResponseActionActionIDSplitText RunStartTechniqueResponseActionActionID = "split-text"` - `const RunStartTechniqueResponseActionActionIDFindAndReplaceText RunStartTechniqueResponseActionActionID = "find-and-replace-text"` - `const RunStartTechniqueResponseActionActionIDConcatText RunStartTechniqueResponseActionActionID = "concat-text"` - `const RunStartTechniqueResponseActionActionIDKenBurnsVideo RunStartTechniqueResponseActionActionID = "ken-burns-video"` - `const RunStartTechniqueResponseActionActionIDColorGradeImage RunStartTechniqueResponseActionActionID = "color-grade-image"` - `const RunStartTechniqueResponseActionActionIDChangeImageAr RunStartTechniqueResponseActionActionID = "change-image-ar"` - `const RunStartTechniqueResponseActionActionIDRotateImage RunStartTechniqueResponseActionActionID = "rotate-image"` - `const RunStartTechniqueResponseActionActionIDFlipImage RunStartTechniqueResponseActionActionID = "flip-image"` - `const RunStartTechniqueResponseActionActionIDColorFilterImage RunStartTechniqueResponseActionActionID = "color-filter-image"` - `const RunStartTechniqueResponseActionActionIDColorTintImage RunStartTechniqueResponseActionActionID = "color-tint-image"` - `const RunStartTechniqueResponseActionActionIDFilterColorImage RunStartTechniqueResponseActionActionID = "filter-color-image"` - `const RunStartTechniqueResponseActionActionIDBlurImage RunStartTechniqueResponseActionActionID = "blur-image"` - `const RunStartTechniqueResponseActionActionIDDuplicateImage RunStartTechniqueResponseActionActionID = "duplicate-image"` - `const RunStartTechniqueResponseActionActionIDSideBySideComposite RunStartTechniqueResponseActionActionID = "side-by-side-composite"` - `const RunStartTechniqueResponseActionActionIDAddShapeToImage RunStartTechniqueResponseActionActionID = "add-shape-to-image"` - `const RunStartTechniqueResponseActionActionIDGenerateShapeImage RunStartTechniqueResponseActionActionID = "generate-shape-image"` - `const RunStartTechniqueResponseActionActionIDAddTextToImage RunStartTechniqueResponseActionActionID = "add-text-to-image"` - `const RunStartTechniqueResponseActionActionIDGenerateTextImage RunStartTechniqueResponseActionActionID = "generate-text-image"` - `const RunStartTechniqueResponseActionActionIDQrCodeGenerator RunStartTechniqueResponseActionActionID = "qr-code-generator"` - `const RunStartTechniqueResponseActionActionIDStitchVideos RunStartTechniqueResponseActionActionID = "stitch-videos"` - `const RunStartTechniqueResponseActionActionIDSplitVideo RunStartTechniqueResponseActionActionID = "split-video"` - `const RunStartTechniqueResponseActionActionIDExtractVideoFrames RunStartTechniqueResponseActionActionID = "extract-video-frames"` - `const RunStartTechniqueResponseActionActionIDColorGradeVideo RunStartTechniqueResponseActionActionID = "color-grade-video"` - `const RunStartTechniqueResponseActionActionIDVideoToFrameGrid RunStartTechniqueResponseActionActionID = "video-to-frame-grid"` - `const RunStartTechniqueResponseActionActionIDBoomerangVideo RunStartTechniqueResponseActionActionID = "boomerang-video"` - `const RunStartTechniqueResponseActionActionIDReverseVideo RunStartTechniqueResponseActionActionID = "reverse-video"` - `const RunStartTechniqueResponseActionActionIDVideoToLongExposure RunStartTechniqueResponseActionActionID = "video-to-long-exposure"` - `const RunStartTechniqueResponseActionActionIDVideoEffect RunStartTechniqueResponseActionActionID = "video-effect"` - `const RunStartTechniqueResponseActionActionIDColorFilterVideo RunStartTechniqueResponseActionActionID = "color-filter-video"` - `const RunStartTechniqueResponseActionActionIDSpeedUpVideo RunStartTechniqueResponseActionActionID = "speed-up-video"` - `const RunStartTechniqueResponseActionActionIDSlowDownVideo RunStartTechniqueResponseActionActionID = "slow-down-video"` - `const RunStartTechniqueResponseActionActionIDDuplicateVideo RunStartTechniqueResponseActionActionID = "duplicate-video"` - `const RunStartTechniqueResponseActionActionIDGreenscreenVideo RunStartTechniqueResponseActionActionID = "greenscreen-video"` - `const RunStartTechniqueResponseActionActionIDResizeVideo RunStartTechniqueResponseActionActionID = "resize-video"` - `const RunStartTechniqueResponseActionActionIDChangeVideoAr RunStartTechniqueResponseActionActionID = "change-video-ar"` - `const RunStartTechniqueResponseActionActionIDSplitAudioFromVideo RunStartTechniqueResponseActionActionID = "split-audio-from-video"` - `const RunStartTechniqueResponseActionActionIDMergeAudioIntoVideo RunStartTechniqueResponseActionActionID = "merge-audio-into-video"` - `Model RunStartTechniqueResponseModel` - `ModelID string` Model identifier - `PollURL string` - `ProjectID string` Project identifier - `Technique RunStartTechniqueResponseTechnique` - `Name string` Technique name - `TechniqueID string` Technique identifier ### Example ```go package main import ( "context" "fmt" "github.com/florafauna-ai/flora-go" "github.com/florafauna-ai/flora-go/option" ) func main() { client := flora.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.Runs.StartTechnique(context.TODO(), flora.RunStartTechniqueParams{ Inputs: map[string]any{ "foo": "bar", }, TechniqueID: "tech_abcd1234", WorkspaceID: "ws_abc123", }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.RunID) } ``` #### Response ```json { "charged_cost": 0, "estimated_seconds": 0, "run_id": "run_abc123", "type": "generation", "action": { "action_id": "split-text" }, "model": { "model_id": "t2i-flux-2-pro" }, "poll_url": "https://example.com", "project_id": "prj_abc123", "technique": { "name": "name", "technique_id": "tech_abcd1234" } } ```