---
title: "Build the noun-imagery library, or draw one noun again."
method: POST
path: "/artifacts/{artifactId}/noun-imagery"
tags: ["Artifacts"]
---

# Build the noun-imagery library, or draw one noun again.

`POST /artifacts/{artifactId}/noun-imagery`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/artifacts/{artifactId}/noun-imagery`
- Auth: HTTP bearer

With no body (or `{ force: true }` to draw every noun again), finds the depictable nouns on every spoken line and draws one image per noun, reused on every later mention. With `noun`, draws that one noun again. Queued: poll GET until each noun is `ready`. While the project's gate is closed it is refused with 409 `project_precondition_failed` before the job is queued. Requires `Idempotency-Key`. Scope: `artifact:publish`.

## Headers

- `Idempotency-Key` string, required

## Request body

- TableReadNounImageryRequest: Empty (or `force: true` to draw every noun again) builds the library; `noun` draws one noun again.
  - `force` boolean
  - `noun` object
    - `normalizedNoun` string, required
    - `displayLabel` string
    - `kind` 'object' | 'location' | 'entity': What the noun is (it decides the framing). Default object.

## Response `200`

The queued job.

- TableReadNounImageryQueued
  - `artifactId` string, required
  - `status` 'queued', required
  - `chatToolJobId` string, required
  - `force` boolean: Present when the library was queued.
  - `normalizedNoun` string: Present when one noun was queued.

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The story artifact does not exist or is owned by another account.
- `409`: The artifact is not in a state where this operation is valid yet (e.g. requesting an MP4 render before the share link exists).
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
