---
title: "Check prompt optimization status"
method: GET
path: "/v2/prompt/optimizeStatus/{optimization_run_id}"
tags: ["Prompt Optimization"]
---

# Check prompt optimization status

`GET /v2/prompt/optimizeStatus/{optimization_run_id}`

Check the status of a prompt optimization run.

Use this endpoint to poll the status of your optimization request. Processing is asynchronous,
so you'll need to check periodically until the status indicates completion.

**Status Values:**
- `created`: Initial state, not yet processing
- `queued`: Waiting for processing capacity (check queue_position)
- `processing`: Currently optimizing prompts
- `completed`: All target models have been processed successfully
- `failed`: One or more target models failed to process

**Polling Recommendations:**
- Poll every 30-60 seconds during processing
- Check queue_position if status is 'queued' to estimate wait time
- Stop polling once status is 'completed' or 'failed'
- Use GET /v2/prompt/optimizeResults to retrieve results after completion

**Queue Position:**
- Only present when status is 'queued'
- Lower numbers mean earlier processing (position 1 is next)
- Typical wait time: 1-5 minutes per position

**Note:** This endpoint only returns status information. To get the actual optimized prompts
and evaluation results, use GET /v2/prompt/optimizeResults once status is 'completed'.

## Path parameters

- `optimization_run_id` string, required

## Response `200`

Successfully retrieved optimization status

- PromptAdaptationStatusResponse — Response model for GET /v2/prompt/optimizeStatus/{optimization_run_id} endpoint. Returns the current status of an asynchronous prompt optimization job. Poll this endpoint periodically to track progress. When status is 'completed', you can retrieve the optimized prompts using the /optimizeResults endpoint. **Status values:** - **created**: Job has been initialized - **queued**: Waiting in queue (check queue_position for your place in line) - **processing**: Currently running optimization - **completed**: Finished successfully, results available via /optimizeResults - **failed**: Encountered an error during processing **Polling recommendations:** - Poll every 30-60 seconds while status is incomplete - Stop polling once status is 'completed' or 'failed' - Optimization typically takes 10-30 minutes total
  - `optimization_run_id` string, required — Unique identifier for this optimization run. Use this to poll status and retrieve optimized prompts when complete
  - `status` 'created' | 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled', required — Status enum for asynchronous jobs (prompt adaptation, custom router training, etc.). Represents the current state of a long-running operation: - **created**: Job has been initialized but not yet queued - **queued**: Job is waiting in the queue to be processed - **processing**: Job is currently being executed - **completed**: Job finished successfully and results are available - **failed**: Job encountered an error and did not complete - **cancelled**: Job was cancelled due to a restart operation
  - `queue_position` integer, nullable — Position in queue when status is 'queued'. Lower numbers process sooner. Null when not queued

## Other responses

- `401` — Authentication failed or no prompt optimization access
- `404` — Optimization run ID not found
- `422` — Validation Error

---

[API](https://skmtc.net/not-diamond/apis/not-diamond-api.md) · [All operations](https://skmtc.net/not-diamond/apis/not-diamond-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/not-diamond/not-diamond-api/versions/ea8fcb544470/schema)
