# Runs ## 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. ### Parameters - `techniqueID string` Technique identifier or slug - `body TechniqueRunNewParams` - `Inputs param.Field[[]TechniqueRunNewParamsInput]` Technique inputs - `ID string` Technique input identifier - `Type string` Technique input type - `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]` HTTPS callback URL for asynchronous run completion notifications - `IdempotencyKey param.Field[string]` Idempotency key for safely retrying requests ### Returns - `type TechniqueRunNewResponse struct{…}` - `CreatedAt float64` - `Progress float64` - `RunID string` Run identifier - `Status TechniqueRunNewResponseStatus` - `const TechniqueRunNewResponseStatusPending TechniqueRunNewResponseStatus = "pending"` - `const TechniqueRunNewResponseStatusRunning TechniqueRunNewResponseStatus = "running"` - `const TechniqueRunNewResponseStatusCompleted TechniqueRunNewResponseStatus = "completed"` - `const TechniqueRunNewResponseStatusFailed TechniqueRunNewResponseStatus = "failed"` - `ChargedCost float64` - `CompletedAt float64` - `ErrorCode string` Machine-readable run error code - `ErrorMessage string` Human-readable run error message - `Outputs []TechniqueRunNewResponseOutput` - `OutputID string` Run output identifier - `Type string` Run output media type - `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 - `PollURL string` - `StartedAt float64` ### 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"), ) 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) } ``` #### Response ```json { "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 } ``` ## Get a technique run `client.Techniques.Runs.Get(ctx, runID, query) (*TechniqueRunGetResponse, error)` **get** `/techniques/{techniqueId}/runs/{runId}` Returns status, progress, outputs, and error details for a technique run when it is accessible to the authenticated public API key. ### Parameters - `runID string` Run identifier - `query TechniqueRunGetParams` - `TechniqueID param.Field[string]` Technique identifier or slug ### Returns - `type TechniqueRunGetResponse struct{…}` - `CreatedAt float64` - `Progress float64` - `RunID string` Run identifier - `Status TechniqueRunGetResponseStatus` - `const TechniqueRunGetResponseStatusPending TechniqueRunGetResponseStatus = "pending"` - `const TechniqueRunGetResponseStatusRunning TechniqueRunGetResponseStatus = "running"` - `const TechniqueRunGetResponseStatusCompleted TechniqueRunGetResponseStatus = "completed"` - `const TechniqueRunGetResponseStatusFailed TechniqueRunGetResponseStatus = "failed"` - `ChargedCost float64` - `CompletedAt float64` - `ErrorCode string` Machine-readable run error code - `ErrorMessage string` Human-readable run error message - `Outputs []TechniqueRunGetResponseOutput` - `OutputID string` Run output identifier - `Type string` Run output media type - `const TechniqueRunGetResponseOutputTypeImageURL TechniqueRunGetResponseOutputType = "imageUrl"` - `const TechniqueRunGetResponseOutputTypeVideoURL TechniqueRunGetResponseOutputType = "videoUrl"` - `const TechniqueRunGetResponseOutputTypeAudioURL TechniqueRunGetResponseOutputType = "audioUrl"` - `const TechniqueRunGetResponseOutputTypeText TechniqueRunGetResponseOutputType = "text"` - `const TechniqueRunGetResponseOutputTypeDocumentURL TechniqueRunGetResponseOutputType = "documentUrl"` - `URL string` Run output URL - `PollURL string` - `StartedAt float64` ### 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"), ) run, err := client.Techniques.Runs.Get( context.TODO(), "run_abc123", flora.TechniqueRunGetParams{ TechniqueID: "art-directors-critique", }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", run.RunID) } ``` #### Response ```json { "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 } ```