# Get action execution details

`GET /workspaces/:workspace/projects/:project_name/pipelines/:pipeline_id/executions/:execution_id/action_executions/:action_execution_id`

Returns details of a single action execution

**Required Scopes:** `PIPELINE_READ`

## URL Parameters

```typescript
interface URLParameters {
  /** The human-readable ID of the workspace */
  workspace: string; // Example: "my-company"
  /** The human-readable ID of the project */
  project_name: string; // Example: "my-project"
  /** The ID of the pipeline */
  pipeline_id: number; // Example: 123
  /** The ID of the execution */
  execution_id: number; // Example: 123456
  /** The ID of the action execution */
  action_execution_id: string; // Example: "68e49e0e0875a8847e0980da"
}
```

## Response Body

```typescript
interface ResponseBody {
  /** API endpoint to GET this object */
  url?: string;
  /** Web URL to view this object in Buddy.works */
  html_url?: string;
  /** The unique ID of the action execution */
  action_execution_id?: string;
  /** The date and time when the action execution started */
  start_date?: string;
  /** The date and time when the action execution finished */
  finish_date?: string;
  /** The error message if the action execution failed */
  error_message?: string;
  /** The current status of the action execution */
  status?: "INPROGRESS" | "ENQUEUED" | "TERMINATED" | "SUCCESSFUL" | "FAILED" | "INITIAL" | "NOT_EXECUTED" | "SKIPPED" | "TERMINATING" | "WAITING_FOR_APPLY" | "WAITING_FOR_VARIABLES" | "WAITING_FOR_SETTABLE_VARIABLES" | "WAITING_FOR_VT_SESSION";
  /** The progress of the action execution in percentages (0-100) */
  progress?: number;
  action?: ShortActionResponse;
  /** The ID of the user who terminated the action execution */
  terminator_id?: number;
  /** The date and time when the action execution was terminated */
  termination_date?: string;
  /** The ID of the user who approved the action execution */
  approver_id?: number;
  /** The date and time when the action execution was approved */
  approval_date?: string;
  /** The variables passed to this action execution */
  passed_variables?: SimpleVariableView[];
  /** The variables exported by this action execution */
  outputted_variables?: SimpleVariableView[];
  /** The output from visual tests if any were run */
  visual_tests_output?: VisualTestsOutputView[];
  terraform_plan?: TerraformPlanOutputView;
  /** The sandbox project ID associated with this action execution */
  sandbox_project_id?: number;
  /** The sandbox ID associated with this action execution */
  sandbox_id?: string;
  /** The target identifier where the action was executed */
  target?: string;
  /** The loop details of the action execution, if the action was executed in a loop */
  loop_details?: LoopDetailsView;
  /** The console output log of the action execution */
  log?: string[];
  /** The URL to download the full log file */
  log_url?: string;
}
```

## Type Definitions

