# Get recommendation detail

> Returns complete details for a specific recommendation

Source: https://docs.levelfour.ai/api-reference/recommendations/get-recommendations-by-id-details


## GET /api/v1/recommendations/{recommendation_id}/details

Returns complete details for a specific recommendation

### Authentication

Send `Authorization: Bearer <token>`.

### Parameters

- `recommendation_id` (path, string, required)

### Responses

#### 200: Successful Response

- `success` (boolean, default `true`)
- `timestamp` (date-time string)
- `data` (object, required)
  - `recommendation_id` (string, required): Unique business identifier for the recommendation
  - `service` (string, required)
  - `resource_type` (string, nullable)
  - `account` (string, nullable)
  - `region` (string, nullable)
  - `environment` (string, nullable)
  - `tag` (string, nullable)
  - `analysis_period` (string, nullable)
  - `monthly_savings` (number, required)
  - `annual_savings` (number, required)
  - `current_spending` (number, required)
  - `savings_percentage` (number, required)
  - `actions` (object, nullable)
    - `description` (string, nullable): Brief summary of the recommendation
    - `overview` (string, nullable): Detailed overview explaining the recommendation (supports markdown)
    - `implementation_process` (string, nullable): How to implement this recommendation (supports markdown)
    - `execution_method` (string, nullable): Technical execution details (supports markdown)
    - `key_takeaway` (string, nullable): Important notes, risks, and safety information (supports markdown)
    - `operational_impact` (string, nullable): Impact on operations and any downtime requirements (supports markdown)
  - `status` (one of `pending`, `processing`, `in_progress`, `optimized`, `rejected`, `unavailable`, `failed`, default `pending`): Recommendation detail status
  - `display_status` (one of `available`, `awaiting_approval`, `pending`, `saved`, `rejected`, `unavailable`, default `available`): Status the person reads, served once so the dashboard, the CLI and MCP all print the same word. Derived from status, saving_acceptance and execution_request_status; a request waiting on an approver outranks everything else. Prefer this over status for display
  - `created_at` (string, nullable)
  - `tags` (array of string)
  - `resource_console_url` (string, nullable)
  - `implementation_tags` (array of string)
  - `comparison_data` (array of object)
  - `metrics` (array of object)
  - `risk_assessment` (object, nullable)
  - `implementation_steps` (array of object)
  - `api_pricing` (object, nullable)
  - `iam_role_arn` (string, nullable)
  - `iam_policy` (object, nullable)
  - `manual_instructions` (string, nullable)

#### Errors

- `400`: Bad Request
- `401`: Authentication Error
- `403`: Authorization Error
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Error
- `429`: Rate Limit Exceeded
- `500`: Internal Server Error

Body of `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`:

- `success` (`false`, required)
- `error` (object, required)
  - `code` (string, required)
  - `message` (string, required)
  - `details` (any)
- `timestamp` (date-time string, required)
