Workflows
Workspaces
Lists all Workspaces with Filtering and Sorting Options. Supports VCS Providers Integration.
JWT authentication token
025List of Workspaces Retrieved Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 614
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"workspaceName": [
"production-infra"
],
"repositories": [
"org/repo-name"
],
"ciTool": [
"github-actions"
],
"labels": [
"text"
],
"status": [
"plan_success"
],
"isManagedWorkflow": true,
"vcsType": [
"github"
],
"$or": {
"workspaceName": [
"production-infra"
],
"repositories": [
"org/repo-name"
],
"ciTool": [
"github-actions"
],
"labels": [
"text"
],
"status": [
"plan_success"
],
"isManagedWorkflow": true,
"vcsType": [
"github"
]
}
},
"sort": {
"lastRunTime": {
"order": -1
},
"workspaceName": {
"order": -1
},
"repository": {
"order": -1
},
"terraformVersion": {
"order": -1
},
"lastRunStatus": {
"order": -1
},
"ciTool": {
"order": -1
}
}
}[
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"workspaceId": "507f1f77bcf86cd799439012",
"workspaceName": "production-infra",
"repo": "org/repo-name",
"repoUrl": "https://github.com/org/repo-name",
"vcsType": "github",
"runnerType": "github-actions",
"lastRunStatus": {
"description": "text"
},
"lastApplyTime": "2025-11-16T03:17:54.832Z",
"lastPlanTime": "2025-11-16T03:17:54.832Z",
"lastRunTime": "2025-11-16T03:17:54.832Z",
"iacType": "terraform",
"iacTypeVersion": "1.0.11",
"backendSummary": {
"backendType": "s3",
"backendConfig": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"iacStackId": "stack-123",
"managedResourceCount": 42
},
"labels": [
"prod",
"terraform"
],
"runsCount": 5,
"isWorkflowManaged": true,
"guardrails": [
"cost",
"security"
]
}
]Deletes a specific workspace and its associated data
JWT authentication token
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Workspace deleted successfully
Bad Request Error
Unauthorized Error
Not Found Error
Internal Server Error
DELETE /v2/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": 200,
"data": {
"message": "Workspace deleted successfully"
}
}Updates Labels for a specific Workspace
JWT authentication token
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$List of labels to assign to the workspace
Workspace Labels Updated Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PUT /v2/workspaces/{workspaceId}/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 19
{
"labels": [
"text"
]
}{
"id": "507f1f77bcf86cd799439015",
"workspaceName": "production-infra",
"labels": [
"production",
"terraform",
"critical"
],
"updatedAt": "2025-11-16T03:17:54.832Z"
}Lists all Runs for a specific Workspace
JWT authentication token
Unique identifier of the workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$025List of Workspace Runs Retrieved Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1366
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"runId": [
"run-123456"
],
"runName": [
"Deploy to Production"
],
"status": [
"plan_success"
],
"pullRequestUrl": [
"https://github.com/org/repo/pull/123"
],
"branch": [
"main"
],
"commitId": [
"abc123def456"
],
"ciTool": [
"github-actions"
],
"buildId": [
"build-789012"
],
"buildName": [
"CI Build"
],
"buildUrl": [
"https://github.com/org/repo/actions/runs/789012"
],
"vcsType": [
"github"
],
"repository": [
"org/repo"
],
"repositoryUrl": [
"https://github.com/org/repo"
],
"title": [
"Update infrastructure for new feature"
],
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"$or": {
"runId": [
"run-123456"
],
"runName": [
"Deploy to Production"
],
"status": [
"plan_success"
],
"pullRequestUrl": [
"https://github.com/org/repo/pull/123"
],
"branch": [
"main"
],
"commitId": [
"abc123def456"
],
"ciTool": [
"github-actions"
],
"buildId": [
"build-789012"
],
"buildName": [
"CI Build"
],
"buildUrl": [
"https://github.com/org/repo/actions/runs/789012"
],
"vcsType": [
"github"
],
"repository": [
"org/repo"
],
"repositoryUrl": [
"https://github.com/org/repo"
],
"title": [
"Update infrastructure for new feature"
],
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z"
}
},
"sort": {
"updatedAt": {
"order": -1
},
"title": {
"order": -1
},
"commitId": {
"order": -1
},
"branch": {
"order": -1
},
"status": {
"order": -1
},
"ciTool": {
"order": -1
},
"vcsType": {
"order": -1
},
"repository": {
"order": -1
}
}
}[
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"workspaceId": "507f1f77bcf86cd799439012",
"workspaceName": "production-infra",
"runId": "run-123456",
"runName": "Deploy to Production",
"status": "plan_success",
"pullRequestId": "123",
"pullRequestUrl": "https://github.com/org/repo/pull/123",
"branch": "main",
"commitId": "abc123def456",
"commitUrl": "https://github.com/org/repo/commit/abc123def456",
"runnerType": "github-actions",
"buildId": "build-789012",
"buildUrl": "https://github.com/org/repo/actions/runs/789012",
"buildName": "CI Build",
"vcsType": "github",
"repo": "org/repo",
"repoUrl": "https://github.com/org/repo",
"ownerSummary": {
"email": "[email protected]",
"name": "John Doe",
"initials": "JD",
"customColor": "#00000F"
},
"title": "Update infrastructure for new feature",
"terraformVersion": "1.0.11",
"iacType": "terraform",
"backendSummary": {
"backendType": "s3",
"backendConfig": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"iacStackId": "text",
"managedResourceCount": 1
},
"planTaskId": "507f1f77bcf86cd799439013",
"applyTaskId": "507f1f77bcf86cd799439014",
"plan": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"contentKeys": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"status": "completed",
"resultStatus": "success",
"type": {
"description": "text"
},
"guardrailsSummary": {
"total": 10,
"passed": 8,
"failed": 2,
"violations": [
{
"id": "v1",
"severity": "high",
"message": "Resource does not have required tags"
}
],
"description": "text"
},
"backendSummary": {
"type": "s3",
"config": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"resources": 42,
"description": "text"
},
"changedFilesCodeSummary": {
"total": 5,
"added": 2,
"modified": 3,
"deleted": 0,
"files": [
{
"path": "main.tf",
"type": "modified"
}
],
"description": "text"
},
"vcsType": {
"description": "text"
},
"runnerType": {
"description": "text"
}
}
],
"apply": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"contentKeys": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"status": "completed",
"resultStatus": "success",
"type": {
"description": "text"
},
"guardrailsSummary": {
"total": 10,
"passed": 8,
"failed": 2,
"violations": [
{
"id": "v1",
"severity": "high",
"message": "Resource does not have required tags"
}
],
"description": "text"
},
"backendSummary": {
"type": "s3",
"config": {
"bucket": "terraform-state",
"key": "prod/terraform.tfstate"
},
"resources": 42,
"description": "text"
},
"changedFilesCodeSummary": {
"total": 5,
"added": 2,
"modified": 3,
"deleted": 0,
"files": [
{
"path": "main.tf",
"type": "modified"
}
],
"description": "text"
},
"vcsType": {
"description": "text"
},
"runnerType": {
"description": "text"
}
}
]
}
]Lists Resources Affected by a Run
JWT authentication token
Unique identifier of the Run
684aac91c3f9b3880d3ece51Pattern: ^[0-9a-fA-F]{24}$Unique identifier of the Workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$025Run resources retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/{runId}/resources/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 609
{
"projection": [
"text"
],
"searchValue": "text",
"mode": "table",
"filters": {
"action": {
"0": "create"
},
"hasDiagnostics": true,
"taskType": {
"0": "post-plan"
},
"resourceId": {
"0": "aws_s3_bucket.logs"
},
"providerName": [
"aws"
],
"isDrifted": false,
"$or": {
"action": {
"0": "create"
},
"hasDiagnostics": true,
"taskType": {
"0": "post-plan"
},
"resourceId": {
"0": "aws_s3_bucket.logs"
},
"providerName": [
"aws"
],
"isDrifted": false
}
},
"sort": {
"name": {
"order": -1
},
"mode": {
"order": -1
},
"action": {
"order": -1
},
"isDrifted": {
"order": -1
},
"type": {
"order": -1
},
"taskType": {
"order": -1
},
"providerName": {
"order": -1
},
"updatedAt": {
"order": -1
},
"createdAt": {
"order": -1
}
}
}{
"resources": [
{
"id": "507f1f77bcf86cd799439011",
"accountId": "507f1f77bcf86cd799439011",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"taskId": "507f1f77bcf86cd799439013",
"name": "aws_instance.example",
"type": "aws_instance",
"mode": "managed",
"action": {
"description": "text"
}
},
{
"isDrifted": false,
"taskType": {
"description": "text"
},
"dataType": {
"description": "text"
},
"providerName": "aws",
"providerType": "aws",
"providerVersion": "4.0.0"
}
]
}Lists code changes grouped by folders with file metadata
JWT authentication token
Unique identifier of the run
684aac91c3f9b3880d3ece51Pattern: ^[0-9a-fA-F]{24}$Unique identifier of the Workspace
0e01b22c-7f4b-5e0f-b1c1-faff031977f8Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$025Run changed code retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/workspaces/{workspaceId}/runs/{runId}/changed-files-code/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 410
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"taskId": {
"0": "507f1f77bcf86cd799439013"
},
"suffix": {
"0": "tf"
},
"taskType": {
"0": "post-plan"
},
"filePath": {
"0": "infrastructure/main.tf"
},
"$or": {
"taskId": {
"0": "507f1f77bcf86cd799439013"
},
"suffix": {
"0": "tf"
},
"taskType": {
"0": "post-plan"
},
"filePath": {
"0": "infrastructure/main.tf"
}
}
},
"sort": {
"taskType": {
"order": -1
},
"suffix": {
"order": -1
},
"updatedAt": {
"order": -1
}
}
}{
"infrastructure": [
{
"id": "507f1f77bcf86cd799439014",
"filePath": "infrastructure/main.tf",
"folderPath": "infrastructure",
"fileSuffix": "tf",
"changes": {
"additions": 10,
"deletions": 5
}
}
],
"modules": [
{
"id": "507f1f77bcf86cd799439015",
"filePath": "modules/network/main.tf",
"folderPath": "modules/network",
"fileSuffix": "tf",
"changes": {
"additions": 3,
"deletions": 1
}
}
]
}Guardrails
Returns a list of guardrails rules based on filter criteria
JWT authentication token
025List of guardrail rules retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/guardrails/search HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 496
{
"projection": [
"text"
],
"searchValue": "text",
"filters": {
"createdBy": [
"John Doe"
],
"type": [
"policy",
"cost"
],
"labels": [
"production"
],
"repositories": [
"my-repo"
],
"workspaces": [
"my-workspace"
],
"branches": [
"main"
],
"$or": {
"createdBy": [
"John Doe"
],
"type": [
"policy",
"cost"
],
"labels": [
"production"
],
"repositories": [
"my-repo"
],
"workspaces": [
"my-workspace"
],
"branches": [
"main"
]
}
},
"sort": [
{
"createdAt": {
"order": -1
},
"accountId": {
"order": -1
},
"createdBy": {
"order": -1
},
"name": {
"order": -1
},
"severity": {
"order": -1
}
}
]
}[
{
"id": "507f1f77bcf86cd799439012",
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}
]Creates a new guardrail rule with optional notification setup
JWT authentication token
Guardrail Rule Created Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/guardrails HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 811
{
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}{
"ruleId": "507f1f77bcf86cd799439011",
"notificationId": "507f1f77bcf86cd799439012"
}Updates an existing Guardrail Rule and its Notifications
JWT authentication token
Unique identifier of the Guardrail Rule
684aac91c3f9b3880d3ece51Pattern: ^[0-9a-fA-F]{24}$Guardrail Rule Updated Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PATCH /v2/guardrails/{ruleId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 811
{
"accountId": "507f1f77bcf86cd799439012",
"createdBy": "John Doe",
"name": "text",
"type": "policy",
"scope": {
"workspaces": {
"include": null,
"exclude": [
"text"
]
},
"repositories": {
"include": null,
"exclude": [
"text"
]
},
"branches": {
"include": null,
"exclude": [
"text"
]
},
"labels": {
"include": null,
"exclude": [
"text"
]
}
},
"criteria": {
"cost": {
"thresholdAmount": 1,
"thresholdPercentage": 1
},
"policy": {
"severity": "text",
"policies": {
"include": [
"text"
],
"exclude": [
"text"
]
}
},
"resource": {
"actions": [
"create"
],
"regions": {
"include": null,
"exclude": [
"text"
]
},
"assetTypes": {
"include": null,
"exclude": [
"text"
]
},
"specificResources": [
"text"
]
},
"tag": {
"tagEnforcementMode": "anyTags"
}
},
"isEnabled": true,
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"notificationId": "507f1f77bcf86cd799439012",
"severity": 0,
"enforceOnNoOp": true
}{
"id": "507f1f77bcf86cd799439011",
"name": "Enforce S3 Encryption",
"enabled": true,
"updatedAt": "2024-11-11T10:00:00Z"
}Deletes a Guardrail Rule and its Associated Notification
JWT authentication token
Unique identifier of the Guardrail Rule
684aac91c3f9b3880d3ece51Pattern: ^[0-9a-fA-F]{24}$Guardrail Rule Deleted Successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/guardrails/{ruleId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": 200,
"message": "Guardrail rule and notification deleted successfully"
}Projects
Creates a new project
JWT authentication token
Project created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/projects HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 189
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"parentId": "text"
}{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}Retrieves a single project by ID
JWT authentication token
Unique identifier of the project to retrieve
Project retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}Updates an existing project
JWT authentication token
Unique identifier of the project to update
Project updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PATCH /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 171
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}Deletes a project and all its associated workspaces
JWT authentication token
Unique identifier of the project to delete
Project successfully deleted
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Retrieves all projects with pagination support
JWT authentication token
25The offset of the items to return
0Maximum depth of the project tree to return
Projects retrieved successfully in flat list format
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/list HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
],
"totalCount": 1
}Retrieves all projects in a hierarchical tree format
JWT authentication token
Search query
Filter projects by variable set ID
When used with variableSetId, only return projects that consume the variable set
Projects retrieved successfully in tree format
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/tree HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"data": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
},
{
"hasChildren": true,
"children": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
],
"ancestors": [
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"cronExecutionPattern": "text",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"id": "text",
"accountId": "text",
"membersCount": 1,
"workspaceCount": 1,
"parentId": "text"
}
]
}
]
}
]
}Retrieves all members of a specified project
JWT authentication token
Unique identifier of the project
Members retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"userId": "text",
"role": "admin"
}
]Adds new members to a specified project
JWT authentication token
Unique identifier of the project
ID of the user
Role of the user in the project
Members added successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 34
[
{
"userId": "text",
"role": "admin"
}
][
{
"userId": "text",
"role": "admin"
}
]Deletes specified members from a project
JWT authentication token
Unique identifier of the project
User IDs of the members to remove
Members removed successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/projects/{projectId}/members HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 8
[
"text"
]No content
Retrieves all workspaces of a specified project
JWT authentication token
Unique identifier of the project
Search query
25The offset of the items to return
0Workspaces retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/projects/{projectId}/workspaces HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}
]Retrieves all available project labels for the account
JWT authentication token
Project labels retrieved successfully
List of project labels
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/projects/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
"text"
]Variables Management
Project Variables
JWT authentication token
List of project variables
GET /v2/runners/variables/projects/{projectId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
List of project variables
[
{
"key": "text",
"value": "text",
"description": "text",
"isSecret": true,
"projectId": "text",
"workspaceId": "text",
"variableSetId": "text",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
]JWT authentication token
Variables upserted within project
POST /v2/runners/variables/projects/{projectId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}Variables upserted within project
[
{
"key": "text",
"value": "text",
"description": "text",
"isSecret": true,
"projectId": "text",
"workspaceId": "text",
"variableSetId": "text",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
]JWT authentication token
Array of variable keys to delete
Variables deleted from project
DELETE /v2/runners/variables/projects/{projectId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 25
{
"variableKeys": [
"text"
]
}Variables deleted from project
No content
Workspace Variables
JWT authentication token
List of workspace variables
GET /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
List of workspace variables
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]JWT authentication token
Variables upserted within workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 144
{
"variables": [
{
"variableId": "text",
"variableData": {
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env",
"origin": "project"
}
}
]
}Variables upserted within workspace
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]JWT authentication token
Array of variable IDs to delete
Variables deleted from workspace
DELETE /v2/runners/variables/workspaces/{workspaceId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"variableIds": [
"text"
]
}Variables deleted from workspace
No content
Variable Sets
JWT authentication token
List of variable sets
GET /v2/runners/variables/variable-sets HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
List of variable sets
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]JWT authentication token
Name of the variable set
Description of the variable set
Labels to assign to the variable set
Parent variable set IDs
Variable set created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/variables/variable-sets HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}{
"variableSetId": "text"
}JWT authentication token
Variable set
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "text",
"version": 1,
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"descendants": [
{
"id": "text",
"name": "text"
}
],
"consumers": {
"workspaces": [
{
"id": "text",
"name": "text"
}
],
"projects": [
{
"id": "text",
"name": "text"
}
]
}
}JWT authentication token
Name of the variable set
Description of the variable set
Labels to assign to the variable set
Parent variable set IDs
Variable set updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
PUT /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}{
"id": "text",
"version": 1,
"name": "text",
"description": "text",
"labels": [
"text"
],
"parents": [
"text"
],
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"descendants": [
{
"id": "text",
"name": "text"
}
],
"consumers": {
"workspaces": [
{
"id": "text",
"name": "text"
}
],
"projects": [
{
"id": "text",
"name": "text"
}
]
}
}JWT authentication token
Variable set deleted successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
DELETE /v2/runners/variables/variable-sets/{variableSetId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
JWT authentication token
025List of variables in variable set
GET /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
List of variables in variable set
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]JWT authentication token
Variables upserted within variable set
POST /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]
}Variables upserted within variable set
[
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
]JWT authentication token
Array of variable IDs to delete
Variables deleted from variable set
DELETE /v2/runners/variables/variable-sets/{variableSetId}/variables HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"variableIds": [
"text"
]
}Variables deleted from variable set
No content
Variable Set Operations
JWT authentication token
Whether to consume the variable set values
trueVariable set attached to project
POST /v2/runners/variables/projects/{projectId}/variable-sets/{variableSetId}/attach HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 16
{
"consume": true
}Variable set attached to project
No content
JWT authentication token
Variable set detached from project
POST /v2/runners/variables/projects/{projectId}/variable-sets/{variableSetId}/detach HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Variable set detached from project
No content
JWT authentication token
Variable set bound to workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variable-sets/{variableSetId}/bind HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Variable set bound to workspace
No content
JWT authentication token
Variable set unbound from workspace
POST /v2/runners/variables/workspaces/{workspaceId}/variable-sets/{variableSetId}/unbind HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Variable set unbound from workspace
No content
Runners Workspaces
Creates a new workspace with the provided configuration
JWT authentication token
Type of runner (e.g., firefly_runners)
firefly_runnersInfrastructure as Code type
terraformUnique workspace name
my-workspaceWorkspace description
Production environment workspaceLabels assigned to the workspace
["production","terraform"]VCS integration ID
5fd126f5744410407fbc552fRepository name
infralight/appiacDefault branch
mainVCS type (github, gitlab, etc.)
githubWorking directory path
terraform/productionArray of variable set IDs that this workspace consumes
["var-set-1","var-set-2"]Project ID or null for global access
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Cleaned by deleteMockArrays
Workspace created successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
POST /v2/runners/workspaces HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 647
{
"runnerType": "firefly_runners",
"iacType": "terraform",
"workspaceName": "my-workspace",
"description": "Production environment workspace",
"labels": [
"production",
"terraform"
],
"vcsId": "5fd126f5744410407fbc552f",
"repo": "infralight/appiac",
"defaultBranch": "main",
"vcsType": "github",
"workDir": "terraform/production",
"variables": [
{
"key": "text",
"value": "text",
"sensitivity": "string",
"destination": "env"
}
],
"consumedVariableSets": [
"var-set-1",
"var-set-2"
],
"execution": {
"triggers": [
"merge"
],
"applyRule": "manual",
"terraformVersion": "1.5.7"
},
"project": null,
"terraformVariables": {},
"terraformSensitiveVariables": {},
"providersCredentials": {},
"runnerEnvironment": {}
}{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}Retrieves all available workspace labels for the account
JWT authentication token
Workspace labels retrieved successfully
List of workspace labels
Bad Request Error
Unauthorized Error
Insufficient permissions
Internal Server Error
GET /v2/runners/workspaces/labels HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
"text"
]Retrieves details for a specific workspace
JWT authentication token
Unique identifier of the workspace
Workspace details retrieved successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
GET /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}Deploys a workspace by running plan or apply tasks based on the provided task type
JWT authentication token
Unique identifier of the workspace
The type of task to run (plan or apply)
Additional command line arguments
Workspace deployed successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 112
{
"taskType": "plan",
"vcs": {
"reference": "text",
"type": "branch"
},
"trigger": {
"type": "manual"
},
"cmdArguments": "text"
}{
"status": 200,
"data": {
"message": "Workspace deployed successfully"
}
}Updates an existing workspace with the provided configuration
JWT authentication token
Unique identifier of the workspace
Workspace name
my-workspaceWorkspace description
Production environment workspaceLabels assigned to the workspace
["production","terraform"]VCS integration ID
5fd126f5744410407fbc552fRepository name
infralight/appiacDefault branch
mainVCS type (github, gitlab, etc.)
githubWorking directory path
terraform/productionType of runner (e.g., firefly_runners)
firefly_runnersCron pattern for scheduled executions
0 2 * * *Project ID or null for global access
Workspace updated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
PUT /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 482
{
"name": "my-workspace",
"description": "Production environment workspace",
"labels": [
"production",
"terraform"
],
"vcsIntegrationId": "5fd126f5744410407fbc552f",
"repository": "infralight/appiac",
"defaultBranch": "main",
"vcs": "github",
"workingDirectory": "terraform/production",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"runnerType": "firefly_runners",
"triggerConfig": {
"runOnPullRequest": true,
"runOnPush": false,
"autoApply": false
},
"cronExecutionPattern": "0 2 * * *",
"parentId": null
}{
"id": "text",
"name": "text",
"description": "text",
"accountId": "text",
"repository": "text",
"workingDirectory": "text",
"vcsIntegrationId": "text",
"vcs": "text",
"defaultBranch": "text",
"cronExecutionPattern": "text",
"iacProvisioner": {
"type": "terraform",
"version": "text"
},
"labels": [
"text"
]
}Deletes a specific workspace and optionally destroys its infrastructure resources
JWT authentication token
Unique identifier of the workspace
Whether to destroy infrastructure resources before deleting the workspace
falseOptional description for the deletion operation
Workspace deleted successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
DELETE /v2/runners/workspaces/{workspaceId} HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"message": "Workspace deleted successfully",
"workspaceId": "text",
"resourcesDestroyed": true
}Initiates a destroy task to clean up cloud infrastructure resources managed by this workspace. This does not delete the workspace entity itself.
JWT authentication token
Unique identifier of the workspace
Request to run a task on workspace infrastructure
Optional description for the task
Running infrastructure taskOptional command line arguments for the task
-auto-approveDestroy task initiated successfully
Bad Request Error
Unauthorized Error
Insufficient permissions
Not Found Error
Internal Server Error
POST /v2/runners/workspaces/{workspaceId}/tasks/destroy HTTP/1.1
Host: api.firefly.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 166
{
"description": "Running infrastructure task",
"vcs": {
"reference": "main",
"type": "branch"
},
"trigger": {
"type": "manual",
"source": "Firefly"
},
"cmdArguments": "-auto-approve"
}{
"accountId": "text",
"id": "text",
"status": "pending",
"error": {
"type": "UNEXPECTED",
"description": "text"
},
"currentStep": "plan",
"workspaceId": "text",
"vcs": {
"reference": "main",
"type": "branch"
},
"trigger": {
"type": "manual"
},
"type": "plan",
"cmdArguments": "text",
"createdAt": "2025-11-16T03:17:54.832Z",
"updatedAt": "2025-11-16T03:17:54.832Z"
}Last updated
Was this helpful?

