Skip to main content

Sequence-Scoped Methods

client.annotation_issues.list_by_sequence()

List all annotation issues for a specific sequence.
sequence_uid
str
required
Unique identifier of the sequence
dataset_item_uid
str
Filter by dataset item UID
project_uid
str
Filter by project UID
response
List[AnnotationIssue]
List of annotation issues for the sequence
from avala import Avala

client = Avala(api_key="your-api-key")

issues = client.annotation_issues.list_by_sequence(
    sequence_uid="seq-123",
    project_uid="proj-456"
)
for issue in issues:
    print(f"{issue.uid}: {issue.description}")

client.annotation_issues.create()

Create a new annotation issue for a sequence.
sequence_uid
str
required
Unique identifier of the sequence
tool_uid
str
required
UID of the annotation tool associated with the issue
problem_uid
str
required
UID identifying the type of problem
dataset_item_uid
str
Dataset item where the issue occurs
project_uid
str
Project context for the issue
priority
str
Issue priority level
severity
str
Issue severity level
description
str
Detailed description of the issue
wrong_class
str
Incorrect class label
correct_class
str
Correct class label
should_re_annotate
bool
Whether the annotation should be redone
should_delete
bool
Whether the annotation should be deleted
frames_affected
str
Description of which frames are affected
coordinates
Any
Spatial coordinates related to the issue
query_params
Dict[str, Any]
Additional query parameters
object_uid
str
UID of the object related to the issue
response
AnnotationIssue
The newly created annotation issue
issue = client.annotation_issues.create(
    sequence_uid="seq-123",
    tool_uid="tool-456",
    problem_uid="problem-789",
    priority="high",
    severity="critical",
    description="Incorrect bounding box placement",
    wrong_class="car",
    correct_class="truck",
    should_re_annotate=True
)

client.annotation_issues.update()

Update an existing annotation issue.
sequence_uid
str
required
Unique identifier of the sequence
issue_uid
str
required
Unique identifier of the annotation issue
status
str
Updated status of the issue
priority
str
Updated priority level
severity
str
Updated severity level
description
str
Updated description
tool_uid
str
Updated tool UID
problem_uid
str
Updated problem UID
wrong_class
str
Updated wrong class label
frames_affected
str
Updated frames affected description
response
AnnotationIssue
The updated annotation issue
updated_issue = client.annotation_issues.update(
    sequence_uid="seq-123",
    issue_uid="issue-789",
    status="resolved",
    priority="low"
)

client.annotation_issues.delete()

Delete an annotation issue.
sequence_uid
str
required
Unique identifier of the sequence
issue_uid
str
required
Unique identifier of the annotation issue to delete
client.annotation_issues.delete(
    sequence_uid="seq-123",
    issue_uid="issue-789"
)

Dataset-Scoped Methods

client.annotation_issues.list_by_dataset()

List all annotation issues for a dataset.
owner
str
required
Username or organization slug
dataset_slug
str
required
Dataset identifier slug
sequence_uid
str
Filter by sequence UID
response
List[AnnotationIssue]
List of annotation issues for the dataset
issues = client.annotation_issues.list_by_dataset(
    owner="username",
    dataset_slug="my-dataset",
    sequence_uid="seq-123"
)

client.annotation_issues.get_metrics()

Retrieve annotation issue metrics for a dataset.
owner
str
required
Username or organization slug
dataset_slug
str
required
Dataset identifier slug
sequence_uid
str
Filter metrics by sequence UID
response
AnnotationIssueMetrics
Metrics summary for annotation issues
metrics = client.annotation_issues.get_metrics(
    owner="username",
    dataset_slug="my-dataset"
)
print(f"Total issues: {metrics.total_count}")

Tool Methods

client.annotation_issues.list_tools()

List available annotation quality control tools for a dataset type.
dataset_type
str
required
Type of dataset (e.g., “image”, “video”, “lidar”)
response
List[AnnotationIssueToolDetail]
List of available QC tools with their problem types
tools = client.annotation_issues.list_tools(
    dataset_type="image"
)
for tool in tools:
    print(f"{tool.name}: {tool.description}")
    for problem in tool.problems:
        print(f"  - {problem.name}")

Async Methods

All methods are available in async form via client.annotation_issues when using AsyncAvala:
from avala import AsyncAvala

async with AsyncAvala(api_key="your-api-key") as client:
    # Sequence-scoped
    issues = await client.annotation_issues.list_by_sequence(
        sequence_uid="seq-123"
    )
    
    issue = await client.annotation_issues.create(
        sequence_uid="seq-123",
        tool_uid="tool-456",
        problem_uid="problem-789",
        description="Issue description"
    )
    
    updated = await client.annotation_issues.update(
        sequence_uid="seq-123",
        issue_uid="issue-789",
        status="resolved"
    )
    
    await client.annotation_issues.delete(
        sequence_uid="seq-123",
        issue_uid="issue-789"
    )
    
    # Dataset-scoped
    dataset_issues = await client.annotation_issues.list_by_dataset(
        owner="username",
        dataset_slug="my-dataset"
    )
    
    metrics = await client.annotation_issues.get_metrics(
        owner="username",
        dataset_slug="my-dataset"
    )
    
    # Tools
    tools = await client.annotation_issues.list_tools(
        dataset_type="image"
    )

Build docs developers (and LLMs) love