```typescript
interface ShortActionResponse {
  /** API endpoint to GET this object */
  url?: string;
  /** Web URL to view this object in Buddy.works */
  html_url?: string;
  /** The ID of the action */
  id?: number;
  /** The name of the action */
  name?: string;
  /** The type of the action */
  type?: "TRANSFER" | "AMAZON_S3" | "WEB_DAV" | "SSH_COMMAND" | "HTTP" | "SLACK" | "EMAIL" | "SMS" | "PUSH" | "HEROKU" | "BUILD" | "PING" | "WEB" | "TCP" | "RUN_NEXT_PIPELINE" | "ELASTIC_BEANSTALK" | "GCS" | "SHOPIFY" | "PUSHOVER" | "PUSHBULLET" | "CODE_DEPLOY" | "AZURE" | "DOCKERFILE" | "GOOGLE_APP_ENGINE" | "LAMBDA" | "HEROKU_CLI" | "RACKSPACE" | "CLOUDFLARE" | "CLOUD_FRONT" | "MONITOR" | "SLEEP" | "AWS_CLI" | "GOOGLE_CDN" | "AWS_LAMBDA_DEPLOY" | "KUBERNETES_APPLY" | "KUBERNETES_SET_IMAGE" | "KUBERNETES_RUN_POD" | "WAIT_FOR_APPLY" | "APPROVE_VT" | "NEW_RELIC" | "KUBERNETES_RUN_JOB" | "ZIP" | "ROLLBAR" | "SENTRY" | "DATADOG" | "DO_SPACES" | "HONEYBADGER" | "SENTRY_ENTERPRISE" | "LOGGLY" | "KUBERNETES_CLI" | "RUN_DOCKER_CONTAINER" | "ESLINT" | "DOCKER_PUSH" | "ANDROID_SIGN" | "ANDROID_PLAY" | "WAIT_FOR_VARIABLES" | "GCLOUD_CLI" | "AWS_ECS" | "IMPORT_FILES" | "FIREBASE" | "TELEGRAM" | "REPLACE" | "GOOGLE_FUNCTIONS_DEPLOY" | "GOOGLE_FUNCTIONS" | "BUGSNAG" | "SPLIT_TESTS" | "RAYGUN" | "DATADOG_STATUS_CHECK" | "GHOST_INSPECTOR" | "AWS_CLOUD_FORMATION" | "DIGITAL_OCEAN_CDN" | "DISCORD2" | "IMAGE_COMPRESSION" | "NETLIFY" | "GIT_CRYPT_UNLOCK" | "GIT_CRYPT_LOCK" | "HELM" | "DOCKERFILE_LINTER" | "DOWNLOAD" | "DOWNLOAD_S3" | "LIGHTHOUSE" | "ANDROID_SIGN_BUNDLE" | "ANDROID_PLAY_BUNDLE" | "VISUAL_TESTS" | "VISUAL_TEST_2" | "LINK_VALIDATOR" | "AZURE_CLI" | "SHOPIFY_THEMEKIT_CLI" | "SSL_VERIFY" | "AZURE_STORAGE" | "DEPLOY_TO_SANDBOX" | "SANDBOX_START" | "SANDBOX_STOP" | "SANDBOX_EXEC" | "GIT_HUB_RELEASE" | "GCLOUD_RUN_DEPLOY" | "SANDBOX_SNAPSHOT" | "AWS_CLI_2" | "MICROSOFT_TEAMS" | "NATIVE_BUILD_WINDOWS" | "NATIVE_BUILD_WINDOWS_DOCKER" | "NATIVE_BUILD_MAC" | "DOCTL" | "NATIVE_BUILD_MAC_REACT" | "NATIVE_BUILD_MAC_CORDOVA" | "NATIVE_BUILD_MAC_FASTLANE" | "NATIVE_BUILD_MAC_FLUTTER" | "GOOGLE_CLOUD_STORAGE" | "GOOGLE_FUNCTION_DEPLOY" | "GOOGLE_FUNCTION_INVOKE" | "GOOGLE_CDN_INVALIDATE" | "GOOGLE_CLOUD_CLI" | "GOOGLE_CLOUD_RUN_DEPLOY" | "GOOGLE_APP_DEPLOY" | "ANDROID_PUBLISH_APK" | "ANDROID_PUBLISH_APP_BUNDLE" | "SANDBOX_CREATE_NEW" | "SANDBOX_CREATE_FROM_SANDBOX" | "SANDBOX_CREATE_FROM_SNAPSHOT" | "SANDBOX_DELETE" | "NATIVE_BUILD_MAC_SIGN" | "NATIVE_BUILD_MAC_DEPLOY" | "NATIVE_BUILD_DOCKER_CLI" | "CLEAR_CACHE" | "FASTLANE_ANDROID" | "NATIVE_BUILD_LINUX" | "GIT_HUB_CLI" | "INTEGRATION_VARIABLES" | "DOCKER_BUILD_MULTI_ARCH" | "CODE_PIPELINE" | "GIT_LAB_CLI" | "AWS_APP_RUNNER_DEPLOY" | "AWS_APP_RUNNER_MONITOR" | "NATIVE_BUILD_MAC_VM" | "VM_LINUX" | "AWS_CDK_CLI" | "GHOST_INSPECTOR_CLI" | "TERRAFORM" | "ATOP" | "SNYK_CLI" | "STACK_HAWK_CLI" | "JMETER_CLI" | "CUSTOM" | "BLACKFIRE_PHP" | "BLACKFIRE_PYTHON" | "BLACKFIRE_GO" | "LINK_CHECKER" | "SHOPIFY_CLI" | "DOCKER" | "SET_VARIABLES" | "DOWNLOAD_FROM_SANDBOX" | "PIPELINE_SETTINGS" | "BACKBLAZE_B2" | "NEW_RELIC_CLI" | "DOWNLOAD_GCS" | "DOWNLOAD_BACKBLAZE_B2" | "WP_CLI" | "GOOGLE_CHAT" | "SANDBOX_APPLICATION_START" | "SANDBOX_APPLICATION_STOP" | "POWERSHELL" | "SANDBOX_MANAGE" | "SANDBOX_CREATE" | "CONTENTFUL_CLI" | "JIRA_BUILD" | "JIRA_DEPLOYMENT" | "MYSQL_CLI" | "POSTGRESQL_CLI" | "MONGOSH_CLI" | "MSSQL_CLI" | "CLICKHOUSE_CLI" | "CRAWL" | "FTP" | "FTPS" | "SFTP" | "GCE" | "VULTR" | "UPCLOUD" | "DIGITAL_OCEAN" | "DOWNLOAD_FTP" | "DOWNLOAD_FTPS" | "DOWNLOAD_SSH" | "RSYNC" | "PROMOTE_IMAGE" | "PUBLISH_ARTIFACT_VERSION" | "COMPOSER_PUBLISH" | "DOWNLOAD_ARTIFACT_VERSION" | "STORYBOOK" | "PLAYWRIGHT" | "CYPRESS" | "NPM_PUBLISH" | "NPM_STAGE" | "GIT_MERGE" | "TRIVY_CLI" | "CLAUDE_CODE" | "SECURITY_AUDIT" | "BUDDY_CDN" | "DOCKER_IMAGE_OPS" | "ANTIGRAVITY" | "ARTIFACT_CLEANUP" | "CODEX_CLI" | "CURSOR" | "OPENCODE" | "GROK" | "EXTRACT" | "TERRAFORM_PLAN" | "TERRAFORM_APPLY" | "CLICKUP_CREATE_TASK" | "CLICKUP_UPDATE_TASK" | "TERRAFORM_DRIFT_DETECTION" | "JEV";
  /** The git revision of the last successful run of the action */
  current_revision?: string;
  /** Specifies when the action should be executed */
  trigger_time?: "ON_EVERY_EXECUTION" | "ON_FAILURE" | "ON_BACK_TO_SUCCESS" | "ON_WARNING" | "ON_WAIT_FOR_APPROVE" | "ON_TERMINATE";
  /** The list of trigger conditions to meet so that the action can be triggered */
  trigger_conditions?: TriggerConditionView[];
  /** Defines whether the action should run in parallel with the next one */
  run_next?: "WAIT_ON_SUCCESS" | "IN_SOFT_PARALLEL" | "IN_HARD_PARALLEL";
  /** Defines whether the action should be executed on each failure. Restricted to and required if the `trigger_time` is `ON_FAILURE` */
  run_only_on_first_failure?: boolean;
  /** The list of variables you can use the action */
  variables?: EnvironmentVariableView[];
  /** When set to `true` the action is disabled. By default it is set to `false` */
  disabled?: boolean;
  /** The timeout in seconds */
  timeout?: number;
  /** If set to `true` the execution will proceed, mark action as a warning and jump to the next action. Doesn't apply to deployment actions */
  ignore_errors?: boolean;
  /** Number of retries if the action fails */
  retry_count?: number;
  /** Delay time between auto retries in seconds */
  retry_interval?: number;
  /** The status of the last run of the action */
  last_execution_status?: "INPROGRESS" | "ENQUEUED" | "TERMINATED" | "SUCCESSFUL" | "FAILED" | "INITIAL" | "NOT_EXECUTED" | "SKIPPED" | "TERMINATING" | "WAITING_FOR_APPLY" | "WAITING_FOR_VARIABLES" | "WAITING_FOR_SETTABLE_VARIABLES" | "WAITING_FOR_VT_SESSION";
  /** The integration used by the action */
  integration?: IntegrationIdentifierView;
  /** The integration used by the action */
  helm_repository_integration?: IntegrationIdentifierView;
}

interface TriggerConditionView {
  /** The type of trigger condition */
  trigger_condition?: "ALWAYS" | "ON_CHANGE" | "ON_CHANGE_AT_PATH" | "VAR_IS" | "VAR_IS_NOT" | "VAR_CONTAINS" | "VAR_NOT_CONTAINS" | "DATETIME" | "SUCCESS_PIPELINE" | "DAY" | "HOUR" | "OR" | "VAR_LESS_THAN" | "VAR_LESS_THAN_OR_EQUAL" | "VAR_GREATER_THAN" | "VAR_GREATER_THAN_OR_EQUAL" | "ACTION_STATUS_IS" | "ACTION_STATUS_IS_NOT" | "TRIGGERING_USER_IS" | "TRIGGERING_USER_IS_NOT" | "TRIGGERING_USER_IS_IN_GROUP" | "TRIGGERING_USER_IS_NOT_IN_GROUP";
  /** The value to compare the trigger variable against */
  trigger_variable_value?: string;
  /** The name of the variable to check in the trigger condition */
  trigger_variable_key?: string;
  /** The timezone for datetime trigger conditions (e.g., 'UTC', 'Europe/Warsaw') */
  timezone?: string;
  /** The hours when the datetime trigger should activate (0-23) */
  trigger_hours?: number[];
  /** The days when the datetime trigger should activate (1-7, where 1 is Monday) */
  trigger_days?: number[];
  /** The project name for cross-project pipeline triggers */
  trigger_project_name?: string;
  /** The pipeline name for cross-pipeline triggers */
  trigger_pipeline_name?: string;
  /** The username or email of the user who can trigger the pipeline */
  trigger_user?: string;
  /** The name of the group that can trigger the pipeline */
  trigger_group?: string;
  /** The file paths that must change to trigger the pipeline */
  trigger_condition_paths?: string[];
  /** The action status to check for action status triggers */
  trigger_status?: "SUCCESSFUL" | "FAILED" | "SKIPPED" | "SUPPRESSED";
  /** The name of the action to check status for */
  trigger_action_name?: string;
  /** The list of nested trigger conditions for OR/AND operators */
  trigger_operands?: TriggerConditionOperandView[];
}

interface TriggerConditionOperandView {
  /** The type of trigger condition */
  trigger_condition?: "ALWAYS" | "ON_CHANGE" | "ON_CHANGE_AT_PATH" | "VAR_IS" | "VAR_IS_NOT" | "VAR_CONTAINS" | "VAR_NOT_CONTAINS" | "DATETIME" | "SUCCESS_PIPELINE" | "DAY" | "HOUR" | "OR" | "VAR_LESS_THAN" | "VAR_LESS_THAN_OR_EQUAL" | "VAR_GREATER_THAN" | "VAR_GREATER_THAN_OR_EQUAL" | "ACTION_STATUS_IS" | "ACTION_STATUS_IS_NOT" | "TRIGGERING_USER_IS" | "TRIGGERING_USER_IS_NOT" | "TRIGGERING_USER_IS_IN_GROUP" | "TRIGGERING_USER_IS_NOT_IN_GROUP";
  /** The value to compare the trigger variable against */
  trigger_variable_value?: string;
  /** The name of the variable to check in the trigger condition */
  trigger_variable_key?: string;
  /** The timezone for datetime trigger conditions (e.g., 'UTC', 'Europe/Warsaw') */
  timezone?: string;
  /** The hours when the datetime trigger should activate (0-23) */
  trigger_hours?: number[];
  /** The days when the datetime trigger should activate (1-7, where 1 is Monday) */
  trigger_days?: number[];
  /** The project name for cross-project pipeline triggers */
  trigger_project_name?: string;
  /** The pipeline name for cross-pipeline triggers */
  trigger_pipeline_name?: string;
  /** The username or email of the user who can trigger the pipeline */
  trigger_user?: string;
  /** The name of the group that can trigger the pipeline */
  trigger_group?: string;
  /** The file paths that must change to trigger the pipeline */
  trigger_condition_paths?: string[];
  /** The action status to check for action status triggers */
  trigger_status?: "SUCCESSFUL" | "FAILED" | "SKIPPED" | "SUPPRESSED";
  /** The name of the action to check status for */
  trigger_action_name?: string;
}

interface EnvironmentVariableView {
  /** The ID of the variable */
  id?: number;
  /** The name of the variable */
  key?: string;
  /** The value of the variable */
  value?: string;
  /** The type of the added variable. Defaults to `VAR` when not set */
  type?: "VAR" | "FILE" | "SSH_KEY" | "IOS_KEYCHAIN" | "IOS_PROVISION_PROFILES" | "SSH_PUBLIC_KEY" | "GPG_KEY" | "P12";
  /** If set to `true` the variable value will be encrypted and hidden */
  encrypted?: boolean;
  /** If set to `true` the variable value can be set by Buddy actions */
  settable?: boolean;
  /** Available only if `type=VAR`. Requires `settable=true`. If set to `true` the variable value can be set by Buddy actions only for execution time */
  run_only_settable?: boolean;
  /** Initial path for the variable */
  init_path?: string;
  /** Default value for the variable */
  defaults?: string;
  /** Specifies where to copy the file on each run. Required if `file_place` is `CONTAINER`, and must start with `/` or `~` */
  file_path?: string;
  /** File permission set on copy to a container on each run. Required if `file_place` is `CONTAINER` */
  file_chmod?: string;
  /** Required if `type` is `FILE`, `SSH_KEY`, `SSH_PUBLIC_KEY`, `IOS_KEYCHAIN`, or `IOS_PROVISION_PROFILES`, unless the variable is sandbox-scoped. If it's `NONE`, the variable can be used as a parameter in an action. For `CONTAINER`, the given key is additionally copied to an action container on each run and both `file_path` and `file_chmod` are required */
  file_place?: "NONE" | "CONTAINER";
  /** Whether the file is binary */
  binary?: boolean;
  /** Public value for SSH key type variables */
  public_value?: string;
  /** Fingerprint of SSH key */
  key_fingerprint?: string;
  /** Checksum of the variable value */
  checksum?: string;
  /** Password for certificates */
  password?: string;
  /** Passphrase for encrypted SSH keys */
  passphrase?: string;
  /** Key identifier for iOS certificates, provisioning profiles, or GPG keys */
  key_identifier?: string;
  /** Set to `true` to disable the variable. Disabled variables are not injected anywhere */
  disabled?: boolean;
  /** Note for this resource */
  note?: string;
  /** YAML note for AI agents operating on this resource */
  agent_note?: string;
}

interface IntegrationIdentifierView {
  /** A human-readable ID of the integration */
  identifier?: string;
}

interface SimpleVariableView {
  /** API endpoint to GET this object */
  url?: string;
  /** Web URL to view this object in Buddy.works */
  html_url?: string;
  /** The name of the variable */
  key?: string;
  /** The value of the variable */
  value?: string;
  /** If set to `true` the variable value will be encrypted and hidden */
  encrypted?: boolean;
}

interface VisualTestsOutputView {
  /** The URL to the visual tests results */
  url?: string;
  /** The status of the visual tests execution */
  status?: "MATCH" | "MISMATCH" | "ERROR" | "NEW" | "SIZE_MISMATCH";
  /** The error message if the visual tests failed */
  error?: string;
}

interface TerraformPlanOutputView {
  /** The number of resources to be created by the plan, replacements included */
  added?: number;
  /** The number of resources to be updated in place by the plan */
  changed?: number;
  /** The number of resources to be destroyed by the plan, replacements included */
  destroyed?: number;
  /** The list of resources affected by the plan */
  resources?: TerraformPlanResourceView[];
}

interface TerraformPlanResourceView {
  /** The Terraform address of the resource, e.g. aws_s3_bucket.assets */
  address?: string;
  /** The Terraform type of the resource, e.g. aws_s3_bucket */
  resource_type?: string;
  /** The change planned for the resource: CREATE, UPDATE, DELETE, DESTROY_CREATE (destroyed before being recreated) or CREATE_DESTROY (created before the old one is destroyed) */
  change_type?: "CREATE" | "UPDATE" | "DELETE" | "DESTROY_CREATE" | "CREATE_DESTROY";
  /** The attributes of the resource before the change, as a JSON string. Sensitive values are masked, null for a created resource */
  before?: string;
  /** The attributes of the resource after the change, as a JSON string. Sensitive values are masked, values resolved only during apply are marked as (known after apply), null for a destroyed resource */
  after?: string;
  /** The result of applying the change: APPLIED or FAILED. Empty until the plan is applied by a Terraform Apply action */
  apply_status?: "APPLIED" | "FAILED";
}

interface LoopDetailsView {
  /** API endpoint to GET this object */
  url?: string;
  /** Web URL to view this object in Buddy.works */
  html_url?: string;
  /** The status of the loop resolution */
  status?: "RESOLVED" | "DYNAMIC" | "NO_LOOP" | "LIMIT_REACHED" | "ERROR";
  /** The resolved loop variables as key-value pairs */
  resolved_variables?: SimpleVariableView[];
  /** The error message if the loop resolution failed */
  error_message?: string;
}

```

