{
"components": {
"schemas": {
"ApikeyAPIKeyCreateRequest": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"ApikeyAPIKeyCreateResponse": {
"additionalProperties": false,
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"key_value": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name",
"key_value",
"created_at"
],
"type": "object"
},
"ApikeyAPIKeyListItem": {
"additionalProperties": false,
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"created_by": {
"type": "string"
},
"created_by_id": {
"type": "string"
},
"id": {
"type": "string"
},
"key_preview": {
"type": "string"
},
"last_used_at": {
"format": "date-time",
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name",
"key_preview",
"created_at"
],
"type": "object"
},
"ApikeyAPIKeyListResponse": {
"additionalProperties": false,
"properties": {
"api_keys": {
"items": {
"$ref": "#/components/schemas/ApikeyAPIKeyListItem"
},
"type": [
"array",
"null"
]
},
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"api_keys",
"total",
"limit",
"offset"
],
"type": "object"
},
"ApikeyAPIKeyRegenerateResponse": {
"additionalProperties": false,
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"key_value": {
"type": "string"
},
"name": {
"type": "string"
},
"regenerated_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"name",
"key_value",
"created_at",
"regenerated_at"
],
"type": "object"
},
"Billing_historyBillingHistoryItem": {
"additionalProperties": false,
"properties": {
"amount_cents": {
"format": "int64",
"type": "integer"
},
"amount_dollars": {
"format": "double",
"type": "number"
},
"billing_cycle": {
"type": "string"
},
"currency": {
"type": "string"
},
"description": {
"type": "string"
},
"due_date": {
"format": "date-time",
"type": "string"
},
"formatted_amount": {
"type": "string"
},
"hosted_invoice_url": {
"type": "string"
},
"id": {
"type": "string"
},
"invoice_date": {
"format": "date-time",
"type": "string"
},
"invoice_number": {
"type": "string"
},
"invoice_pdf_url": {
"type": "string"
},
"paid_at": {
"format": "date-time",
"type": "string"
},
"plan_name": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"invoice_number",
"amount_cents",
"currency",
"status",
"invoice_date",
"plan_name",
"billing_cycle",
"description",
"amount_dollars",
"formatted_amount"
],
"type": "object"
},
"Billing_historyBillingHistoryResponse": {
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"items": {
"items": {
"$ref": "#/components/schemas/Billing_historyBillingHistoryItem"
},
"type": [
"array",
"null"
]
},
"total_count": {
"format": "int64",
"type": "integer"
}
},
"required": [
"items",
"total_count",
"has_more"
],
"type": "object"
},
"DeleteAPIKeyOutputBody": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"MessageOutputBody": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"OrganizationInvitationListResponse": {
"additionalProperties": false,
"properties": {
"invitations": {
"items": {
"$ref": "#/components/schemas/OrganizationInvitationResponse"
},
"type": [
"array",
"null"
]
}
},
"required": [
"invitations"
],
"type": "object"
},
"OrganizationInvitationResponse": {
"additionalProperties": false,
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"email": {
"type": "string"
},
"external_invitation_id": {
"type": "string"
},
"id": {
"type": "string"
},
"invited_by": {
"type": "string"
},
"invited_by_name": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"role": {
"type": "string"
}
},
"required": [
"id",
"organization_id",
"email",
"role",
"invited_by"
],
"type": "object"
},
"OrganizationOrganizationListResponse": {
"additionalProperties": false,
"properties": {
"organizations": {
"items": {
"$ref": "#/components/schemas/OrganizationOrganizationResponse"
},
"type": [
"array",
"null"
]
}
},
"required": [
"organizations"
],
"type": "object"
},
"OrganizationOrganizationMemberListResponse": {
"additionalProperties": false,
"properties": {
"members": {
"items": {
"$ref": "#/components/schemas/OrganizationOrganizationMemberResponse"
},
"type": [
"array",
"null"
]
}
},
"required": [
"members"
],
"type": "object"
},
"OrganizationOrganizationMemberResponse": {
"additionalProperties": false,
"properties": {
"created_at": {
"format": "date-time",
"type": "string"
},
"email": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"role": {
"type": "string"
},
"user_id": {
"type": "string"
}
},
"required": [
"id",
"organization_id",
"user_id",
"role"
],
"type": "object"
},
"OrganizationOrganizationResponse": {
"additionalProperties": false,
"properties": {
"balance_microdollars": {
"format": "int64",
"type": "integer"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"external_org_id": {
"type": "string"
},
"id": {
"type": "string"
},
"logo_url": {
"type": "string"
},
"name": {
"type": "string"
},
"onboarding_completed_at": {
"format": "date-time",
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"external_org_id",
"name",
"slug",
"balance_microdollars"
],
"type": "object"
},
"PhoneActiveSession": {
"additionalProperties": false,
"properties": {
"allocated_at": {
"type": "string"
},
"allocated_by": {
"type": "string"
},
"is_dedicated_phone": {
"type": "boolean"
},
"location": {
"type": "string"
},
"model_name": {
"type": "string"
},
"nickname": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"phone_name": {
"type": "string"
},
"phone_status": {
"type": "string"
},
"phone_type": {
"type": "string"
},
"session_id": {
"type": "string"
},
"workflow_id": {
"type": "string"
},
"workflow_name": {
"type": "string"
}
},
"required": [
"session_id",
"phone_id",
"phone_status",
"allocated_at",
"is_dedicated_phone"
],
"type": "object"
},
"PhoneActiveSessionsResponse": {
"additionalProperties": false,
"properties": {
"sessions": {
"items": {
"$ref": "#/components/schemas/PhoneActiveSession"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"sessions",
"total"
],
"type": "object"
},
"PhoneAllocatePhoneRequest": {
"additionalProperties": false,
"properties": {
"phone_id": {
"type": "string"
},
"phone_type": {
"type": "string"
},
"workflow_id": {
"type": "string"
}
},
"required": [
"phone_type"
],
"type": "object"
},
"PhoneAllocatePhoneResponse": {
"additionalProperties": false,
"properties": {
"control_url": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"region": {
"type": "string"
},
"session_id": {
"type": "string"
},
"workflow_started_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"phone_id",
"session_id",
"workflow_started_at"
],
"type": "object"
},
"PhoneAvailablePhonesResponse": {
"additionalProperties": false,
"properties": {
"android_count": {
"format": "int64",
"type": "integer"
},
"iphone_count": {
"format": "int64",
"type": "integer"
},
"phones": {
"items": {
"$ref": "#/components/schemas/PhonePhoneSummary"
},
"type": [
"array",
"null"
]
}
},
"required": [
"iphone_count",
"android_count",
"phones"
],
"type": "object"
},
"PhoneDeallocatePhoneResponse": {
"additionalProperties": false,
"properties": {
"deallocated_at": {
"format": "date-time",
"type": "string"
},
"phone_id": {
"type": "string"
},
"session_id": {
"type": "string"
},
"workflow_id": {
"type": "string"
}
},
"required": [
"phone_id",
"workflow_id",
"session_id"
],
"type": "object"
},
"PhonePhoneAppSummary": {
"additionalProperties": false,
"properties": {
"android_package_name": {
"type": "string"
},
"app_metadata": {
"additionalProperties": {},
"type": "object"
},
"category": {
"type": "string"
},
"create_date": {
"format": "date-time",
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"icon_url": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"ios_app_store_id": {
"type": [
"string",
"null"
]
},
"is_supported": {
"type": "boolean"
},
"model_datasets": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"model_status": {
"type": "string"
},
"model_trained_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"platform": {
"type": "string"
},
"slug": {
"type": "string"
},
"update_date": {
"format": "date-time",
"type": "string"
},
"version": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"slug",
"android_package_name",
"platform",
"category",
"version",
"is_supported",
"icon_url",
"description",
"ios_app_store_id",
"model_datasets",
"model_trained_at",
"model_status",
"app_metadata",
"create_date",
"update_date"
],
"type": "object"
},
"PhonePhoneSummary": {
"additionalProperties": false,
"properties": {
"agent_version": {
"type": [
"string",
"null"
]
},
"android_version": {
"type": [
"string",
"null"
]
},
"create_date": {
"format": "date-time",
"type": "string"
},
"current_session_id": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"imei1": {
"type": [
"string",
"null"
]
},
"imei2": {
"type": [
"string",
"null"
]
},
"last_heartbeat": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"last_interaction_timestamp": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"location": {
"type": [
"string",
"null"
]
},
"model_id": {
"type": [
"string",
"null"
]
},
"model_name": {
"type": [
"string",
"null"
]
},
"nickname": {
"type": [
"string",
"null"
]
},
"one_ui_version": {
"type": [
"string",
"null"
]
},
"owner_organization_id": {
"type": [
"string",
"null"
]
},
"ownership_type": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"phone_metadata": {
"additionalProperties": {},
"type": "object"
},
"phone_name": {
"type": [
"string",
"null"
]
},
"phone_serial": {
"type": [
"string",
"null"
]
},
"phone_type": {
"type": [
"string",
"null"
]
},
"rental_expires_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"update_date": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"phone_id",
"phone_name",
"nickname",
"phone_type",
"status",
"model_id",
"model_name",
"imei1",
"imei2",
"one_ui_version",
"android_version",
"last_heartbeat",
"location",
"ownership_type",
"owner_organization_id",
"rental_expires_at",
"last_interaction_timestamp",
"phone_metadata",
"phone_serial",
"agent_version",
"current_session_id",
"create_date",
"update_date"
],
"type": "object"
},
"PhonePrivatePhonesResponse": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"phones": {
"items": {
"$ref": "#/components/schemas/PhonePhoneSummary"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"phones",
"total",
"limit",
"offset"
],
"type": "object"
},
"PhoneSessionDetailResponse": {
"additionalProperties": false,
"properties": {
"allocated_at": {
"type": "string"
},
"allocated_by": {
"type": "string"
},
"deallocated_at": {
"type": "string"
},
"is_dedicated_phone": {
"type": "boolean"
},
"location": {
"type": "string"
},
"model_name": {
"type": "string"
},
"nickname": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"phone_name": {
"type": "string"
},
"phone_status": {
"type": "string"
},
"phone_type": {
"type": "string"
},
"recording_status": {
"type": "string"
},
"recording_url": {
"type": "string"
},
"session_id": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"workflow_id": {
"type": "string"
},
"workflow_name": {
"type": "string"
}
},
"required": [
"session_id",
"status",
"source",
"phone_id",
"phone_status",
"allocated_at",
"is_dedicated_phone",
"recording_status"
],
"type": "object"
},
"PhoneSessionListItem": {
"additionalProperties": false,
"properties": {
"allocated_at": {
"type": "string"
},
"allocated_by": {
"type": "string"
},
"deallocated_at": {
"type": "string"
},
"duration_seconds": {
"format": "int64",
"type": "integer"
},
"is_dedicated_phone": {
"type": "boolean"
},
"location": {
"type": "string"
},
"model_name": {
"type": "string"
},
"nickname": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"phone_name": {
"type": "string"
},
"phone_type": {
"type": "string"
},
"session_id": {
"type": "string"
},
"source": {
"type": "string"
},
"status": {
"type": "string"
},
"workflow_id": {
"type": "string"
},
"workflow_name": {
"type": "string"
}
},
"required": [
"session_id",
"status",
"source",
"phone_id",
"allocated_at",
"is_dedicated_phone"
],
"type": "object"
},
"PhoneSessionRecordingResponse": {
"additionalProperties": false,
"properties": {
"status": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"PhoneSessionsListResponse": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"sessions": {
"items": {
"$ref": "#/components/schemas/PhoneSessionListItem"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"sessions",
"total",
"limit",
"offset"
],
"type": "object"
},
"PhoneSuccessResponse": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"PhoneSupportedPhoneAppsResponse": {
"additionalProperties": false,
"properties": {
"phone_apps": {
"items": {
"$ref": "#/components/schemas/PhonePhoneAppSummary"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"phone_apps",
"total"
],
"type": "object"
},
"PhoneUpdateNicknameRequest": {
"additionalProperties": false,
"properties": {
"nickname": {
"type": "string"
}
},
"required": [
"nickname"
],
"type": "object"
},
"Phone_rentalPhoneRentalIntervalSummary": {
"additionalProperties": false,
"properties": {
"count": {
"format": "int64",
"type": "integer"
},
"interval": {
"type": "string"
},
"monthly_cents": {
"format": "int64",
"type": "integer"
}
},
"required": [
"interval",
"count",
"monthly_cents"
],
"type": "object"
},
"Phone_rentalPhoneRentalSubscriptionListResponse": {
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"subscriptions": {
"items": {
"$ref": "#/components/schemas/Phone_rentalPhoneRentalSubscriptionResponse"
},
"type": [
"array",
"null"
]
},
"summary": {
"$ref": "#/components/schemas/Phone_rentalPhoneRentalSummary"
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"subscriptions",
"total",
"has_more",
"summary"
],
"type": "object"
},
"Phone_rentalPhoneRentalSubscriptionResponse": {
"additionalProperties": false,
"properties": {
"cancel_at_period_end": {
"type": "boolean"
},
"canceled_at": {
"format": "date-time",
"type": "string"
},
"current_period_end": {
"format": "date-time",
"type": "string"
},
"current_period_start": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"payment_status": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"phone_name": {
"type": "string"
},
"phone_nickname": {
"type": "string"
},
"plan_id": {
"type": "string"
},
"plan_interval": {
"type": "string"
},
"plan_name": {
"type": "string"
},
"plan_price_cents": {
"format": "int64",
"type": "integer"
},
"status": {
"type": "string"
}
},
"required": [
"id",
"organization_id",
"plan_id",
"plan_name",
"plan_interval",
"plan_price_cents",
"status",
"payment_status",
"current_period_start",
"current_period_end",
"cancel_at_period_end"
],
"type": "object"
},
"Phone_rentalPhoneRentalSummary": {
"additionalProperties": false,
"properties": {
"active_count": {
"format": "int64",
"type": "integer"
},
"combined_monthly_cents": {
"format": "int64",
"type": "integer"
},
"per_interval": {
"items": {
"$ref": "#/components/schemas/Phone_rentalPhoneRentalIntervalSummary"
},
"type": [
"array",
"null"
]
},
"upcoming_charges": {
"items": {
"$ref": "#/components/schemas/Phone_rentalPhoneRentalUpcomingCharge"
},
"type": [
"array",
"null"
]
}
},
"required": [
"active_count",
"combined_monthly_cents",
"per_interval",
"upcoming_charges"
],
"type": "object"
},
"Phone_rentalPhoneRentalUpcomingCharge": {
"additionalProperties": false,
"properties": {
"amount_cents": {
"format": "int64",
"type": "integer"
},
"count": {
"format": "int64",
"type": "integer"
},
"date": {
"format": "date-time",
"type": "string"
}
},
"required": [
"date",
"count",
"amount_cents"
],
"type": "object"
},
"RunHistoricRun": {
"additionalProperties": false,
"properties": {
"cancelled_at": {
"type": "string"
},
"completed_at": {
"type": "string"
},
"created_at": {
"type": "string"
},
"error_message": {
"type": "string"
},
"org_id": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"run_id": {
"type": "string"
},
"run_metadata": {
"type": "string"
},
"started_at": {
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"trigger": {
"type": "string"
},
"user_id": {
"type": "string"
},
"video_url": {
"type": "string"
},
"workflow_id": {
"type": "string"
}
},
"required": [
"run_id",
"workflow_id",
"user_id",
"status",
"trigger"
],
"type": "object"
},
"RunHistoricRunsRequest": {
"additionalProperties": false,
"properties": {
"end_date": {
"format": "date-time",
"type": "string"
},
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"search": {
"type": "string"
},
"start_date": {
"format": "date-time",
"type": "string"
},
"status_filter": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"workflow_id": {
"type": "string"
}
},
"required": [
"start_date",
"end_date",
"limit",
"offset"
],
"type": "object"
},
"RunHistoricRunsResponse": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"runs": {
"items": {
"$ref": "#/components/schemas/RunHistoricRun"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"runs",
"total",
"limit",
"offset"
],
"type": "object"
},
"RunRunConfig": {
"additionalProperties": false,
"properties": {
"phoneId": {
"type": "string"
},
"variables": {
"items": {
"additionalProperties": {},
"type": "object"
},
"type": [
"array",
"null"
]
}
},
"required": [
"variables"
],
"type": "object"
},
"RunRunCreateRequest": {
"additionalProperties": false,
"properties": {
"numberOfRuns": {
"format": "int64",
"type": "integer"
},
"runTime": {
"$ref": "#/components/schemas/RunRunTimeConfig"
},
"runs": {
"items": {
"$ref": "#/components/schemas/RunRunConfig"
},
"type": [
"array",
"null"
]
}
},
"required": [
"numberOfRuns",
"runTime",
"runs"
],
"type": "object"
},
"RunRunCreateResponse": {
"additionalProperties": false,
"properties": {
"run_ids": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
"required": [
"run_ids"
],
"type": "object"
},
"RunRunEventSummary": {
"additionalProperties": false,
"properties": {
"body": {},
"session_id": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"type",
"timestamp",
"session_id"
],
"type": "object"
},
"RunRunEventsRequest": {
"additionalProperties": false,
"properties": {
"event_types": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"session_id": {
"type": "string"
}
},
"required": [
"session_id",
"limit",
"offset"
],
"type": "object"
},
"RunRunEventsResponse": {
"additionalProperties": false,
"properties": {
"events": {
"items": {
"$ref": "#/components/schemas/RunRunEventSummary"
},
"type": [
"array",
"null"
]
},
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"events",
"total",
"limit",
"offset"
],
"type": "object"
},
"RunRunListRequest": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"search": {
"type": "string"
},
"sort_by": {
"items": {
"$ref": "#/components/schemas/RunRunSortSpec"
},
"type": [
"array",
"null"
]
},
"status_filter": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"trigger_filter": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"workflow_id": {
"type": "string"
}
},
"required": [
"limit",
"offset"
],
"type": "object"
},
"RunRunListResponse": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"runs": {
"items": {
"$ref": "#/components/schemas/RunRunResponse"
},
"type": [
"array",
"null"
]
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"runs",
"total",
"limit",
"offset"
],
"type": "object"
},
"RunRunResponse": {
"additionalProperties": false,
"properties": {
"cancelled_at": {
"format": "date-time",
"type": "string"
},
"completed_at": {
"format": "date-time",
"type": "string"
},
"create_date": {
"format": "date-time",
"type": "string"
},
"error_message": {
"type": "string"
},
"id": {
"type": "string"
},
"logs": {
"type": "string"
},
"phone_id": {
"type": "string"
},
"run_metadata": {
"additionalProperties": {},
"type": "object"
},
"schedule_timeout_seconds": {
"format": "int64",
"type": "integer"
},
"session_id": {
"type": "string"
},
"started_at": {
"format": "date-time",
"type": "string"
},
"status": {
"type": "string"
},
"success": {
"type": "boolean"
},
"trace_expired_at": {
"format": "date-time",
"type": "string"
},
"trigger": {
"type": "string"
},
"update_date": {
"format": "date-time",
"type": "string"
},
"user_id": {
"type": "string"
},
"variables": {
"additionalProperties": {},
"type": "object"
},
"video_url": {
"type": "string"
},
"workflow_id": {
"type": "string"
}
},
"required": [
"id",
"workflow_id",
"user_id",
"status",
"trigger",
"create_date",
"update_date"
],
"type": "object"
},
"RunRunSortSpec": {
"additionalProperties": false,
"properties": {
"field": {
"type": "string"
},
"order": {
"type": "string"
}
},
"required": [
"field",
"order"
],
"type": "object"
},
"RunRunStatsResponse": {
"additionalProperties": false,
"properties": {
"success_rate": {
"format": "double",
"type": "number"
},
"total_runs": {
"format": "int64",
"type": "integer"
}
},
"required": [
"total_runs",
"success_rate"
],
"type": "object"
},
"RunRunTimeConfig": {
"additionalProperties": false,
"properties": {
"isImmediate": {
"type": "boolean"
},
"isScheduled": {
"type": "boolean"
},
"scheduleTime": {
"type": "string"
},
"scheduleTimeoutSeconds": {
"format": "int64",
"type": "integer"
}
},
"required": [
"isImmediate",
"isScheduled",
"scheduleTimeoutSeconds"
],
"type": "object"
},
"RunSuccessResponse": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"SubscriptionBalanceResponse": {
"additionalProperties": false,
"properties": {
"balance_display": {
"type": "string"
},
"balance_microdollars": {
"format": "int64",
"type": "integer"
}
},
"required": [
"balance_microdollars",
"balance_display"
],
"type": "object"
},
"SubscriptionSubscriptionResponse": {
"additionalProperties": false,
"properties": {
"balance_display": {
"type": "string"
},
"balance_microdollars": {
"format": "int64",
"type": "integer"
},
"billing_cycle": {
"type": "string"
},
"cancel_at_period_end": {
"type": "boolean"
},
"canceled_at": {
"format": "date-time",
"type": "string"
},
"current_period_end": {
"format": "date-time",
"type": "string"
},
"current_period_start": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"included_balance_display": {
"type": "string"
},
"included_balance_microdollars": {
"format": "int64",
"type": "integer"
},
"max_concurrent_runs": {
"format": "int64",
"type": "integer"
},
"monthly_price": {
"format": "double",
"type": "number"
},
"pending_downgrade_effective_date": {
"format": "date-time",
"type": "string"
},
"pending_downgrade_plan_id": {
"type": "string"
},
"plan_id": {
"type": "string"
},
"plan_name": {
"type": "string"
},
"plan_tier": {
"type": "string"
},
"price_per_second_microdollars": {
"format": "int64",
"type": "integer"
},
"status": {
"type": "string"
},
"trial_end": {
"format": "date-time",
"type": "string"
},
"yearly_price": {
"format": "double",
"type": "number"
}
},
"required": [
"id",
"plan_id",
"plan_name",
"plan_tier",
"billing_cycle",
"status",
"current_period_start",
"current_period_end",
"cancel_at_period_end",
"monthly_price",
"yearly_price",
"max_concurrent_runs",
"balance_microdollars",
"balance_display",
"price_per_second_microdollars",
"included_balance_microdollars",
"included_balance_display"
],
"type": "object"
},
"UsageChartDataPoint": {
"additionalProperties": false,
"properties": {
"is_current": {
"type": "boolean"
},
"period": {
"type": "string"
},
"timestamp": {
"format": "date-time",
"type": "string"
},
"value": {
"format": "double",
"type": "number"
}
},
"required": [
"period",
"value",
"is_current",
"timestamp"
],
"type": "object"
},
"UsageComputeMinutes": {
"additionalProperties": false,
"properties": {
"change": {
"format": "double",
"type": "number"
},
"chart_data": {
"items": {
"$ref": "#/components/schemas/UsageChartDataPoint"
},
"type": [
"array",
"null"
]
},
"total_minutes": {
"format": "double",
"type": "number"
}
},
"required": [
"total_minutes",
"change",
"chart_data"
],
"type": "object"
},
"UsageCostByProduct": {
"additionalProperties": false,
"properties": {
"inference": {
"format": "double",
"type": "number"
},
"other": {
"format": "double",
"type": "number"
},
"sessions": {
"format": "double",
"type": "number"
}
},
"required": [
"sessions",
"inference",
"other"
],
"type": "object"
},
"UsageInference": {
"additionalProperties": false,
"properties": {
"api_key_id": {
"type": "string"
},
"cost_microdollars": {
"format": "int64",
"type": "integer"
},
"created_at": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"inference_id": {
"type": "string"
},
"latency_ms": {
"format": "int64",
"type": "integer"
},
"model": {
"type": "string"
},
"ocr_engine": {
"type": "string"
},
"ocr_pages": {
"format": "int64",
"type": "integer"
},
"session_id": {
"type": "string"
},
"vlm_model": {
"type": "string"
}
},
"required": [
"inference_id",
"endpoint",
"model",
"ocr_pages",
"cost_microdollars",
"latency_ms",
"created_at"
],
"type": "object"
},
"UsageInferenceSortSpec": {
"additionalProperties": false,
"properties": {
"field": {
"type": "string"
},
"order": {
"type": "string"
}
},
"required": [
"field",
"order"
],
"type": "object"
},
"UsageInferencesRequest": {
"additionalProperties": false,
"properties": {
"end_date": {
"format": "date-time",
"type": "string"
},
"endpoint_filter": {
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"limit": {
"format": "int64",
"type": "integer"
},
"model": {
"type": "string"
},
"offset": {
"format": "int64",
"type": "integer"
},
"search": {
"type": "string"
},
"session_id": {
"type": "string"
},
"sort_by": {
"items": {
"$ref": "#/components/schemas/UsageInferenceSortSpec"
},
"type": [
"array",
"null"
]
},
"start_date": {
"format": "date-time",
"type": "string"
}
},
"required": [
"start_date",
"end_date"
],
"type": "object"
},
"UsageInferencesResponse": {
"additionalProperties": false,
"properties": {
"inferences": {
"items": {
"$ref": "#/components/schemas/UsageInference"
},
"type": [
"array",
"null"
]
},
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"total": {
"format": "int64",
"type": "integer"
}
},
"required": [
"inferences",
"total",
"limit",
"offset"
],
"type": "object"
},
"UsageInfrastructureCosts": {
"additionalProperties": false,
"properties": {
"change": {
"format": "double",
"type": "number"
},
"chart_data": {
"items": {
"$ref": "#/components/schemas/UsageChartDataPoint"
},
"type": [
"array",
"null"
]
},
"this_period": {
"format": "double",
"type": "number"
},
"total": {
"format": "double",
"type": "number"
}
},
"required": [
"total",
"this_period",
"change",
"chart_data"
],
"type": "object"
},
"UsageUsageMetricsResponse": {
"additionalProperties": false,
"properties": {
"compute_minutes": {
"$ref": "#/components/schemas/UsageComputeMinutes"
},
"cost_by_product": {
"$ref": "#/components/schemas/UsageCostByProduct"
},
"granularity": {
"type": "string"
},
"inference_chart_data": {
"items": {
"$ref": "#/components/schemas/UsageChartDataPoint"
},
"type": [
"array",
"null"
]
},
"infra_costs": {
"$ref": "#/components/schemas/UsageInfrastructureCosts"
},
"period_end": {
"format": "date-time",
"type": "string"
},
"period_start": {
"format": "date-time",
"type": "string"
},
"session_chart_data": {
"items": {
"$ref": "#/components/schemas/UsageChartDataPoint"
},
"type": [
"array",
"null"
]
}
},
"required": [
"infra_costs",
"compute_minutes",
"cost_by_product",
"session_chart_data",
"inference_chart_data",
"period_start",
"period_end",
"granularity"
],
"type": "object"
},
"UserAuthResponse": {
"additionalProperties": false,
"properties": {
"org_slug": {
"type": "string"
},
"token": {
"type": "string"
},
"user_id": {
"type": "string"
}
},
"required": [
"token",
"user_id"
],
"type": "object"
},
"UserInviteCodeValidationResponse": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
},
"valid": {
"type": "boolean"
}
},
"required": [
"valid"
],
"type": "object"
},
"UserProvisionResponse": {
"additionalProperties": false,
"properties": {
"org_slug": {
"type": "string"
},
"user_id": {
"type": "string"
}
},
"required": [
"user_id"
],
"type": "object"
},
"UserSignInRequest": {
"additionalProperties": false,
"properties": {
"email": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"email",
"password"
],
"type": "object"
},
"UserSignUpRequest": {
"additionalProperties": false,
"properties": {
"email": {
"type": "string"
},
"first_name": {
"type": "string"
},
"invite_code": {
"type": "string"
},
"last_name": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"email",
"password",
"first_name",
"last_name"
],
"type": "object"
},
"UserUserResponse": {
"additionalProperties": false,
"properties": {
"created_at": {
"type": "string"
},
"email": {
"type": "string"
},
"id": {
"type": "string"
},
"is_admin": {
"type": "boolean"
},
"is_verified": {
"type": "boolean"
},
"updated_at": {
"type": "string"
}
},
"required": [
"id",
"email",
"is_verified",
"is_admin",
"created_at",
"updated_at"
],
"type": "object"
},
"UserWaitlistRequest": {
"additionalProperties": false,
"properties": {
"company": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"UserWaitlistResponse": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
},
"success": {
"type": "boolean"
}
},
"required": [
"success",
"message"
],
"type": "object"
},
"V2ErrorDetail": {
"additionalProperties": false,
"properties": {
"location": {
"description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
"type": "string"
},
"message": {
"description": "Error message text",
"type": "string"
},
"value": {
"description": "The value at the given location"
}
},
"type": "object"
},
"V2ErrorModel": {
"additionalProperties": false,
"properties": {
"detail": {
"description": "A human-readable explanation specific to this occurrence of the problem.",
"examples": [
"Property foo is required but is missing."
],
"type": "string"
},
"errors": {
"description": "Optional list of individual error details",
"items": {
"$ref": "#/components/schemas/V2ErrorDetail"
},
"type": [
"array",
"null"
]
},
"instance": {
"description": "A URI reference that identifies the specific occurrence of the problem.",
"examples": [
"https://example.com/error-log/abc123"
],
"format": "uri",
"type": "string"
},
"status": {
"description": "HTTP status code",
"examples": [
400
],
"format": "int64",
"type": "integer"
},
"title": {
"description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
"examples": [
"Bad Request"
],
"type": "string"
},
"type": {
"default": "about:blank",
"description": "A URI reference to human-readable documentation for the error.",
"examples": [
"https://example.com/errors/example"
],
"format": "uri",
"type": "string"
}
},
"type": "object"
},
"WorkflowGetCodeResponse": {
"additionalProperties": false,
"properties": {
"revision": {
"format": "int64",
"type": "integer"
},
"revision_id": {
"type": [
"string",
"null"
]
},
"source": {
"type": "string"
},
"updated_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"source",
"revision_id",
"revision",
"updated_at"
],
"type": "object"
},
"WorkflowListRevisionsResponse": {
"additionalProperties": false,
"properties": {
"revisions": {
"items": {
"$ref": "#/components/schemas/WorkflowRevisionSummary"
},
"type": [
"array",
"null"
]
}
},
"required": [
"revisions"
],
"type": "object"
},
"WorkflowRestoreRevisionRequest": {
"additionalProperties": false,
"properties": {
"revision_id": {
"type": "string"
}
},
"required": [
"revision_id"
],
"type": "object"
},
"WorkflowRevisionDetail": {
"additionalProperties": false,
"properties": {
"author_user_id": {
"type": "string"
},
"bytes": {
"format": "int64",
"type": "integer"
},
"code_source": {
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"revision": {
"format": "int64",
"type": "integer"
},
"sha256": {
"type": "string"
}
},
"required": [
"id",
"revision",
"code_source",
"author_user_id",
"message",
"bytes",
"sha256",
"created_at"
],
"type": "object"
},
"WorkflowRevisionSummary": {
"additionalProperties": false,
"properties": {
"author_user_id": {
"type": "string"
},
"bytes": {
"format": "int64",
"type": "integer"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"revision": {
"format": "int64",
"type": "integer"
},
"sha256": {
"type": "string"
}
},
"required": [
"id",
"revision",
"author_user_id",
"message",
"bytes",
"sha256",
"created_at"
],
"type": "object"
},
"WorkflowSaveCodeRequest": {
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
},
"source": {
"type": "string"
}
},
"required": [
"source"
],
"type": "object"
},
"WorkflowSaveCodeResponse": {
"additionalProperties": false,
"properties": {
"no_op": {
"type": "boolean"
},
"revision": {
"format": "int64",
"type": "integer"
},
"revision_id": {
"type": "string"
}
},
"required": [
"revision_id",
"revision",
"no_op"
],
"type": "object"
},
"WorkflowWorkflowCreateRequest": {
"additionalProperties": false,
"properties": {
"goal": {
"type": "string"
},
"name": {
"type": "string"
},
"ocr_engine": {
"type": "string"
},
"platform": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"WorkflowWorkflowCreateResponse": {
"additionalProperties": false,
"properties": {
"workflow_id": {
"type": "string"
}
},
"required": [
"workflow_id"
],
"type": "object"
},
"WorkflowWorkflowFromCodeRequest": {
"additionalProperties": false,
"properties": {
"code_source": {
"type": "string"
},
"goal": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string"
}
},
"required": [
"name",
"code_source"
],
"type": "object"
},
"WorkflowWorkflowFromCodeResponse": {
"additionalProperties": false,
"properties": {
"revision": {
"format": "int64",
"type": "integer"
},
"revision_id": {
"type": "string"
},
"workflow_id": {
"type": "string"
}
},
"required": [
"workflow_id",
"revision_id",
"revision"
],
"type": "object"
},
"WorkflowWorkflowListResponse": {
"additionalProperties": false,
"properties": {
"limit": {
"format": "int64",
"type": "integer"
},
"offset": {
"format": "int64",
"type": "integer"
},
"total": {
"format": "int64",
"type": "integer"
},
"workflows": {
"items": {
"$ref": "#/components/schemas/WorkflowWorkflowResponse"
},
"type": [
"array",
"null"
]
}
},
"required": [
"workflows",
"total",
"limit",
"offset"
],
"type": "object"
},
"WorkflowWorkflowResponse": {
"additionalProperties": false,
"properties": {
"stats": {
"$ref": "#/components/schemas/WorkflowWorkflowStats"
},
"workflow": {
"$ref": "#/components/schemas/WorkflowWorkflowSummary"
}
},
"required": [
"workflow",
"stats"
],
"type": "object"
},
"WorkflowWorkflowStats": {
"additionalProperties": false,
"properties": {
"success_rate": {
"format": "double",
"type": "number"
},
"total_runs": {
"format": "int64",
"type": "integer"
}
},
"required": [
"success_rate",
"total_runs"
],
"type": "object"
},
"WorkflowWorkflowSummary": {
"additionalProperties": false,
"properties": {
"create_date": {
"format": "date-time",
"type": "string"
},
"goal": {
"type": "string"
},
"id": {
"type": "string"
},
"last_run_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"ocr_engine": {
"type": "string"
},
"organization_id": {
"type": [
"string",
"null"
]
},
"platform": {
"type": "string"
},
"status": {
"type": "string"
},
"update_date": {
"format": "date-time",
"type": "string"
},
"user_id": {
"type": "string"
}
},
"required": [
"id",
"user_id",
"organization_id",
"name",
"goal",
"platform",
"status",
"ocr_engine",
"create_date",
"update_date",
"last_run_at"
],
"type": "object"
},
"WorkflowWorkflowUpdateRequest": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"ocr_engine": {
"type": "string"
},
"platform": {
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object"
}
},
"securitySchemes": {
"apiKeyAuth": {
"description": "Customer API key (axl_ prefix).",
"in": "header",
"name": "X-Axilio-Api-Key",
"type": "apiKey"
},
"bearerAuth": {
"bearerFormat": "User JWT",
"scheme": "bearer",
"type": "http"
}
}
},
"info": {
"description": "Axilio backend HTTP API.",
"title": "Axilio API",
"version": "0.28.0"
},
"openapi": "3.1.0",
"paths": {
"/api-keys": {
"get": {
"description": "Lists the API keys for the caller's organization, with optional paging, search, and sort.",
"operationId": "api_keys_list",
"parameters": [
{
"description": "max items per page",
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"default": 50,
"description": "max items per page",
"format": "int64",
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"description": "pagination offset",
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"description": "pagination offset",
"format": "int64",
"minimum": 0,
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApikeyAPIKeyListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List API keys",
"tags": [
"API Keys"
],
"x-required-role": "admin",
"x-mint": {
"content": "Minimum role required: Admin"
}
},
"post": {
"description": "Mints a fresh API key for the caller's organization. The plaintext key value is returned exactly once and never stored or returned again.",
"operationId": "api_keys_create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApikeyAPIKeyCreateRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApikeyAPIKeyCreateResponse"
}
}
},
"description": "Created"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Create an API key",
"tags": [
"API Keys"
],
"x-required-role": "admin",
"x-mint": {
"content": "Minimum role required: Admin"
}
}
},
"/api-keys/{keyID}": {
"delete": {
"description": "Revokes an API key. Subsequent requests using its value are rejected as unauthorized.",
"operationId": "api_keys_delete",
"parameters": [
{
"description": "API key identifier to delete",
"in": "path",
"name": "keyID",
"required": true,
"schema": {
"description": "API key identifier to delete",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteAPIKeyOutputBody"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Delete an API key",
"tags": [
"API Keys"
],
"x-required-role": "admin",
"x-mint": {
"content": "Minimum role required: Admin"
}
}
},
"/api-keys/{keyID}/regenerate": {
"post": {
"description": "Rotates the plaintext value for an existing API key, preserving its name and identifier. The previous value is invalidated immediately.",
"operationId": "api_keys_regenerate",
"parameters": [
{
"description": "API key identifier to regenerate",
"in": "path",
"name": "keyID",
"required": true,
"schema": {
"description": "API key identifier to regenerate",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApikeyAPIKeyRegenerateResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Regenerate an API key",
"tags": [
"API Keys"
],
"x-required-role": "admin",
"x-mint": {
"content": "Minimum role required: Admin"
}
}
},
"/billing/balance": {
"get": {
"description": "Returns the organization's current credit balance in microdollars plus a display string.",
"operationId": "billing_get_balance",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionBalanceResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get account balance",
"tags": [
"Billing"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/billing/history": {
"get": {
"description": "Paginated invoice history for the caller's organization with optional filters and sort.",
"operationId": "billing_get_history",
"parameters": [
{
"description": "max items per page",
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"default": 50,
"description": "max items per page",
"format": "int64",
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"description": "pagination offset",
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"description": "pagination offset",
"format": "int64",
"minimum": 0,
"type": "integer"
}
},
{
"description": "free-text search across invoice number/description",
"explode": false,
"in": "query",
"name": "search",
"schema": {
"description": "free-text search across invoice number/description",
"type": "string"
}
},
{
"description": "filter by billing cycle",
"explode": false,
"in": "query",
"name": "billing_cycle",
"schema": {
"description": "filter by billing cycle",
"type": "string"
}
},
{
"description": "column to sort by",
"explode": false,
"in": "query",
"name": "sort_by",
"schema": {
"description": "column to sort by",
"type": "string"
}
},
{
"description": "asc or desc",
"explode": false,
"in": "query",
"name": "sort_order",
"schema": {
"description": "asc or desc",
"type": "string"
}
},
{
"description": "invoice status filter (lowercase)",
"explode": false,
"in": "query",
"name": "status",
"schema": {
"description": "invoice status filter (lowercase)",
"type": "string"
}
},
{
"description": "RFC3339 lower bound for invoice_date",
"explode": false,
"in": "query",
"name": "date_from",
"schema": {
"description": "RFC3339 lower bound for invoice_date",
"type": "string"
}
},
{
"description": "RFC3339 upper bound for invoice_date (with date_from = an exact calendar month)",
"explode": false,
"in": "query",
"name": "date_to",
"schema": {
"description": "RFC3339 upper bound for invoice_date (with date_from = an exact calendar month)",
"type": "string"
}
},
{
"description": "filter by plan name",
"explode": false,
"in": "query",
"name": "plan_name",
"schema": {
"description": "filter by plan name",
"type": "string"
}
},
{
"description": "filter to invoices for a dedicated phone",
"explode": false,
"in": "query",
"name": "phone_id",
"schema": {
"description": "filter to invoices for a dedicated phone",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Billing_historyBillingHistoryResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List billing history",
"tags": [
"Billing"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/billing/phone-rental-subscriptions": {
"get": {
"description": "Returns every active and pending phone rental subscription owned by the caller's organization.",
"operationId": "billing_get_rental_subscriptions",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Phone_rentalPhoneRentalSubscriptionListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List phone rentals",
"tags": [
"Billing"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/billing/subscription": {
"get": {
"description": "Returns the caller organization's current plan.",
"operationId": "billing_get_subscription",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubscriptionSubscriptionResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get current plan",
"tags": [
"Billing"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/organizations": {
"get": {
"description": "Returns every organization the caller is a member of.",
"operationId": "organizations_list",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationOrganizationListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "List organizations",
"tags": [
"Organizations"
]
}
},
"/organizations/{org_id}": {
"get": {
"description": "Returns a single organization the caller is a member of.",
"operationId": "organizations_get",
"parameters": [
{
"description": "organization identifier",
"in": "path",
"name": "org_id",
"required": true,
"schema": {
"description": "organization identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationOrganizationResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "Get an organization",
"tags": [
"Organizations"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/organizations/{org_id}/invitations": {
"get": {
"description": "Returns every outstanding invitation for the organization.",
"operationId": "organizations_list_invitations",
"parameters": [
{
"description": "organization identifier",
"in": "path",
"name": "org_id",
"required": true,
"schema": {
"description": "organization identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationInvitationListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "List pending invitations",
"tags": [
"Organizations"
],
"x-required-role": "admin",
"x-mint": {
"content": "Minimum role required: Admin"
}
}
},
"/organizations/{org_id}/members": {
"get": {
"description": "Returns every member of the organization with their role and email.",
"operationId": "organizations_list_members",
"parameters": [
{
"description": "organization identifier",
"in": "path",
"name": "org_id",
"required": true,
"schema": {
"description": "organization identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationOrganizationMemberListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "List members",
"tags": [
"Organizations"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/allocate": {
"post": {
"description": "Allocates a phone to a workflow from the editor. If allocation setup fails it is rolled back so the user can't be billed for a session that never starts.",
"operationId": "phones_allocate",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneAllocatePhoneRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneAllocatePhoneResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Allocate a phone",
"tags": [
"Phones"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/phones/available": {
"get": {
"description": "Returns ACTIVE unallocated phones the caller's org can claim, optionally filtered by phone type (iphone/android). Counts by type are included alongside the list.",
"operationId": "phones_available",
"parameters": [
{
"description": "filter by device type (iphone/android)",
"explode": false,
"in": "query",
"name": "device_type",
"schema": {
"description": "filter by device type (iphone/android)",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneAvailablePhonesResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List available phones",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/device-apps/supported": {
"get": {
"description": "Returns the apps the platform supports orchestration for, optionally filtered by platform + category. Platform admins see internal/unreleased apps too.",
"operationId": "phones_supported_apps",
"parameters": [
{
"description": "filter by platform",
"explode": false,
"in": "query",
"name": "platform",
"schema": {
"description": "filter by platform",
"type": "string"
}
},
{
"description": "filter by app category",
"explode": false,
"in": "query",
"name": "category",
"schema": {
"description": "filter by app category",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneSupportedPhoneAppsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List supported apps",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/my": {
"get": {
"description": "Returns private and rented phones owned by the caller's org. include_expired=true keeps rentals past their rental_expires_at in the result so users can see what they used to own.",
"operationId": "phones_mine",
"parameters": [
{
"description": "include rented devices whose rental window has expired",
"explode": false,
"in": "query",
"name": "include_expired",
"schema": {
"description": "include rented devices whose rental window has expired",
"type": "boolean"
}
},
{
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"format": "int64",
"maximum": 500,
"minimum": 1,
"type": "integer"
}
},
{
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"format": "int64",
"minimum": 0,
"type": "integer"
}
},
{
"description": "free-text search across nickname, name, model, location",
"explode": false,
"in": "query",
"name": "search",
"schema": {
"description": "free-text search across nickname, name, model, location",
"type": "string"
}
},
{
"description": "filter by phone status (ACTIVE/INACTIVE/MAINTENANCE/SUSPENDED)",
"explode": false,
"in": "query",
"name": "status",
"schema": {
"description": "filter by phone status (ACTIVE/INACTIVE/MAINTENANCE/SUSPENDED)",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "filter by phone type (IPHONE/ANDROID)",
"explode": false,
"in": "query",
"name": "type",
"schema": {
"description": "filter by phone type (IPHONE/ANDROID)",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "only phones whose rental expires at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "rental_expires_after",
"schema": {
"description": "only phones whose rental expires at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only phones whose rental expires at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "rental_expires_before",
"schema": {
"description": "only phones whose rental expires at/before this RFC3339 time",
"type": "string"
}
},
{
"description": "only phones last seen at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "last_active_after",
"schema": {
"description": "only phones last seen at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only phones last seen at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "last_active_before",
"schema": {
"description": "only phones last seen at/before this RFC3339 time",
"type": "string"
}
},
{
"description": "sort column (created|rental_expires|last_active|status|type|location)",
"explode": false,
"in": "query",
"name": "sort",
"schema": {
"description": "sort column (created|rental_expires|last_active|status|type|location)",
"type": "string"
}
},
{
"description": "sort direction (asc|desc)",
"explode": false,
"in": "query",
"name": "order",
"schema": {
"description": "sort direction (asc|desc)",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhonePrivatePhonesResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List your phones",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/sessions": {
"get": {
"description": "Returns one page of the org's phone sessions for the Session Inspector table: active/unbilled sessions pinned on top, terminal history paginated beneath. Covers workflow runs and workflow-less interactive leases; each row links to a session. Filters: search, workflow_id, status.",
"operationId": "phones_list_sessions",
"parameters": [
{
"description": "max rows to return (default 50, max 100)",
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"description": "max rows to return (default 50, max 100)",
"format": "int64",
"type": "integer"
}
},
{
"description": "rows to skip for pagination",
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"description": "rows to skip for pagination",
"format": "int64",
"type": "integer"
}
},
{
"description": "case-insensitive match on phone/session/workflow",
"explode": false,
"in": "query",
"name": "search",
"schema": {
"description": "case-insensitive match on phone/session/workflow",
"type": "string"
}
},
{
"description": "only sessions for this workflow",
"explode": false,
"in": "query",
"name": "workflow_id",
"schema": {
"description": "only sessions for this workflow",
"type": "string"
}
},
{
"description": "filter by session status (ACTIVE/COMPLETED/CANCELLED/EXPIRED); repeatable",
"explode": false,
"in": "query",
"name": "status",
"schema": {
"description": "filter by session status (ACTIVE/COMPLETED/CANCELLED/EXPIRED); repeatable",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "filter by source: workflow and/or interactive; repeatable",
"explode": false,
"in": "query",
"name": "source",
"schema": {
"description": "filter by source: workflow and/or interactive; repeatable",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "filter by type: shared and/or dedicated; repeatable",
"explode": false,
"in": "query",
"name": "dedicated",
"schema": {
"description": "filter by type: shared and/or dedicated; repeatable",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "only sessions started at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "started_after",
"schema": {
"description": "only sessions started at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only sessions started at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "started_before",
"schema": {
"description": "only sessions started at/before this RFC3339 time",
"type": "string"
}
},
{
"description": "only sessions de-allocated at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "ended_after",
"schema": {
"description": "only sessions de-allocated at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only sessions de-allocated at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "ended_before",
"schema": {
"description": "only sessions de-allocated at/before this RFC3339 time",
"type": "string"
}
},
{
"description": "sort column: started|ended|status|duration (default started)",
"explode": false,
"in": "query",
"name": "sort",
"schema": {
"description": "sort column: started|ended|status|duration (default started)",
"type": "string"
}
},
{
"description": "sort direction: asc|desc (default desc)",
"explode": false,
"in": "query",
"name": "order",
"schema": {
"description": "sort direction: asc|desc (default desc)",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneSessionsListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List sessions",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/sessions/active": {
"get": {
"description": "Returns one page of the organization's currently-active phone sessions joined with phone + workflow display fields: in-flight runs, workflow-less interactive leases, and dedicated phones in use. Paginated via limit (default 25, max 100) + offset; the response total is the full active count. Powers the dashboard overview.",
"operationId": "phones_active_sessions",
"parameters": [
{
"description": "max rows to return (default 25, max 100)",
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"description": "max rows to return (default 25, max 100)",
"format": "int64",
"type": "integer"
}
},
{
"description": "rows to skip for pagination",
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"description": "rows to skip for pagination",
"format": "int64",
"type": "integer"
}
},
{
"description": "case-insensitive match on phone name/nickname/id, session id, or workflow name",
"explode": false,
"in": "query",
"name": "search",
"schema": {
"description": "case-insensitive match on phone name/nickname/id, session id, or workflow name",
"type": "string"
}
},
{
"description": "filter by ownership: 'dedicated' or 'shared'",
"explode": false,
"in": "query",
"name": "dedicated",
"schema": {
"description": "filter by ownership: 'dedicated' or 'shared'",
"type": "string"
}
},
{
"description": "filter by source: 'workflow' or 'interactive'",
"explode": false,
"in": "query",
"name": "source",
"schema": {
"description": "filter by source: 'workflow' or 'interactive'",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneActiveSessionsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List active sessions",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/sessions/{id}": {
"get": {
"description": "Returns one session for the Session Inspector: session lifecycle + phone display fields + workflow name (when tied to one) + an inlined presigned recording URL. Works for active and terminal sessions, and for workflow runs and workflow-less interactive leases. Org-scoped: another org's session reads as not found.",
"operationId": "phones_get_session",
"parameters": [
{
"description": "phone session id",
"in": "path",
"name": "id",
"required": true,
"schema": {
"description": "phone session id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneSessionDetailResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a session",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/sessions/{id}/recording": {
"get": {
"description": "Returns a short-lived URL for the session's screen recording, keyed on session_id \u2014 so it works for workflow runs and workflow-less interactive leases alike. Status is \"pending\" (no URL) when the recording hasn't finished uploading yet. Org-scoped: another org's session reads as not found.",
"operationId": "phones_session_recording",
"parameters": [
{
"description": "phone session id",
"in": "path",
"name": "id",
"required": true,
"schema": {
"description": "phone session id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneSessionRecordingResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a session recording",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/user/deallocate": {
"post": {
"description": "Deallocates a phone the caller's org currently holds. The session is billed and the phone is torn down asynchronously.",
"operationId": "phones_deallocate",
"parameters": [
{
"description": "device identifier to deallocate",
"explode": false,
"in": "query",
"name": "phone_id",
"required": true,
"schema": {
"description": "device identifier to deallocate",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneDeallocatePhoneResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Release a phone",
"tags": [
"Phones"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/phones/{phone_id}": {
"get": {
"description": "Returns a single phone by its identifier.",
"operationId": "phones_get",
"parameters": [
{
"description": "device identifier",
"in": "path",
"name": "phone_id",
"required": true,
"schema": {
"description": "device identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhonePhoneSummary"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a phone",
"tags": [
"Phones"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/phones/{phone_id}/nickname": {
"patch": {
"description": "Sets the human-readable display name on a private phone the caller's org owns. Returns the updated phone summary.",
"operationId": "phones_nickname",
"parameters": [
{
"description": "device identifier",
"in": "path",
"name": "phone_id",
"required": true,
"schema": {
"description": "device identifier",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneUpdateNicknameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhonePhoneSummary"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Rename a phone",
"tags": [
"Phones"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/phones/{phone_id}/wipe": {
"post": {
"description": "Requests an on-demand factory reset of a private phone the caller's org owns. Requires the phone to be ACTIVE and not currently allocated. Sets the phone to MAINTENANCE while the wipe is carried out.",
"operationId": "phones_wipe",
"parameters": [
{
"description": "device identifier",
"in": "path",
"name": "phone_id",
"required": true,
"schema": {
"description": "device identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneSuccessResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Wipe a phone",
"tags": [
"Phones"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/runs": {
"post": {
"description": "Returns paginated recent runs for the caller's org. Filters: workflow, search text, status, trigger; sort by any of the columns listed in RunSortField.",
"operationId": "runs_list",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunListRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List runs",
"tags": [
"Runs"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/runs/events": {
"post": {
"description": "Returns paginated run events for a session, filtered by session_id.",
"operationId": "runs_list_events",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunEventsRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunEventsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List run events",
"tags": [
"Runs"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/runs/history": {
"post": {
"description": "Returns paginated historic runs for the caller's user. Use POST /runs for recent (non-archived) runs.",
"operationId": "runs_list_historic",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunHistoricRunsRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunHistoricRunsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List run history",
"tags": [
"Runs"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/runs/stats/{workflowID}": {
"get": {
"description": "Returns total run count + success rate for the given workflow, scoped to the caller's user.",
"operationId": "runs_stats",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunStatsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get workflow stats",
"tags": [
"Runs"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/runs/user/{runID}": {
"get": {
"description": "Returns one run by ID, scoped to the caller's organization.",
"operationId": "runs_get",
"parameters": [
{
"description": "run identifier",
"in": "path",
"name": "runID",
"required": true,
"schema": {
"description": "run identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a run",
"tags": [
"Runs"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/runs/{runID}": {
"patch": {
"description": "Transitions a run to CANCELLED, scoped to the caller's org.",
"operationId": "runs_cancel",
"parameters": [
{
"description": "run identifier",
"in": "path",
"name": "runID",
"required": true,
"schema": {
"description": "run identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunSuccessResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Cancel a run",
"tags": [
"Runs"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/runs/{workflowID}": {
"post": {
"description": "Creates one or more runs against the given workflow and queues them for execution. Pre-flight checks: balance sufficient, concurrency limit, workflow exists. Runs that fail to queue are marked FAILED immediately so they stop counting toward the concurrency limit.",
"operationId": "runs_create",
"parameters": [
{
"description": "workflow to create runs for",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow to create runs for",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunCreateRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RunRunCreateResponse"
}
}
},
"description": "Created"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Start a run",
"tags": [
"Runs"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/usage/inferences": {
"post": {
"description": "Paginated, filterable list of inference calls (/infer + /locate) the caller's user was billed for. Filters: date range, endpoint, free-text search. Ordered by call time DESC.",
"operationId": "usage_list_inferences",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsageInferencesRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsageInferencesResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "List inference calls",
"tags": [
"Usage"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/usage/metrics": {
"get": {
"description": "Returns infrastructure cost and compute-minute summaries for the caller's user over a date range, plus per-bucket chart data. Granularity is hourly (\u226424h window) or daily. Use POST /usage/metrics if you need richer body params; this endpoint takes query params only.",
"operationId": "usage_get_metrics",
"parameters": [
{
"description": "start of reporting window (RFC3339)",
"explode": false,
"in": "query",
"name": "start_date",
"required": true,
"schema": {
"description": "start of reporting window (RFC3339)",
"format": "date-time",
"type": "string"
}
},
{
"description": "end of reporting window (RFC3339)",
"explode": false,
"in": "query",
"name": "end_date",
"required": true,
"schema": {
"description": "end of reporting window (RFC3339)",
"format": "date-time",
"type": "string"
}
},
{
"description": "bucket resolution",
"explode": false,
"in": "query",
"name": "granularity",
"schema": {
"default": "daily",
"description": "bucket resolution",
"enum": [
"hourly",
"daily"
],
"type": "string"
}
},
{
"description": "IANA timezone for bucketing periods (e.g., America/Los_Angeles)",
"explode": false,
"in": "query",
"name": "timezone",
"schema": {
"default": "UTC",
"description": "IANA timezone for bucketing periods (e.g., America/Los_Angeles)",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UsageUsageMetricsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "Get usage metrics",
"tags": [
"Usage"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
}
},
"/users/me": {
"get": {
"description": "Returns the authenticated user's profile (id, email, verified/admin flags, timestamps).",
"operationId": "user_get_me",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserUserResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
}
],
"summary": "Get your profile",
"tags": [
"User"
]
}
},
"/workflows": {
"get": {
"description": "Paginated list of workflows in the caller's org. Filters via query params: search, status, platform. Use POST /workflows/list for richer body-shaped queries with sort.",
"operationId": "workflows_list",
"parameters": [
{
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"format": "int64",
"maximum": 500,
"minimum": 1,
"type": "integer"
}
},
{
"explode": false,
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"format": "int64",
"minimum": 0,
"type": "integer"
}
},
{
"description": "free-text search across workflow name",
"explode": false,
"in": "query",
"name": "search",
"schema": {
"description": "free-text search across workflow name",
"type": "string"
}
},
{
"description": "filter by workflow status (lowercase)",
"explode": false,
"in": "query",
"name": "status",
"schema": {
"description": "filter by workflow status (lowercase)",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "filter by device platform (lowercase)",
"explode": false,
"in": "query",
"name": "platform",
"schema": {
"description": "filter by device platform (lowercase)",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
{
"description": "only workflows created at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "created_after",
"schema": {
"description": "only workflows created at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only workflows created at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "created_before",
"schema": {
"description": "only workflows created at/before this RFC3339 time",
"type": "string"
}
},
{
"description": "only workflows last run at/after this RFC3339 time",
"explode": false,
"in": "query",
"name": "last_run_after",
"schema": {
"description": "only workflows last run at/after this RFC3339 time",
"type": "string"
}
},
{
"description": "only workflows last run at/before this RFC3339 time",
"explode": false,
"in": "query",
"name": "last_run_before",
"schema": {
"description": "only workflows last run at/before this RFC3339 time",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowListResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List workflows",
"tags": [
"Workflows"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
},
"post": {
"description": "Creates a new workflow in the caller's org. Name must match ^[A-Za-z0-9_-]+$ and be unique within the org. Returns the workflow_id.",
"operationId": "workflows_create",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowCreateRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowCreateResponse"
}
}
},
"description": "Created"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Create a workflow",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/from-code": {
"post": {
"description": "Creates a workflow and its first code revision in a single transaction \u2014 the code playground's 'save as workflow'. Name must match ^[A-Za-z0-9_-]+$ and be unique within the org; platform defaults to ANDROID. Returns the workflow_id and revision_id.",
"operationId": "workflows_create_from_code",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowFromCodeRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowFromCodeResponse"
}
}
},
"description": "Created"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Create a workflow from code",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/{workflowID}": {
"delete": {
"description": "Deletes a workflow. Org-scoped \u2014 workflows in other orgs return 404.",
"operationId": "workflows_delete",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageOutputBody"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Delete a workflow",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
},
"get": {
"description": "Returns a single workflow, scoped to the caller's org (workflows in other orgs return 404).",
"operationId": "workflows_get",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a workflow",
"tags": [
"Workflows"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
},
"put": {
"description": "Applies a partial update (name, platform, status, ocr_engine). Org-scoped \u2014 workflows in other orgs return 404.",
"operationId": "workflows_update",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowUpdateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowWorkflowResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Update a workflow",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/{workflowID}/code": {
"get": {
"description": "Returns the source code of the workflow's current revision, scoped to the caller's org.",
"operationId": "workflows_get_code",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowGetCodeResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get current workflow code",
"tags": [
"Workflows"
],
"x-required-role": "viewer",
"x-mint": {
"content": "Minimum role required: Viewer"
}
},
"post": {
"description": "Persists a new revision of the workflow's code. Hash-deduplicates against the current revision (no-op if unchanged). Source is capped at 256KB.",
"operationId": "workflows_save_code",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowSaveCodeRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowSaveCodeResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Save workflow code",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/{workflowID}/code/restore": {
"post": {
"description": "Creates a new revision with the source of the named revision. Does NOT dedup against the current revision so the action is auditable in the revision history.",
"operationId": "workflows_restore_revision",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowRestoreRevisionRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowSaveCodeResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Restore a workflow revision",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/{workflowID}/revisions": {
"get": {
"description": "Returns revision metadata (id, number, author, message, bytes, sha256, created_at) for the workflow, in reverse-chronological order. Use the `before` cursor to paginate older revisions.",
"operationId": "workflows_list_revisions",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
},
{
"explode": false,
"in": "query",
"name": "limit",
"schema": {
"default": 50,
"format": "int64",
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
{
"description": "cursor: return revisions older than this revision number",
"explode": false,
"in": "query",
"name": "before",
"schema": {
"default": 0,
"description": "cursor: return revisions older than this revision number",
"format": "int64",
"minimum": 0,
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowListRevisionsResponse"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "List workflow revisions",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
},
"/workflows/{workflowID}/revisions/{revisionID}": {
"get": {
"description": "Returns a single revision including its full source. Defense-in-depth: the revision must belong to the named workflow or it's treated as missing.",
"operationId": "workflows_get_revision",
"parameters": [
{
"description": "workflow identifier",
"in": "path",
"name": "workflowID",
"required": true,
"schema": {
"description": "workflow identifier",
"type": "string"
}
},
{
"description": "revision identifier",
"in": "path",
"name": "revisionID",
"required": true,
"schema": {
"description": "revision identifier",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowRevisionDetail"
}
}
},
"description": "OK"
},
"default": {
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/V2ErrorModel"
}
}
},
"description": "Error"
}
},
"security": [
{
"bearerAuth": []
},
{
"apiKeyAuth": []
}
],
"summary": "Get a workflow revision",
"tags": [
"Workflows"
],
"x-required-role": "member",
"x-mint": {
"content": "Minimum role required: Member"
}
}
}
},
"servers": [
{
"url": "https://api.axilio.ai/api/v1",
"description": "Production"
}
],
"tags": [
{
"name": "API Keys"
},
{
"name": "Billing"
},
{
"name": "Organizations"
},
{
"name": "Phones"
},
{
"name": "Runs"
},
{
"name": "Usage"
},
{
"name": "User"
},
{
"name": "Workflows"
}
]
}