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

# Get news article by ID

> Retrieve a single news article by its Wealthyhood identifier.

Fetch the full payload for a news article using its Wealthyhood identifier.

### Authentication & headers

<ParamField header="Authorization" type="string" required>
  Bearer token issued by Auth0. Format: `Bearer YOUR_ACCESS_TOKEN` and must include the `wealthyhood:nbg` scope.
</ParamField>

### Path parameters

<ParamField path="id" type="string" required>
  Wealthyhood content entry identifier.
</ParamField>

### Example request

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET 'https://api.wealthyhood.com/learn/news/64f0c51e7fb3fc001234abcd' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  ```
</RequestExample>

### Example response

<ResponseExample>
  ```json Success theme={null}
  {
    "data": {
      "key": "market-update-2024",
      "contentType": "newsWealthyhub",
      "id": "64f0c51e7fb3fc001234abcd",
      "createdAt": "2024-01-15T10:30:00Z",
      "title": "Market Update: Q1 2024",
      "contentHTML": "<body>...</body>",
      "previewTitleMain": "Market Update",
      "readingTime": "5 min",
      "fullImageURL": "https://cdn.example.com/news/full.jpg",
      "previewImageURL": "https://cdn.example.com/news/preview.jpg",
      "storyImageURL": "https://cdn.example.com/news/story.jpg"
    }
  }
  ```
</ResponseExample>

### Response fields

<ResponseField name="data" type="NewsItem" required>
  Single news article payload.

  <Expandable title="NewsItem">
    <ResponseField name="key" type="string" required>
      Slug identifier.
    </ResponseField>

    <ResponseField name="contentType" type="&#x22;newsWealthyhub&#x22;" required>
      Content type identifier.
    </ResponseField>

    <ResponseField name="id" type="string" required>
      MongoDB document identifier (24-hex). This is the same ID used in the path parameter.
    </ResponseField>

    <ResponseField name="createdAt" type="date-time" required>
      ISO 8601 timestamp of when the article was created.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Article title.
    </ResponseField>

    <ResponseField name="contentHTML" type="string" required>
      Sanitised HTML body with inline fonts and styles for the Learn reader.
    </ResponseField>

    <ResponseField name="previewTitleMain" type="string" required>
      Main preview title displayed in article listings.
    </ResponseField>

    <ResponseField name="readingTime" type="string" required>
      Estimated reading time (e.g., "5 min").
    </ResponseField>

    <ResponseField name="fullImageURL" type="uri" required>
      URL of the full-size article image, processed via Cloudflare.
    </ResponseField>

    <ResponseField name="previewImageURL" type="uri" required>
      URL of the preview-size image for listings.
    </ResponseField>

    <ResponseField name="storyImageURL" type="uri" required>
      URL of the story-format image optimized for in-app display.
    </ResponseField>
  </Expandable>
</ResponseField>


## OpenAPI

````yaml GET /learn/news/{id}
openapi: 3.0.3
info:
  title: Wealthyhood Learn API
  version: 1.0.0
  description: >
    Machine-to-machine endpoints that power the Wealthyhood Learn screen.


    All routes require a bearer access token issued by Auth0 with the
    `wealthyhood:nbg` scope.
servers:
  - url: https://{host}
    variables:
      host:
        default: api.wealthyhood.com
        description: Wealthyhood API host.
security:
  - bearerAuth: []
tags:
  - name: Learn
    description: Investor education content surfaced in the Learn screen.
paths:
  /learn/news/{id}:
    get:
      tags:
        - Learn
      summary: Get a news article by ID
      description: Retrieve a single news article using its Wealthyhood identifier.
      parameters:
        - $ref: '#/components/parameters/XUserId'
        - name: id
          in: path
          required: true
          schema:
            type: string
            description: Wealthyhood content entry identifier.
      responses:
        '200':
          description: News article payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsItemResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
components:
  parameters:
    XUserId:
      name: x-user-id
      in: header
      required: true
      description: >-
        MongoDB identifier of the Wealthyhood user. Used to determine the
        language preference for localized content.
      schema:
        type: string
        pattern: ^[a-f0-9]{24}$
  schemas:
    NewsItemResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/NewsItem'
      required:
        - data
    NewsItem:
      type: object
      properties:
        key:
          type: string
        id:
          type: string
          description: >-
            MongoDB document identifier (24-hex). Use this ID to fetch the full
            article via `GET /news/{id}`.
          example: 64f0c51e7fb3fc001234abcd
        createdAt:
          type: string
          format: date-time
        title:
          type: string
        contentHTML:
          type: string
          description: Sanitised HTML body for the article.
        previewTitleMain:
          type: string
        readingTime:
          type: string
        fullImageURL:
          type: string
          format: uri
        previewImageURL:
          type: string
          format: uri
        storyImageURL:
          type: string
          format: uri
      required:
        - key
        - id
        - createdAt
        - title
        - contentHTML
        - previewTitleMain
        - readingTime
        - fullImageURL
        - previewImageURL
        - storyImageURL
    ApiErrorResponse:
      type: object
      properties:
        status:
          type: integer
        error:
          type: object
          properties:
            message:
              type: string
            description:
              type: string
              nullable: true
        responseId:
          type: string
          format: uuid
  responses:
    UnauthorizedError:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
    ForbiddenError:
      description: Token lacks the required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
    NotFoundError:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Auth0-issued access token that includes the `wealthyhood:nbg` scope.

````