## Response Example

**Status:** `200 OK`

```json
{
  "url": "https://api.buddy.works/workspaces/my-workspace/projects/my-project/pipelines/89/executions/123456/action_executions/68e77c82b38c40fc0535ee55",
  "html_url": "https://app.buddy.works/my-workspace/my-project/pipelines/pipeline/89/execution/68e77c82b38c40fc0535ee51/?actionExecutionId=68e77c82b38c40fc0535ee55",
  "action_execution_id": "68e77c82b38c40fc0535ee55",
  "start_date": "2025-10-09T09:12:38.688Z",
  "finish_date": "2025-10-09T09:12:42.322Z",
  "status": "SUCCESSFUL",
  "progress": 100,
  "action": {
    "url": "https://api.buddy.works/workspaces/my-workspace/projects/my-project/pipelines/89/actions/149",
    "html_url": "https://app.buddy.works/my-workspace/my-project/pipelines/pipeline/89/action/149/edit",
    "id": 149,
    "name": "Transfer to AWS S3/my-bucket",
    "type": "AMAZON_S3",
    "current_revision": "2aeec94b11d79263c0076e8281e93ceacf88211c",
    "trigger_time": "ON_EVERY_EXECUTION",
    "run_next": "WAIT_ON_SUCCESS",
    "disabled": false,
    "timeout": null,
    "ignore_errors": false,
    "integration": {
      "identifier": "amazon-web-services"
    },
    "last_execution_status": "SUCCESSFUL"
  },
  "passed_variables": [],
  "outputted_variables": [],
  "log": [
    "Integration: amazon-web-services|3A97MwY02W1GEVkmzePKxRyDnE",
    "Listing files for deployment...",
    "File list ready. Starting upload...",
    "Deploying...",
    "Creating directory dir...",
    "Uploading file dir/readme.txt...",
    "Uploading file sad...",
    "Deployment finished successfully"
  ]
}
```

---
Original source: https://buddy.works/docs/api/executions/get-action-execution-details