Skip to content
FLORA DocsGo to app

Start a technique run

client.Techniques.Runs.New(ctx, techniqueID, body) (*TechniqueRunNewResponse, error)
POST/techniques/{techniqueId}/runs

Starts a run for a specific technique using the backward-compatible nested route. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate.

ParametersExpand Collapse
techniqueID string

Technique identifier or slug

body TechniqueRunNewParams
Inputs param.Field[[]TechniqueRunNewParamsInput]

Technique inputs

ID string

Technique input identifier

Type string

Technique input type

One of the following:
const TechniqueRunNewParamsInputTypeText TechniqueRunNewParamsInputType = "text"
const TechniqueRunNewParamsInputTypeImageURL TechniqueRunNewParamsInputType = "imageUrl"
const TechniqueRunNewParamsInputTypeVideoURL TechniqueRunNewParamsInputType = "videoUrl"
Value string

Technique input value

Mode param.Field[TechniqueRunNewParamsMode]

Technique run execution mode

const TechniqueRunNewParamsModeAsync TechniqueRunNewParamsMode = "async"
const TechniqueRunNewParamsModeStream TechniqueRunNewParamsMode = "stream"
CallbackURL param.Field[string]Optional

HTTPS callback URL for asynchronous run completion notifications

formaturi
IdempotencyKey param.Field[string]Optional

Idempotency key for safely retrying requests

ReturnsExpand Collapse
type TechniqueRunNewResponse struct{…}
CreatedAt float64
Progress float64
RunID string

Run identifier

Status TechniqueRunNewResponseStatus
One of the following:
const TechniqueRunNewResponseStatusPending TechniqueRunNewResponseStatus = "pending"
const TechniqueRunNewResponseStatusRunning TechniqueRunNewResponseStatus = "running"
const TechniqueRunNewResponseStatusCompleted TechniqueRunNewResponseStatus = "completed"
const TechniqueRunNewResponseStatusFailed TechniqueRunNewResponseStatus = "failed"
ChargedCost float64Optional
CompletedAt float64Optional
ErrorCode stringOptional

Machine-readable run error code

ErrorMessage stringOptional

Human-readable run error message

Outputs []TechniqueRunNewResponseOutputOptional
OutputID string

Run output identifier

Type string

Run output media type

One of the following:
const TechniqueRunNewResponseOutputTypeImageURL TechniqueRunNewResponseOutputType = "imageUrl"
const TechniqueRunNewResponseOutputTypeVideoURL TechniqueRunNewResponseOutputType = "videoUrl"
const TechniqueRunNewResponseOutputTypeAudioURL TechniqueRunNewResponseOutputType = "audioUrl"
const TechniqueRunNewResponseOutputTypeText TechniqueRunNewResponseOutputType = "text"
const TechniqueRunNewResponseOutputTypeDocumentURL TechniqueRunNewResponseOutputType = "documentUrl"
URL string

Run output URL

formaturi
PollURL stringOptional
formaturi
StartedAt float64Optional

Start a 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"),
  )
  run, err := client.Techniques.Runs.New(
    context.TODO(),
    "art-directors-critique",
    flora.TechniqueRunNewParams{
      Inputs: []flora.TechniqueRunNewParamsInput{flora.TechniqueRunNewParamsInput{
        ID: "id",
        Type: "text",
        Value: "value",
      }},
      Mode: flora.TechniqueRunNewParamsModeAsync,
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", run.RunID)
}
{
  "created_at": 0,
  "progress": 0,
  "run_id": "run_abc123",
  "status": "pending",
  "charged_cost": 0,
  "completed_at": 0,
  "error_code": "provider_error",
  "error_message": "The provider failed to complete the generation.",
  "outputs": [
    {
      "output_id": "output_1",
      "type": "imageUrl",
      "url": "https://media.flora.ai/output.png"
    }
  ],
  "poll_url": "https://example.com",
  "started_at": 0
}
{
  "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
{
  "created_at": 0,
  "progress": 0,
  "run_id": "run_abc123",
  "status": "pending",
  "charged_cost": 0,
  "completed_at": 0,
  "error_code": "provider_error",
  "error_message": "The provider failed to complete the generation.",
  "outputs": [
    {
      "output_id": "output_1",
      "type": "imageUrl",
      "url": "https://media.flora.ai/output.png"
    }
  ],
  "poll_url": "https://example.com",
  "started_at": 0
}
{
  "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."
  }
}