---
title: "Create insight"
method: POST
path: "/insight-channels/{id}/insights"
tags: ["Insight Channels"]
---

# Create insight

`POST /insight-channels/{id}/insights`

## Request

- Base URL: `https://studio.fintechstudios.com/api/v1`
- URL: `https://studio.fintechstudios.com/api/v1/insight-channels/{id}/insights`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Publish an insight to an insight channel.

## Path parameters

- `id` string, required

## Request body

- object
  - `title` string, required
  - `headline` string
  - `summary` string
  - `content` string, required: Insight body (markdown, HTML, or JSON)
  - `content_format` 'markdown' | 'html' | 'json'
  - `sentiment_label` 'positive' | 'negative' | 'neutral' | 'mixed'
  - `sentiment_score` number: 0 = very negative, 50 = neutral, 100 = very positive
  - `article_count` integer
  - `article_sources` object[]
    - `url` string
    - `title` string
    - `source` string
    - `published_at` string
  - `images` object[]
    - `url` string
    - `alt` string
    - `source_url` string
    - `source_title` string
    - `source_domain` string
  - `generation_type` string, required: e.g. search_analysis, market_brief, regulatory_scan

## Response `201`

Insight created and published

- object
  - `data` Insight
    - `id` string
    - `title` string
    - `headline` string, nullable
    - `summary` string, nullable
    - `content` string
    - `content_format` 'html' | 'markdown' | 'json'
    - `sentiment_label` 'positive' | 'negative' | 'neutral' | 'mixed', nullable
    - `sentiment_score` number, nullable: Sentiment score from -1.0 to 1.0
    - `article_count` integer
    - `source_breakdown` object, nullable
    - `article_sources` object[], nullable
    - `images` object[], nullable
    - `insight_channel_id` string, nullable
    - `generation_type` 'analysis' | 'pipeline' | 'channel_summary' | 'manual'
    - `is_published` boolean
    - `created_at` string, date-time
    - `updated_at` string, date-time, nullable
  - `meta` Meta
    - `request_id` string
    - `credits_used` integer
    - `credits_remaining` integer
    - `rate_limit` object
      - `limit` integer
      - `remaining` integer
      - `reset` integer

## Other responses

- `400`: Validation error
- `403`: Access denied
- `404`: Insight channel not found

---

[API](https://skmtc.dev/fintechstudios/apis/fts-studio-api.md) · [All operations](https://skmtc.dev/fintechstudios/apis/fts-studio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fintechstudios/apis/fts-studio-api/revisions/4886597d1d96?raw)
