---
title: "Signal Projects"
method: GET
path: "/gateway/v1/heatscore/projects"
tags: ["Signal"]
---

# Signal Projects

`GET /gateway/v1/heatscore/projects`

Returns a paginated ranked snapshot of project signal cards.

**Included fields:** project identity, score, latest price, price-change percentages, core state, dimension scores, compact token signals, AI summaries, and supporting market metrics.

**Filters:** `time_range` (`24h` or `7d`). Supports `limit`/`offset` pagination.

## Query parameters

- `time_range` '24h' | '7d' — Window to compute signal scores over: 24h or 7d. Returns a ranked snapshot, not a time-series.
- `limit` integer — Results per page
- `offset` integer — Pagination offset

## Response `200`

OK

- DataResponseSignalProject
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` SignalProject[], nullable, required
    - `ai_summary` object — AI-generated summary by language code
    - `baseline` number, double — Baseline primary metric value
    - `change_percent` number, double — Primary metric percent change
    - `change_vs_previous_percent` number, double — Primary metric percent change versus previous snapshot
    - `computed_hour` integer — Snapshot computation hour as Unix seconds
    - `core_state` SignalCoreState, required
      - `driver` string — Primary state driver
      - `priority` integer — State priority
      - `reason` string — Short reason behind the state
      - `state` string — State label
      - `state_type` string — State type
      - `strength` string — Directional state strength
    - `driver` string — Primary driver label
    - `evidence_score` number, double — Evidence strength score
    - `heat_dimensions` SignalDimensions, required
      - `derivative` number, double — Derivative dimension score
      - `derivative_components` SignalDerivativeComponent[], nullable — Derivative sub-component scores
        - `metric` string — Derivative component metric
        - `score` number, double — Component score
        - `used` boolean, required — Whether the component contributed to the derivative score
        - `weight` number, double — Component weight
      - `flow` number, double — Flow dimension score
      - `movement` number, double — Movement dimension score
      - `social` number, double — Social dimension score
    - `heat_score` number, double — Signal score value
    - `heat_score_by_range` object — Signal score by supported window
    - `heat_score_change_vs_previous_percent_by_range` object — Signal score percent change versus previous snapshot by window
    - `heat_score_previous_by_range` object — Previous signal score by supported window
    - `liquidation_long_24h` number, double — 24h long liquidation volume in USD
    - `liquidation_long_short_ratio_24h` number, double — 24h long/short liquidation ratio
    - `liquidation_short_24h` number, double — 24h short liquidation volume in USD
    - `logo` string — Project logo URL
    - `market_relevance` number, double — Market relevance score
    - `metric` string — Metric used for this snapshot
    - `name` string — Project name
    - `open_interest` number, double — Open interest in USD
    - `points_used` integer — Number of points used in the score calculation
    - `previous_value` number, double — Previous primary metric value
    - `price` number, double — Latest token price in USD
    - `price_change_percent` SignalPriceChange, required
      - `1h` number, double — 1 hour price change percent
      - `24h` number, double — 24 hour price change percent
      - `7d` number, double — 7 day price change percent
    - `project_id` string — Surf project UUID
    - `project_slug` string — Project slug
    - `rank` integer — Rank within the returned signal score snapshot
    - `score` number, double — Signal score used for display
    - `signed_z` number, double — Signed z-score for the primary metric
    - `symbol` string — Token symbol
    - `time_range` string — Window used for this snapshot
    - `token_id` string — Surf token UUID
    - `token_signals` object — Compact token signal labels
    - `updated_at` integer — Last update time as Unix seconds
    - `value` number, double — Primary metric value for this snapshot
    - `volume_24h` number, double — 24h trading volume in USD
    - `volume_24h_change_percent` number, double — 24h trading volume percent change
  - `meta` OffsetMeta, required
    - `cached` boolean, required — Whether this response was served from cache
    - `credits_used` integer, required — Credits deducted for this request
    - `empty_reason` string — Hint explaining why the data array is empty, when applicable
    - `has_more` boolean — Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required — Maximum number of items returned in this response
    - `offset` integer, required — Number of items skipped (pagination offset)
    - `total` integer — Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer — Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default` — Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) · [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/asksurf/asksurf-public-rest-api/revisions/498f461e81c4/schema)
