# Create Image Annotation Task — Scale AI

> Create an image annotation task. See the documentation

- Key: `scale_ai-create-image-annotation-task`
- Type: Action (Write)
- Version: 0.0.3
- App: Scale AI (`scale_ai`) — https://pipedream.com/apps/scale-ai.md
- This page (HTML): https://pipedream.com/apps/scale-ai/actions/create-image-annotation-task
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/scale_ai/actions/create-image-annotation-task/create-image-annotation-task.mjs

## Description

Create an image annotation task. [See the documentation](https://docs.scale.com/reference/general-image-annotation)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `project` | `string` | No | The name of the project to associate this task with. Options are loaded from the connected account. |
| `batch` | `string` | No | The name of the batch to associate this task with. Note that if a batch is specified, you need not specify the project, as the task will automatically be associated with the batch's project. For Scale Rapid projects specifying a batch is required. See Batches section for more details. |
| `instruction` | `string` | No | A markdown-enabled string or iframe embedded Google Doc explaining how to do the task. You can use markdown to show example images, give structure to your instructions, and more. See our instruction best practices for more details. For Scale Rapid projects, DO NOT set this field unless you specifically want to override the project level instructions. |
| `callbackUrl` | `string` | No | The full url (including the scheme http:// or https://) or email address of the callback that will be used when the task is completed. |
| `attachment` | `string` | Yes | A URL to the image you'd like to be annotated. |
| `contextAttachments` | `string[]` | No | An array of strings with links to actual attachments (A URI pointing to an attachment that provides additional context. Will be shown to the user below the main attachment, and can be made full screen.) to show to taskers as a reference. Context images themselves can not be labeled. Context images will appear like this in the UI. You cannot use the task's attachment url as a context attachment's url. |
| `box` | `string` | No | Parameters for box geometries. See Boxes for details about the parameter and response fields. Eg. {"min_height": 10, "min_width": 10, "can_rotate": true, "integer_pixels": true, "objects_to_annotate": ["car", "truck"]} |
| `polygon` | `string` | No | Parameters for polygon geometries. See Polygons for details about the parameter and response fields. Eg. {"min_vertices": 3, "max_vertices": 5, "objects_to_annotate": ["car", "truck"]} |
| `line` | `string` | No | Parameters for line geometries. See Lines for details about the parameter and response fields. Eg. {"min_vertices": 2, "max_vertices": 4, "objects_to_annotate": ["car", "truck"]} |
| `point` | `string` | No | Parameters for point geometries. See Points for details about the parameter and response fields. Eg. {"objects_to_annotate": ["car", "truck"]} |
| `cuboid` | `string` | No | Parameters for cuboid geometries. See Cuboids for details about the parameter and response fields. Eg. {"min_height": 10, "min_width": 10, "camera_intrinsics": {"fx": 100, "fy": 100, "cx": 100, "cy": 100, "skew": 0, "scalefactor": 1}, "camera_rotation_quaternion": {"w": 1, "x": 0, "y": 0, "z": 0}, "camera_height": 100, "objects_to_annotate": ["car", "truck"]} |
| `ellipse` | `string` | No | Parameters for ellipse geometries. See Ellipse for details about the parameter and response fields. Eg. {"objects_to_annotate": ["car", "truck"]} |
| `padding` | `integer` | No | The amount of padding in pixels added to the top, bottom, left, and right of the image. This allows labelers to extend annotations outside of the image. When using padding, annotation coordinates can be a negative value or greater than the width/height of the image. See visual example. |
| `baseAnnotations` | `object` | No | Editable annotations, with the option to be locked, that a task should be initialized with. This is useful when you've run a model to prelabel the task and want annotators to refine those prelabels. Must contain the annotations field, which has the same format as the annotations field in the response. |
| `canAddBaseAnnotations` | `boolean` | No | Whether or not the tasker can add base annotations. |
| `canEditBaseAnnotations` | `boolean` | No | Whether or not the tasker can edit base annotations. |
| `canEditBaseAnnotationLabels` | `boolean` | No | Whether or not the tasker can edit base annotation labels. |
| `canDeleteBaseAnnotations` | `boolean` | No | Whether or not base_annotations can be removed from the task. If set to true, base_annotations can be deleted from the task. If set to false, base_annotations cannot be deleted from the task. |
| `paddingX` | `integer` | No | The amount of padding in pixels added to the left and right of the image. Overrides Padding if set. |
| `paddingY` | `integer` | No | The amount of padding in pixels added to the top and bottom of the image. Overrides Padding if set. |
| `priority` | `integer` | No | A value of 10, 20, or 30 that defines the priority of a task within a project. The higher the number, the higher the priority. |
| `uniqueId` | `string` | No | A arbitrary ID that you can assign to a task and then query for later. This ID must be unique across all projects under your account, otherwise the task submission will be rejected. See Avoiding Duplicate Tasks for more details. |
| `clearUniqueIdOnError` | `boolean` | No | If set to be true, if a task errors out after being submitted, the Unique ID on the task will be unset. This param allows workflows where you can re-submit the same unique id to recover from errors automatically. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "scale_ai",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "scale_ai-create-image-annotation-task",
  arguments: {
    project: "Project",
    batch: "Batch",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "scale_ai-create-image-annotation-task",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    scale_ai: { authProvisionId: "apn_xxxxxxx" },
    project: "Project",
    batch: "Batch",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "scale_ai-create-image-annotation-task",
    "configured_props": {
      "scale_ai": { "authProvisionId": "apn_xxxxxxx" },
      "project": "Project",
      "batch": "Batch"
    }
  }'
```

---

- App: https://pipedream.com/apps/scale-ai.md · All apps: https://pipedream.com/apps
