# Manage Annotation Workflow

You can list annotation batches, inspect batch details, and create annotation jobs from the command line.

## Annotation Batches

### List Batches

```bash
roboflow annotation batch list -p my-project
```

With JSON output:

```bash
roboflow annotation batch list -p my-project --json
```

### Get Batch Details

```bash
roboflow annotation batch get <batch-id> -p my-project
```

```bash
roboflow annotation batch get <batch-id> -p my-project --json
```

## Annotation Jobs

### List Jobs

```bash
roboflow annotation job list -p my-project
```

```bash
roboflow annotation job list -p my-project --json
```

### Get Job Details

```bash
roboflow annotation job get <job-id> -p my-project
```

```bash
roboflow annotation job get <job-id> -p my-project --json
```

### Create a Job

```bash
roboflow annotation job create -p my-project \
  --name "Label round 1" \
  --batch <batch-id> \
  --num-images 100 \
  --labeler labeler@company.com \
  --reviewer reviewer@company.com
```

#### Options

| Flag              | Description                             |
| ----------------- | --------------------------------------- |
| `-p`, `--project` | Project ID (required)                   |
| `--name`          | Job name (required)                     |
| `--batch`         | Batch ID to draw images from (required) |
| `--num-images`    | Number of images to include (required)  |
| `--labeler`       | Labeler email address (required)        |
| `--reviewer`      | Reviewer email address (required)       |

## JSON Output

All annotation commands support `--json` for structured output:

```bash
roboflow annotation batch list -p my-project --json | jq '.[].id'
roboflow annotation job create -p my-project --name "Job" \
  --batch abc --num-images 50 --labeler a@co.com --reviewer b@co.com --json
```

Exit codes: 0 = success, 1 = error, 2 = auth error, 3 = not found.
