Skip to content

List project findings

GET
/api/v1/org/{org}/ws/{workspace}/airt/projects/{project}/findings
curl --request GET \
--url 'https://example.com/api/v1/org/example/ws/example/airt/projects/example/findings?sort_by=created_at&sort_dir=desc&page=1&page_size=50' \
--header 'Authorization: Bearer <token>'

Paginated, filterable findings across all assessments in a project

org
required
Org

Organization slug

string

Organization slug

workspace
required
Workspace

Workspace slug

string

Workspace slug

project
required
Project

Project slug or UUID

string

Project slug or UUID

assessment_id
Any of:
string format: uuid

Scope findings to a single assessment in this project

severity
Any of:
string

Filter by severity (comma-separated: critical,high)

category
Any of:
string

Filter by goal category (comma-separated for multiple)

attack_name
Any of:
string

Filter by attack name (comma-separated for multiple)

min_score
Any of:
number

Minimum score threshold

finding_type
Any of:
string

Filter by finding type (comma-separated: jailbreak,partial,refusal,error)

search
Any of:
string

Full-text search across goal, attack name, prompts, responses

sort_by
Sort By

Sort field (default created_at = newest first): score, created_at, updated_at, severity, attack_name, category, date (alias for created_at)

string
default: created_at

Sort field (default created_at = newest first): score, created_at, updated_at, severity, attack_name, category, date (alias for created_at)

sort_dir
Sort Dir

Sort direction: asc, desc

string
default: desc

Sort direction: asc, desc

created_after
Any of:
string format: date-time

Only findings created at or after this ISO-8601 timestamp

created_before
Any of:
string format: date-time

Only findings created at or before this ISO-8601 timestamp

updated_after
Any of:
string format: date-time

Only findings updated at or after this ISO-8601 timestamp

updated_before
Any of:
string format: date-time

Only findings updated at or before this ISO-8601 timestamp

page
Page

Page number

integer
default: 1 >= 1

Page number

page_size
Page Size

Items per page

integer
default: 50 >= 1 <= 100

Items per page

Successful Response

Media type application/json
ProjectFindingsResponse

Paginated findings list for a project.

object
findings
required
Findings
Array<object>
FindingDetail

Single finding (attack run) with full detail for paginated listings.

object
adversarial_class
Any of:
string
assessment_id
required
Assessment Id
string format: uuid
assessment_name
Any of:
string
attack_domain
Any of:
string
attack_name
required
Attack Name
string
attacker_model
Any of:
string
best_candidate
Any of:
string
best_candidate_parts
Any of:
Array<object>
MessagePart

One ordered part of a multimodal message (input candidate or output response).

object
caption
Any of:
string
kind
required
Kind
string
source
Any of:
MediaSource

Reference to media bytes for a multimodal message part.

Discriminated by ref so the shape round-trips faithfully across providers: artifact (our content-addressed store, resolved to a presigned inline URL), url (rendered directly from source), or file_id (provider file handle). Bytes are never inlined here — only a reference plus MIME/size metadata.

object
artifact_oid
Any of:
string
byte_size
Any of:
integer
detail
Any of:
string
file_id
Any of:
string
filename
Any of:
string
media_type
Any of:
string
ref
Ref
string
default: artifact
url
Any of:
string
text
Any of:
string
transform
Any of:
string
variant
Any of:
string
best_judge_reasoning
Any of:
string
best_modality_scores
Any of:
object
key
additional properties
number
best_response
Any of:
string
best_response_parts
Any of:
Array<object>
MessagePart

One ordered part of a multimodal message (input candidate or output response).

object
caption
Any of:
string
kind
required
Kind
string
source
Any of:
MediaSource

Reference to media bytes for a multimodal message part.

Discriminated by ref so the shape round-trips faithfully across providers: artifact (our content-addressed store, resolved to a presigned inline URL), url (rendered directly from source), or file_id (provider file handle). Bytes are never inlined here — only a reference plus MIME/size metadata.

object
artifact_oid
Any of:
string
byte_size
Any of:
integer
detail
Any of:
string
file_id
Any of:
string
filename
Any of:
string
media_type
Any of:
string
ref
Ref
string
default: artifact
url
Any of:
string
text
Any of:
string
transform
Any of:
string
variant
Any of:
string
best_score
required
Any of:
number
best_transformed_prompt
Any of:
string
category
Any of:
string
completed_at
required
Any of:
string format: date-time
compliance_tags
required
Any of:
object
key
additional properties
any
created_at
required
Created At
string format: date-time
distance_norm
Any of:
string
distance_value
Any of:
number
evaluator_model
Any of:
string
execution_time_s
required
Any of:
number
finding_status
Finding Status
string
default: open
finding_type
Finding Type
string
default: jailbreak
finished_trials
required
Finished Trials
integer
goal
required
Goal
string
goal_category
required
Any of:
string
id
required
Id
string format: uuid
input_modality
Any of:
string
is_jailbreak
Is Jailbreak
boolean
notes
Any of:
string
original_class
Any of:
string
original_severity
Any of:
string
pass_rate
Any of:
number
review_events
Review Events
Array<object>
default:
FindingReviewEvent

