> ## Documentation Index
> Fetch the complete documentation index at: https://docs.athenahq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit SEO recommendations

> Submit one draft or public HTTPS page for asynchronous SEO and AI-search recommendations. The website's organization must have the seo_recommendations entitlement in Autumn, and the caller must have website content administration access. Missing entitlement returns 403; an unavailable entitlement check returns 500 without creating a job. Queued work is checked again before analysis. Reuse request_id with identical input for retries; changed input returns 409. A website may have 1,000 outstanding jobs, with up to four active analyses and 16 across all websites. The website submit ceiling is 120 requests/minute, subject to the organization-wide API budget (default 60 requests/minute shared by submissions, polling and other API calls). Honor Retry-After on 429. Pace submissions and reserve request budget for polling a bounded subset of jobs; do not poll an entire backlog every poll_after_seconds. Polling never starts another analysis.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/seo/recommendations
openapi: 3.1.0
info:
  title: AthenaHQ API
  description: >-
    AthenaHQ API provides programmatic access to manage your websites and
    prompts for AI-powered content optimization.
  version: 1.0.0
  contact:
    email: support@athenahq.ai
servers:
  - url: https://api.athenahq.ai
    description: Production server
security:
  - apiKey: []
tags:
  - name: Basics
    description: Core API operations for managing websites and prompts
  - name: Metrics
    description: Metrics and analytics endpoints for tracking AI visibility
  - name: Billing
    description: Billing and credits endpoints for managing usage
  - name: Team Management
    description: Endpoints for managing team members and invitations
  - name: Groups
    description: Endpoints for managing groups of websites
  - name: Content
    description: >-
      Endpoints for accessing Content Hub data — tabs, tracked URLs, and per-URL
      prompt breakdowns.
  - name: Pitch Workspace
    description: >-
      Endpoints for accessing pitch workspace reports — org-scoped pitch runs
      with competitors, prompts, attributes, and aggregate metrics.
  - name: Knowledge Base
    description: >-
      Endpoints for reading the brand Knowledge Base — approved brand facts and
      the pillars that organize them.
paths:
  /api/v1/seo/recommendations:
    post:
      tags:
        - SEO Recommendations
      summary: Submit SEO recommendations
      description: >-
        Submit one draft or public HTTPS page for asynchronous SEO and AI-search
        recommendations. The website's organization must have the
        seo_recommendations entitlement in Autumn, and the caller must have
        website content administration access. Missing entitlement returns 403;
        an unavailable entitlement check returns 500 without creating a job.
        Queued work is checked again before analysis. Reuse request_id with
        identical input for retries; changed input returns 409. A website may
        have 1,000 outstanding jobs, with up to four active analyses and 16
        across all websites. The website submit ceiling is 120 requests/minute,
        subject to the organization-wide API budget (default 60 requests/minute
        shared by submissions, polling and other API calls). Honor Retry-After
        on 429. Pace submissions and reserve request budget for polling a
        bounded subset of jobs; do not poll an entire backlog every
        poll_after_seconds. Polling never starts another analysis.
      operationId: seoRecommendations.submit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                website_id:
                  type: string
                request_id:
                  type: string
                source:
                  anyOf:
                    - type: object
                      properties:
                        kind:
                          enum:
                            - draft
                          type: string
                        title:
                          type: string
                        meta_description:
                          type: string
                        markdown:
                          type: string
                      required:
                        - kind
                        - title
                        - meta_description
                        - markdown
                    - type: object
                      properties:
                        kind:
                          enum:
                            - url
                          type: string
                        url:
                          type: string
                      required:
                        - kind
                        - url
                target_queries:
                  type: array
                  items:
                    type: string
                locale:
                  type: string
                local_context:
                  type: string
              required:
                - website_id
                - request_id
                - source
      responses:
        '202':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                  status:
                    type: string
                    enum:
                      - pending
                      - running
                      - completed
                      - failed
                  contract_version:
                    enum:
                      - seo-recommendations/v1
                    type: string
                  poll_after_seconds:
                    type: integer
                required:
                  - job_id
                  - status
                  - contract_version
                  - poll_after_seconds
        '400':
          description: 'Bad Request: validation failed'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
        '429':
          description: >-
            Rate limited: honor Retry-After before retrying with the same
            request ID
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
          headers:
            Retry-After:
              description: Seconds to wait before retrying
              schema:
                type: integer
                minimum: 1
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API key for authentication. You can create one
        [here](https://app.athenahq.ai/organization?tab=api).

````