---
title: "Get SEO recommendation job"
method: GET
path: "/api/v1/seo/recommendations/{job_id}"
tags: ["SEO Recommendations"]
---

# Get SEO recommendation job

`GET /api/v1/seo/recommendations/{job_id}`

## Request

- Base URL: `https://api.athenahq.ai`
- URL: `https://api.athenahq.ai/api/v1/seo/recommendations/{job_id}`
- Auth: API key in header `x-api-key`

Read a saved job with website content view access (viewer or higher). Results can contain evidence from submitted drafts. A completed result contains source-grounded recommendations, source_digest, token usage and warnings. Dollar cost is explicitly unavailable. Pending jobs wait for worker capacity; queued time does not expire an analysis. A failed worker returns a structured error; submit a new request_id to retry. Poll a bounded subset of jobs and back off while status remains pending; polling shares the organization-wide API request budget.

## Path parameters

- `job_id` string, required

## Query parameters

- `website_id` string, required

## Response `200`

Success

- object
  - `job_id` string, required
  - `status` 'pending' | 'running' | 'completed' | 'failed', required
  - `created_at` string, required
  - `completed_at` string, nullable, required
  - `result` object, nullable, required
    - `contract_version` 'seo-recommendations/v1', required
    - `source_digest` string, required
    - `recommendations` object[], required
      - `id` string, required
      - `priority` 'high' | 'medium' | 'low', required
      - `category` 'seo' | 'aio', required
      - `title` string, required
      - `change` string, required
      - `evidence` string, required
      - `heading_path` string[], required
    - `usage` object, required
      - `input_characters` integer, required
      - `input_tokens` integer, nullable, required
      - `output_tokens` integer, nullable, required
      - `provider_cost_usd` number, nullable, required
      - `cost_status` 'unavailable', required
    - `warnings` string[], required
  - `error` object, nullable, required
    - `code` string, required
    - `message` string, required

## Other responses

- `400`: Bad Request: validation failed
- `401`: Unauthenticated
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `429`: Rate limited: honor Retry-After before retrying with the same request ID
- `500`: Internal Error

## Changes

- **2026-11-03** `2d1d86d5e067`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/athenahq/apis/athenahq-api/changes/api/v1/seo/recommendations/:job_id/get.md)

---

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