One operator review edit, recorded append-only on the finding.

Captures the human override (vs. the LLM judge): what changed (type / severity / status before→after), the reasoning, and who/when.

object
original_finding_type
Any of:
string
original_severity
Any of:
string
original_status
Any of:
string
reasoning
Any of:
string
updated_at
Any of:
string format: date-time
updated_by
Any of:
string
updated_finding_type
Any of:
string
updated_severity
Any of:
string
updated_status
Any of:
string
risk_domain
Any of:
string
severity
required
Severity
string
span_id
Any of:
string
status
required
Status
string
Allowed values: pending running completed failed
sub_category
Any of:
string
target_model
Any of:
string
top_trials
Top Trials
Array<object>
default:
TrialEvidence

Single trial within a finding’s top-N results.

object
candidate
Candidate
string
""
candidate_parts
Any of:
Array<object>
MessagePart

One ordered part of a multimodal message (input candidate or output response).

object
caption
Any of:
string
kind
required
Kind
string
source
Any of:
MediaSource

Reference to media bytes for a multimodal message part.

Discriminated by ref so the shape round-trips faithfully across providers: artifact (our content-addressed store, resolved to a presigned inline URL), url (rendered directly from source), or file_id (provider file handle). Bytes are never inlined here — only a reference plus MIME/size metadata.

object
artifact_oid
Any of:
string
byte_size
Any of:
integer
detail
Any of:
string
file_id
Any of:
string
filename
Any of:
string
media_type
Any of:
string
ref
Ref
string
default: artifact
url
Any of:
string
text
Any of:
string
transform
Any of:
string
variant
Any of:
string
execution_time_s
Execution Time S
number
0
is_jailbreak
Is Jailbreak
boolean
judge_reasoning
Judge Reasoning
string
""
modality_scores
Any of:
object
key
additional properties
number
rank
required
Rank
integer
response
Response
string
""
response_parts
Any of:
Array<object>
MessagePart

One ordered part of a multimodal message (input candidate or output response).

object
caption
Any of:
string
kind
required
Kind
string
source
Any of:
MediaSource

Reference to media bytes for a multimodal message part.

Discriminated by ref so the shape round-trips faithfully across providers: artifact (our content-addressed store, resolved to a presigned inline URL), url (rendered directly from source), or file_id (provider file handle). Bytes are never inlined here — only a reference plus MIME/size metadata.

object
artifact_oid
Any of:
string
byte_size
Any of:
integer
detail
Any of:
string
file_id
Any of:
string
filename
Any of:
string
media_type
Any of:
string
ref
Ref
string
default: artifact
url
Any of:
string
text
Any of:
string
transform
Any of:
string
variant
Any of:
string
score
Score
number
0
span_id
Span Id
string
""
transformed_prompt
Transformed Prompt
string
""
trial_index
Trial Index
integer
0
trial_status
Trial Status
string
""
total_trials
required
Total Trials
integer
trace_id
Any of:
string
transforms_applied
required
Any of:
Array<string>
updated_at
Any of:
string format: date-time
page
required
Page
integer
page_size
required
Page Size
integer
total
required
Total
integer
total_pages
required
Total Pages
integer
Example
{
"findings": [
{
"best_candidate_parts": [
{
"source": {
"ref": "artifact"
}
}
],
"best_response_parts": [
{
"source": {
"ref": "artifact"
}
}
],
"finding_status": "open",
"finding_type": "jailbreak",
"is_jailbreak": false,
"review_events": [],
"status": "pending",
"top_trials": []
}
]
}

Invalid request

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Authentication failed

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Access forbidden

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Not found

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Already exists

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Validation error

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Upgrade required

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Rate limited

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Internal server error

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Bad gateway

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}

Gateway timeout

Media type application/json
APIErrorPayload

Canonical API error envelope returned by the API.

object
code
required
Code

HTTP status code

integer
Allowed values: 400 401 403 404 409 422 426 429 500 502 504
detail
required
Detail

Human-readable error message

string
errors
Any of:
Array<object>
ValidationErrorItem
object
loc
required
Loc

Where the validation error occurred

Array
msg
required
Msg

Human-readable validation message

string
type
required
Type

Machine-readable validation error type

string
type
required
Type

Stable machine-readable error type

string
Allowed values: already_exists_error app_error authentication_error conflict_error aws_error configuration_error database_error dynamodb_error e2b_error e2b_rate_limit_error expired_signature_error expired_token_error forbidden_error group_error invalid_error invalid_flag_error invalid_username_error mail_error member_exists_error member_limit_exceeded_error migration_lock_timeout_error not_found_error oauth_config_error org_sandbox_capacity_exceeded_error bad_gateway_error gateway_timeout_error s3_error server_error task_error stripe_error task_set_not_found token_error upgrade_required_error usage_limit_exceeded_error user_suspended user_verification_error validation_error
Example
{
"code": 401,
"detail": "Authentication failed",
"type": "authentication_error"
}