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

# Get a single article by ID or slug

> Retrieve a single article by its UUID or slug. The article access is determined by the authentication:

**Authenticated Access:**
- **Admin API keys**: Can access any article from any account (including drafts, archived)
- **Account API keys**: Can only access articles from the account that owns the key

**Public Access** (from valid domains):
- **No authentication required** when accessing from verified domains (*.localhost, *.suprsonic.blog, *.suprsonic.app, or verified custom domains)
- Can only access **published articles** from the domain-associated account
- Draft, archived, or deleted articles return 404 for public access




## OpenAPI

````yaml get /api/v1/articles/{id}
openapi: 3.1.0
info:
  title: SuprSonic API
  version: 1.0.0
  description: API for autonomous content generation and blog management
  contact:
    name: SuprSonic API Support
    url: https://www.suprsonic.com/support
    email: support@suprsonic.com
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://www.suprsonic.com
    description: Production server
  - url: http://localhost:3000
    description: Development server
security: []
tags: []
paths:
  /api/v1/articles/{id}:
    get:
      tags:
        - Articles
      summary: Get a single article by ID or slug
      description: >
        Retrieve a single article by its UUID or slug. The article access is
        determined by the authentication:


        **Authenticated Access:**

        - **Admin API keys**: Can access any article from any account (including
        drafts, archived)

        - **Account API keys**: Can only access articles from the account that
        owns the key


        **Public Access** (from valid domains):

        - **No authentication required** when accessing from verified domains
        (*.localhost, *.suprsonic.blog, *.suprsonic.app, or verified custom
        domains)

        - Can only access **published articles** from the domain-associated
        account

        - Draft, archived, or deleted articles return 404 for public access
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
          description: Article UUID or slug
          examples:
            uuid:
              summary: Using UUID
              value: 123e4567-e89b-12d3-a456-426614174000
            slug:
              summary: Using slug
              value: my-article-title
      responses:
        '200':
          description: Article retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      account_id:
                        type: string
                        format: uuid
                      customer_avatar_id:
                        type: string
                        format: uuid
                      category:
                        type: string
                        enum:
                          - opinion_piece
                          - industry_forecast
                          - how_to_guide
                          - comparison
                          - deep_research
                          - checklist
                          - roundup
                      title:
                        type: string
                      slug:
                        type: string
                      content:
                        type: string
                        description: Full HTML content of the article
                      meta_description:
                        type: string
                        nullable: true
                      hero_image_url:
                        type: string
                        format: uri
                        nullable: true
                      tags:
                        type: array
                        items:
                          type: string
                      status:
                        type: string
                        enum:
                          - draft
                          - published
                          - archived
                          - deleted
                      publish_date:
                        type: string
                        format: date-time
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                      customer_avatars:
                        type: object
                        nullable: true
                        description: Customer avatar/persona details for this article
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                          cta_headline:
                            type: string
                            nullable: true
                          cta_subheadline:
                            type: string
                            nullable: true
                          cta_button:
                            type: string
                            nullable: true
                          cta_url:
                            type: string
                            format: uri
                            nullable: true
                      _links:
                        type: object
                        properties:
                          self:
                            type: string
                            format: uri
                          account:
                            type: string
                            format: uri
                          related:
                            type: string
                            format: uri
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - API key cannot access this article
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Article not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - AdminApiKey: []
        - AccountApiKey: []
        - {}
components:
  schemas:
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              example: VALIDATION_ERROR
            message:
              type: string
              example: Invalid request data
            details:
              type: object
  securitySchemes:
    AdminApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Admin API key for managing accounts and creating content
    AccountApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Account-specific API key for accessing account data

````