## Get full step output from instance `client.Workflows.Instances.Step(ctx, workflowName, instanceID, params) (*InstanceStepResponse, error)` **get** `/accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/step` Retrieves the full, untruncated output for a specific step on a workflow instance. Returns a flat status-shaped JSON body with step `status` ('running' | 'waiting' | 'complete' | 'errored'), `error` (nullable), and `output` (the step value, or null while running/waiting/errored). When the step returned a ReadableStream from step.do, the response is served as 'application/octet-stream' with the raw bytes as the body instead of JSON. A `status='running'` response with non-null `error` indicates the step is currently retrying after a prior attempt failed. ### Parameters - `workflowName string` - `instanceID string` Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression. - `params InstanceStepParams` - `AccountID param.Field[string]` Path param - `Name param.Field[string]` Query param: Exact step name from the instance logs response, including the generated counter suffix. - `Type param.Field[InstanceStepParamsType]` Query param: Step type to disambiguate step.do and waitForEvent entries that share the same name. - `const InstanceStepParamsTypeStep InstanceStepParamsType = "step"` - `const InstanceStepParamsTypeWaitForEvent InstanceStepParamsType = "waitForEvent"` - `Attempt param.Field[int64]` Query param: Specific attempt number to retrieve output or error for. ### Returns - `type InstanceStepResponse struct{…}` - `Error InstanceStepResponseError` Error details when status='errored'; null otherwise. - `Message string` - `Name string` - `Status InstanceStepResponseStatus` - `const InstanceStepResponseStatusQueued InstanceStepResponseStatus = "queued"` - `const InstanceStepResponseStatusRunning InstanceStepResponseStatus = "running"` - `const InstanceStepResponseStatusPaused InstanceStepResponseStatus = "paused"` - `const InstanceStepResponseStatusErrored InstanceStepResponseStatus = "errored"` - `const InstanceStepResponseStatusTerminated InstanceStepResponseStatus = "terminated"` - `const InstanceStepResponseStatusComplete InstanceStepResponseStatus = "complete"` - `const InstanceStepResponseStatusWaitingForPause InstanceStepResponseStatus = "waitingForPause"` - `const InstanceStepResponseStatusWaiting InstanceStepResponseStatus = "waiting"` - `const InstanceStepResponseStatusRollingBack InstanceStepResponseStatus = "rollingBack"` - `Output unknown` Full step output or waitForEvent payload without truncation. Sensitive outputs are returned as '[REDACTED]'. Populated when status='complete'. May be a ReadableStream when the step returned one from step.do; stream outputs are served as application/octet-stream rather than JSON. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/workflows" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Workflows.Instances.Step( context.TODO(), "x", "x", workflows.InstanceStepParams{ AccountID: cloudflare.F("account_id"), Name: cloudflare.F("x"), Type: cloudflare.F(workflows.InstanceStepParamsTypeStep), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Error) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "error": { "message": "message", "name": "name" }, "status": "queued", "output": {} }, "success": true, "result_info": { "count": 0, "per_page": 0, "total_count": 0, "cursor": "cursor", "page": 0, "total_pages": 0 } } ```