Skip to content
FLORA DocsGo to app

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.

ParametersExpand Collapse
body RunStartTechniqueParams
Inputs param.Field[map[string, any]]

Technique inputs

TechniqueID param.Field[string]

Technique identifier

WorkspaceID param.Field[string]

Workspace identifier

ReturnsExpand Collapse
type RunStartTechniqueResponse struct{…}
ChargedCost float64
minimum0
EstimatedSeconds int64
minimum0
RunID string

Run identifier

Type RunStartTechniqueResponseType

Run type

One of the following:
const RunStartTechniqueResponseTypeGeneration RunStartTechniqueResponseType = "generation"
const RunStartTechniqueResponseTypeTechnique RunStartTechniqueResponseType = "technique"
const RunStartTechniqueResponseTypeAction RunStartTechniqueResponseType = "action"
Action RunStartTechniqueResponseActionOptional
ActionID string

Action identifier

One of the following:
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 RunStartTechniqueResponseModelOptional
ModelID string

Model identifier

minLength1
PollURL stringOptional
formaturi
ProjectID stringOptional

Project identifier

Technique RunStartTechniqueResponseTechniqueOptional
Name string

Technique name

TechniqueID string

Technique identifier

Start a top-level technique run

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)
}
{
  "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"
  }
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}
Returns Examples
{
  "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"
  }
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}