---
updatedAt: 2026-06-01T10:34:15.000Z
agentTools:
  projectIndex: https://docs.ortex.com/llms.txt
---

# Content Detail

Retrieve every customer-facing field for a single piece of generated content. Use the compact /content/ list to find IDs, then hit this endpoint for the full row.

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "ENTERPRISE APIs",
    "version": "1.0",
    "description": "A revolutionary global equity analytics platform which identifies and analyses relevant data for your stocks."
  },
  "paths": {
    "/api/v1/market_intelligence/content/{id}/": {
      "get": {
        "operationId": "market_intelligence_content_retrieve",
        "description": "Retrieve every customer-facing field for a single piece of generated content. Use the compact /content/ list to find IDs, then hit this endpoint for the full row.",
        "summary": "Content Detail",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "Market Intelligence"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MIContentCustomerDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "MIContentCustomerDetail": {
        "type": "object",
        "description": "Detail representation for the customer API.\n\nAlways returns every customer-facing field — the detail endpoint\nis the canonical \"give me everything\" surface and ignores\n``?include=``. Field hiding still applies (premium flags,\nlifecycle, generated_at, security_id).",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "contentType": {
            "enum": [
              "pulse",
              "earnings_preview",
              "trader_note",
              "weekly_digest",
              "convergence_report",
              "market_commentary",
              "corporate_action"
            ],
            "type": "string",
            "description": "* `pulse` - Stock Pulse\n* `earnings_preview` - Earnings Preview\n* `trader_note` - Sales Trader Note\n* `weekly_digest` - Weekly Digest\n* `convergence_report` - Convergence Report\n* `market_commentary` - Market Commentary\n* `corporate_action` - Corporate Action",
            "x-spec-enum-id": "a914b59c51b40ee6"
          },
          "pulseType": {
            "enum": [
              "short_interest",
              "analyst",
              "options",
              "institutional",
              "ctb",
              "utilization",
              "signal",
              "convergence",
              "alt_data",
              ""
            ],
            "type": "string",
            "x-spec-enum-id": "1b30f1376b67f21f",
            "description": "Populated when content_type=pulse. Empty otherwise.\n\n* `short_interest` - Short Interest\n* `analyst` - Analyst Activity\n* `options` - Options / PCR\n* `institutional` - Institutional / 13F\n* `ctb` - Cost to Borrow\n* `utilization` - Utilization\n* `signal` - ORTEX Signal\n* `convergence` - Convergence\n* `alt_data` - Alt Data"
          },
          "theme": {
            "type": "string",
            "description": "Sub-type discriminator: weekly-digest / market-commentary theme slug (e.g. overall, short_interest), or the CorporateActionType slug for corporate_action rows (e.g. reverse_split, buyback). Empty for content types without a sub-type.",
            "maxLength": 40
          },
          "ticker": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "exchange": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "isin": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "ortexSid": {
            "type": "integer",
            "nullable": true,
            "readOnly": true
          },
          "headline": {
            "type": "string",
            "description": "Full headline for entitled callers + long-form articles.\nPulses get a ~3-word teaser when locked.\n\nRationale: pulses normally render with just the headline (pulse\nwire, list rows), so showing the full text alongside a padlock\nwould make the lock cosmetic. Articles have a rich body /\nsummary / analyst grid behind the paywall, so the headline can\nstay visible — readers need it to decide whether to click, and\nthe actual gated content is below.",
            "readOnly": true
          },
          "body": {
            "type": "string",
            "description": "Full body, or empty string when locked.",
            "readOnly": true
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "provenance": {
            "type": "object",
            "additionalProperties": {},
            "readOnly": true
          },
          "identifiers": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Per-row list of ``{exchange, ticker, mic, isin}``\ndicts — one per unique TradingItem on this row.\n\nIncludes both the primary ``tradingitem`` and every\nbody-mentioned ticker on the ``related_tradingitems`` M2M, so\ncallers can join MI articles to their internal instrument\nkeyspace without a separate round trip. Empty when the row has\nno ticker at all (some weekly digests + market commentaries).",
            "readOnly": true
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Closed-vocabulary subject-matter tags for this row.\n\nLets callers filter \"anything SI-flavoured\" with one query\n(``?topics=short_interest``) instead of enumerating\n``content_type=pulse&pulse_type=short_interest`` +\n``content_type=weekly_digest&theme=short_interest`` +\n``content_type=market_commentary&theme=short_interest``\nseparately. See ``compute_topics`` and ``Topic`` in\n``market_intelligence.constants`` for the resolution rules and\nthe closed vocabulary.\n\nDerived at request time from existing discriminators — no\nschema change required. Empty list (rather than null) when no\ntopic resolves, so callers always get a JSON array.",
            "readOnly": true
          }
        },
        "required": [
          "body",
          "contentType",
          "exchange",
          "headline",
          "id",
          "identifiers",
          "isin",
          "ortexSid",
          "provenance",
          "ticker",
          "topics"
        ]
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Ortex-Api-Key",
        "description": "Use test API key: `TEST` to get a limited result."
      }
    }
  },
  "servers": [
    {
      "url": "https://api.ortex.com/",
      "description": "Production"
    }
  ]
}
```