---
title: "Create an assignment"
method: POST
path: "/assignment"
tags: ["Assignments"]
---

# Create an assignment

`POST /assignment`

Creates a new assignment.

## Headers

- `Accept` 'application/vnd.Creative Force.v2.3+json' | 'application/vnd.Creative Force.v2.3+xml', required
- `x-api-language` string[]

## Request body

- object — Inputs for creating assignments in bulk. One assignment is created for each pairing of an entry from `entries` with a judge from `judges` under `score_set`, and every resulting assignment is linked to all rounds listed in `rounds`. Existing assignments for the same entry, judge, and score set are updated in place rather than duplicated.
  - `score_set` string, required — Slug of the score set to assign under. Its current season must be either active or draft. Entries and rounds must belong to the same form as this score set.
  - `entries` string[], required — Slugs of the entries to include. Each entry must belong to the same form as `score_set`.
  - `judges` string[], required — Slugs of the users to assign as judges. Each user must hold the Judge role for the account.
  - `rounds` string[], required — Slugs of the judging rounds to link the assignments to. Each round must be a judging round on the same form as `score_set`.

## Response `202`

Assignment creation accepted.

The response body is empty. Created assignments become available via `GET /assignment` once processing completes.

## Other responses

- `400` — Request was rejected before the endpoint could process it. Common causes: invalid `Accept` header, unsupported `x-api-language` code, empty request body on `POST` / `PUT`, invalid JSON in the request body, or an invalid slug format in a path parameter.
- `401` — Missing `x-api-key` header.
- `403` — Authenticated request denied. Common causes: invalid or unknown API key, suspended account, or `api` feature not enabled for the account.
- `422` — Request was syntactically valid but could not be processed. Returned in two scenarios: - **Field-level validation failure** — one or more request fields violated the endpoint's validation rules. The body includes an `errors` map keyed by field name with one or more validation messages each. - **Resource-state precondition failure** — the request fields were all valid, but the target resource was in a state that does not permit the requested operation. The body carries only `message` and `status_code`; no `errors` map.
- `429` — Rate limit of 60 requests per minute exceeded.
- `503` — Service is temporarily unavailable due to regional maintenance.

## Changes

- **2026-07-07** (v2) `9b9103538ceb` — 2 info
  - api tag `Assignments` added
  - api tag `Assignment` removed
- **2026-07-01** (v2) `e96a96d4507e` — 6 info
  - added the media type `application/xml` for the response with the status `400`
  - added the media type `application/xml` for the response with the status `401`
  - added the media type `application/xml` for the response with the status `403`
  - added the media type `application/xml` for the response with the status `422`
  - …2 more

[Change history](https://skmtc.dev/tectonic/apis/award-force-api/changes/assignment/post.md)

---

[API](https://skmtc.dev/tectonic/apis/award-force-api.md) · [All operations](https://skmtc.dev/tectonic/apis/award-force-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tectonic/award-force-api/revisions/e2511e46f9f2/schema)
