---
title: "Get Optimization With Job"
method: GET
path: "/optimize/{id}"
tags: ["optimization"]
deprecated: true
---

# Get Optimization With Job

`GET /optimize/{id}`

## Request

- Base URL: `https://api.ionworks.com`
- URL: `https://api.ionworks.com/optimize/{id}`
- Auth: none declared

> **Deprecated.**

Get an optimization and its linked job by optimization id or job_id.

## Path parameters

- `id` string, uuid, required

## Response `200`

Successful Response

- OptimizationWithJobResponse: Single optimization and its linked job (for get-one responses).
  - `optimization` Optimization, required: Pydantic model for the ``optimizations`` table.
    - `id` string, required
    - `name` string, nullable
    - `description` string, nullable
    - `job_id` string, required
    - `project_id` string, required
    - `user_id` string, nullable
    - `cell_spec_id` string, nullable
    - `parameterized_model_id` string, nullable
    - `optimization_template_id` string, nullable
    - `created_at` string, date-time, nullable
    - `created_by_email` string, nullable
    - `parameterized_model_name` string, nullable
    - `cell_name` string, nullable
    - `organization_id` string, required: Organization this optimization belongs to.
  - `job` JobResponse, required: Schema for job information response
    - `job_id` string, required
    - `job_type` 'dummy' | 'datafit' | 'array_datafit' | 'validation' | 'simulate' | 'evaluate_variables' | 'optimize' | 'ecm_fit' | 'simple_pipeline' | 'linear_confidence_interval' | 'sobol_sensitivity' | 'surrogate_train', required: Possible types for a job
    - `status` 'pending' | 'processing' | 'waiting' | 'completed' | 'failed' | 'canceled', required: Possible statuses for a job
    - `priority` integer, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `compute_time` number, nullable
    - `error` string, nullable
    - `error_code` 'CONFIGURATION_ERROR' | 'MODEL_ERROR' | 'SOLVER_ERROR' | 'MAX_BACKWARD_JUMPS_EXCEEDED' | 'EXECUTION_TIMEOUT' | 'SUBMISSION_FAILED' | 'INTERNAL_ERROR': Machine-readable error codes for jobs.
    - `error_detail` object, nullable
    - `result` object, nullable
    - `callback_url` string, uri, nullable
    - `parent_job_id` string, nullable
    - `user_id` string, required
    - `organization_id` string, required
    - `project_id` string, nullable
    - `access_level` 'project' | 'organization': Possible access levels for a job
    - `params_path` string, nullable
    - `metadata_path` string, nullable
    - `anyscale_job_id` string, nullable
    - `submission_info` object, nullable
    - `child_key` object, nullable
    - `is_terminal` boolean, required: Whether the job has reached a terminal state and will not transition further. Derived from :attr:`JobStatus.TERMINAL_STATUSES`, so adding a new terminal status to the enum automatically updates the wire field — clients that read ``is_terminal`` never need to know the status taxonomy or be re-released when it changes.
    - `is_failed` boolean, required: Whether the job terminated unsuccessfully (failed or canceled, not completed). Derived from :attr:`is_terminal` minus the success case, so any new non-success terminal status added to :class:`JobStatus` is automatically classified as a failure without touching this method.
    - `anyscale_url` string, nullable, required: Deep-link to this job's Anyscale console dashboard, or None. Built server-side (mirroring the Sentry ``log_url`` pattern) from the captured ``anyscale_job_id`` and the environment's console cloud/project ids. Returns None when the job never ran on Anyscale (local/serve) or the environment has no console ids configured, so the UI simply omits the link in those cases.

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-26** `729b8cca71b0`: 1 warning
  - added the new `surrogate_train` enum value to the `job/job_type` response property for the response status `200`
- **2026-09-30** `ea3d377fec1a`: 1 breaking, 1 warning
  - for the `path` request parameter `id`, the format changed from no format to `uuid`
  - added the new `MAX_BACKWARD_JUMPS_EXCEEDED` enum value to the `job/error_code/anyOf[subschema #1: JobErrorCode]/` response property for the response status `200`
- **2026-09-26** `8ed5440390f0`: 1 info
  - added the optional property `job/child_key` to the response with the `200` status
- **2026-09-09** `48c041ad4800`: 2 warning
  - added the new `linear_confidence_interval` enum value to the `job/job_type` response property for the response status `200`
  - added the new `sobol_sensitivity` enum value to the `job/job_type` response property for the response status `200`

[Operation history](https://skmtc.dev/ionworks/apis/ionworks-api/changes/optimize/:id/get.md)

---

[API](https://skmtc.dev/ionworks/apis/ionworks-api.md) - [All operations](https://skmtc.dev/ionworks/apis/ionworks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ionworks/apis/ionworks-api/revisions/abebbbc5f60a?raw)
