---
title: "Analyze finance sentiment"
method: POST
path: "/sentiment/v1/analyze"
tags: ["Finance Sentiment"]
---

# Analyze finance sentiment

`POST /sentiment/v1/analyze`

**Professional account required.** Free and Hobby accounts cannot use this endpoint.

Returns the sentiment of one financial text, such as a news headline or a sentence about a company. Pass `target` (for example `Apple` or `AAPL`) to get the sentiment for that company. Scored by Adanos News Sentiment 5.5, our own model built for financial news.

## Request body

- SentimentAnalyzeRequest — Direct text sentiment analysis request.
  - `text` string, required — Financial text to analyze, for example a news headline or a sentence about a company.
  - `target` string, nullable — Optional: the company to judge the text for, as a name or ticker, for example `Apple` or `AAPL`. It should appear in the text; a company name works best. "Goldman Sachs cuts Apple price target" is negative for `Apple` and neutral for `Goldman Sachs`.

## Response `200`

Successful Response

- SentimentAnalyzeResponse — Direct text sentiment analysis response.
  - `text` string, required — Normalized input text that was analyzed
  - `sentiment_score` number, required — -1.0 bearish to +1.0 bullish
  - `sentiment_label` 'positive' | 'neutral' | 'negative', required — Adanos three-class sentiment label, matching top_mentions payloads
  - `components` SentimentComponents, required — Whitelisted sentiment engine components exposed publicly.
    - `engine_version` string, required — Sentiment engine version
    - `model_score` number, nullable — Raw model score from -1 to +1: the probability of positive minus the probability of negative. `sentiment_score` maps it onto the shared scale, where ±0.14 separates positive and negative from neutral.
    - `vader_compound` number, nullable — Engine 5.4.1 only; since engine 5.5 it is null. VADER compound score after finance lexicon tuning.
    - `roberta_score` number, nullable — Engine 5.4.1 only; since engine 5.5 it is null; see `model_score`. RoBERTa ensemble score.
    - `emoji_score` number, required — Engine 5.4.1 only; since engine 5.5 it is 0. Emoji-derived sentiment score.
    - `phrase_adjustment` number, required — Engine 5.4.1 only; since engine 5.5 it is 0. Directional finance phrase adjustment.
    - `phrase_matches` SentimentPhraseMatch[] — Engine 5.4.1 only; since engine 5.5 it is empty. Directional finance phrases matched by the engine.
      - `phrase` string, required — Matched finance phrase
      - `score` number, required — Internal phrase sentiment score
    - `contextual_finance_matches` string[] — Engine 5.4.1 only; since engine 5.5 it is empty. Contextual finance phrases that informed scoring.

## Other responses

- `401` — Authentication failed
- `403` — Professional account required
- `422` — Request body validation failed
- `429` — Rate limit exceeded
- `503` — Sentiment inference service unavailable

## Changes

- **2026-09-28** `559b660fa744` — 8 info
  - added the new optional request property `target`
  - added the optional property `components/model_score` to the response with the `200` status
  - response property `components/contextual_finance_matches` deprecated
  - response property `components/emoji_score` deprecated
  - …4 more

[Change history](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/changes/sentiment/v1/analyze/post.md)

---

[API](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api.md) · [All operations](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adanos/apis/adanos-market-sentiment-api/revisions/a74a23b969c4?raw)
