---
title: "Get one signal"
method: GET
path: "/api/v1/signals/{signal_id}"
tags: ["Signals"]
---

# Get one signal

`GET /api/v1/signals/{signal_id}`

## Request

- Base URL: `https://tradewink-signals.fly.dev`
- URL: `https://tradewink-signals.fly.dev/api/v1/signals/{signal_id}`
- Auth: HTTP bearer

## Path parameters

- `signal_id` string, required

## Response `200`

Signal object

- object
  - `signal` SignalObject, required: A row of `trading_signals`. Advisory types (market_outlook, macro_alert, exit_alert, weekly_digest) carry placeholder levels: do not render their stop, target or risk_reward as a trade setup.
    - `id` string
    - `ticker` string
    - `signal_type` string: Currently published values: momentum_alert, market_outlook, exit_alert, macro_alert, weekly_digest. Other values appear only on historical rows.
    - `direction` 'bullish' | 'bearish' | 'neutral'
    - `confidence` number: 0-100 setup score: how much support the setup has, adjusted against how similar past signals resolved. Not a forecast or a win probability.
    - `timeframe` string
    - `entry_low` number
    - `entry_high` number
    - `stop_loss` number
    - `target_price` number
    - `risk_reward` number
    - `analysis` string: Written reasoning
    - `catalysts` string[]
    - `outcome` 'active' | 'win' | 'loss' | 'expired' | 'cancelled' | 'advisory'
    - `outcome_pnl_pct` number, nullable
    - `created_at` string, date-time
    - `expires_at` string, date-time, nullable

## Other responses

- `401`: Missing or malformed key
- `403`: Not a Pro or Elite subscriber
- `404`: Signal not found (`code: not_found`)

---

[API](https://skmtc.dev/tradewink/apis/tradewink-rest-api.md) · [All operations](https://skmtc.dev/tradewink/apis/tradewink-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tradewink/apis/tradewink-rest-api/revisions/f0a3bbe3e992?raw)
