# Get provider recommendations overview

> Returns overview metrics (total spend, available/pending savings, saved ITD) for a provider

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


## GET /api/v1/providers/{provider_id}/recommendations/overview

Returns overview metrics (total spend, available/pending savings, saved ITD) for a provider

### Authentication

Send `Authorization: Bearer <token>`.

### Parameters

- `provider_id` (path, string, required)

### Responses

#### 200: Successful Response

- `success` (boolean, default `true`)
- `timestamp` (date-time string)
- `data` (object, required): Recommendations overview metrics for a provider
  - `total_spend` (number, required): Total cost from last month's complete billing cycle
  - `display_savings` (map of string to number): Monthly savings keyed by display status, the same word every surface prints. The per-status *_savings fields below are keyed on the raw column, so a client had to fold processing into pending and optimized into saved for itself. Read this instead
  - `display_counts` (map of string to integer): Recommendation counts keyed by display status. Same relationship to the per-status *_count fields as display_savings has to *_savings
  - `available_savings` (number, required): Savings opportunities identified and available to execute
  - `pending_savings` (number, required): Savings opportunities pending required actions
  - `optimized_savings` (number, nullable): Monthly savings summed across all recommendations with status optimized (the Saved tab total)
  - `rejected_savings` (number, nullable): Monthly savings summed across all recommendations with status rejected
  - `unavailable_savings` (number, nullable): Monthly savings summed across all recommendations with status unavailable
  - `processing_savings` (number, nullable): Monthly savings summed across all recommendations with status processing
  - `available_count` (integer, nullable): Count of pending recommendations not yet accepted (the Available tab pill)
  - `pending_count` (integer, nullable): Count of pending recommendations already accepted (the Pending tab pill)
  - `processing_count` (integer, nullable): Count of recommendations with status processing
  - `optimized_count` (integer, nullable): Count of recommendations with status optimized (the Saved tab pill)
  - `rejected_count` (integer, nullable): Count of recommendations with status rejected
  - `unavailable_count` (integer, nullable): Count of recommendations with status unavailable
  - `total_count` (integer, nullable): True total of all recommendations for the provider (the All tab pill). Not the sum of the per-status counts: rollout states such as failed have no tab, so summing the buckets under-counts. Matches the universe the table paginates.
  - `saved_itd` (number, required): Total savings implemented inception to date
  - `awaiting_approval_count` (integer, default `0`): Count of recommendations awaiting an admin approval
  - `awaiting_approval_savings` (number, default `0`): Sum of monthly_savings for recommendations awaiting approval
  - `potential_savings` (number, nullable): Sum of all recommendations' monthly_savings
  - `evaluation_available_savings` (number, nullable): Sum of allowed evaluation IDs' monthly_savings
  - `saved_itd_delta_pct` (number, nullable): Percent change of saved_itd vs the prior period (30d)
  - `total_pipeline_delta_pct` (number, nullable): Percent change of the Total Pipeline (available + pending + saved_itd) vs the pipeline as it stood 30 days ago. Signed (positive means the pipeline grew), null when there was no prior pipeline to compare against
  - `saved_itd_history` (array of number): 30-point daily cumulative saved series for the sparkline
  - `top_recommendation` (object, nullable): The single highest-savings pending recommendation for this provider
    - `id` (string, required)
    - `service` (string, required)
    - `service_label` (string, required)
    - `account_name` (string, nullable)
    - `savings_value` (number, required)
  - `top_recommendations` (array of object): Top open (pending) recommendations for this provider, ranked by monthly savings descending (max 3)
    - `id` (string, required)
    - `service` (string, required)
    - `service_label` (string, required)
    - `account_name` (string, nullable)
    - `savings_value` (number, required)

#### 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)
