# Read data

Source: https://docs.settlemint.com/docs/developer-guides/feeds/read-data
Query feed data: latest values, historical rounds, resolve feeds by subject and
topic, list feeds with filtering, and check staleness.




Feed reads return the current value, historical rounds, directory resolution, and paginated feed lists. Use these endpoints to check the active source for a subject and topic, inspect indexed metadata, and decide whether the latest value is fresh enough for your workflow.

## Latest value [#latest-value]

Get the most recent round from a feed:

```bash
curl "$DALP_API_URL/system/feeds/0xFeed/latest" \
  -H "X-Api-Key: $API_KEY"
```

Response:

```json
{
  "feedAddress": "0x...",
  "roundId": "42",
  "answer": "150000000",
  "decimals": 8,
  "formattedAnswer": "1.50000000",
  "startedAt": "1700000000",
  "updatedAt": "1700000000",
  "answeredInRound": "42",
  "description": "USD price feed",
  "version": "1"
}
```

| Field             | Description                                     |
| ----------------- | ----------------------------------------------- |
| `roundId`         | Incrementing identifier for this data point     |
| `answer`          | Raw value scaled by `decimals`                  |
| `formattedAnswer` | Human-readable value with decimal point applied |
| `startedAt`       | Timestamp when this round was initiated         |
| `updatedAt`       | Timestamp when this round was last updated      |
| `description`     | Feed description from the contract              |
| `version`         | Feed contract version                           |

## Historical rounds [#historical-rounds]

Fetch a specific round by its ID:

```bash
curl "$DALP_API_URL/system/feeds/0xFeed/round/40" \
  -H "X-Api-Key: $API_KEY"
```

Response:

```json
{
  "roundId": "40",
  "answer": "148500000",
  "startedAt": "1699900000",
  "updatedAt": "1699900000",
  "answeredInRound": "40"
}
```

<Callout type="info" title="History mode affects availability">
  Round availability depends on the feed's history mode. `LATEST_ONLY` feeds only have the current round. `BOUNDED`
  feeds keep a fixed window. `FULL` feeds retain all rounds.
</Callout>

## Resolve a feed [#resolve-a-feed]

Look up a feed by its `(subject, topic)` pair. You can identify the topic by name or by ID:

```bash
# By topic name
curl "$DALP_API_URL/system/feeds/resolve?subject=0xToken&topicName=PRICE/USD" \
  -H "X-Api-Key: $API_KEY"

# By topic ID
curl "$DALP_API_URL/system/feeds/resolve?subject=0xToken&topicId=109530253..." \
  -H "X-Api-Key: $API_KEY"
```

| Parameter   | Type    | Required                                 | Description                          |
| ----------- | ------- | ---------------------------------------- | ------------------------------------ |
| `subject`   | address | Yes                                      | The asset or entity address          |
| `topicName` | string  | At least one of `topicName` or `topicId` | Human-readable topic name            |
| `topicId`   | string  | At least one of `topicName` or `topicId` | The keccak256 hash of the topic name |

Response:

```json
{
  "exists": true,
  "feedAddress": "0x...",
  "kind": "SCALAR",
  "schemaHash": "0x...",
  "adapterAddress": "0x...",
  "indexed": {
    "decimals": 8,
    "latestValue": {
      "roundId": 42,
      "answer": "150000000",
      "observedAt": "1700000000",
      "updatedAt": "1700000000",
      "issuer": "0x...",
      "signer": "0x..."
    },
    "registeredAt": "1699000000"
  }
}
```

The `indexed` field contains data from DALP indexing and may be `null` if the feed has not yet been indexed. In `latestValue`, `issuer` is the OnchainID identity contract that authorized a DALP-managed update, and `signer` is the EOA wallet that signed the EIP-712 typed data. For Chainlink-compatible updates, those two fields use the zero address because the external aggregator owns its own update model.

## List feeds [#list-feeds]

Query all feeds with optional filters and pagination. Use `isActive=true` for the current directory view. Use `isActive=false` when you need mappings retained after removal:

```bash
curl "$DALP_API_URL/system/feeds?subject=0xToken&isActive=true&first=20&skip=0" \
  -H "X-Api-Key: $API_KEY"
```

### Filter parameters [#filter-parameters]

| Parameter      | Type    | Description                                                                                   |
| -------------- | ------- | --------------------------------------------------------------------------------------------- |
| `subject`      | address | Filter by the asset or entity address                                                         |
| `kind`         | enum    | Filter by feed kind (`SCALAR`)                                                                |
| `isActive`     | boolean | Filter by active/inactive status                                                              |
| `tokenAddress` | address | Filter by associated token address                                                            |
| `first`        | number  | Page size (max 1000)                                                                          |
| `skip`         | number  | Number of items to skip                                                                       |
| `orderBy`      | enum    | Sort field: `id`, `feedAddress`, `subject`, `topicId`, `decimals`, `isActive`, `registeredAt` |

Response:

```json
{
  "items": [
    {
      "id": "0x...",
      "feedAddress": "0x...",
      "subject": "0x...",
      "topicId": "0x...",
      "kind": "SCALAR",
      "schemaHash": "0x...",
      "decimals": 8,
      "token": { "id": "0x...", "name": "Token" },
      "factory": { "id": "0x...", "typeId": "0x..." },
      "creator": { "id": "0x..." },
      "adapterAddress": "0x...",
      "isActive": true,
      "registeredAt": "1699000000",
      "latestValue": {
        "roundId": 42,
        "answer": "150000000",
        "observedAt": "1700000000",
        "updatedAt": "1700000000",
        "issuer": "0x...",
        "signer": "0x..."
      }
    }
  ],
  "totalCount": 1
}
```

## List issuer-signed feeds [#list-issuer-signed-feeds]

List feeds created through the IssuerSignedScalarFeedFactory:

```bash
curl "$DALP_API_URL/system/feeds/issuer-signed?first=20&skip=0" \
  -H "X-Api-Key: $API_KEY"
```

Response:

```json
{
  "items": [
    {
      "feedAddress": "0x...",
      "subject": "0x...",
      "topicId": "0x...",
      "creator": "0x..."
    }
  ],
  "totalCount": 1
}
```

## List adapters [#list-adapters]

List aggregator adapters created through the ScalarFeedAggregatorAdapterFactory:

```bash
curl "$DALP_API_URL/system/feeds/adapters?first=20&skip=0" \
  -H "X-Api-Key: $API_KEY"
```

Response:

```json
{
  "items": [
    {
      "adapterAddress": "0x...",
      "subject": "0x...",
      "topicId": "0x..."
    }
  ],
  "totalCount": 1
}
```

## Check staleness [#check-staleness]

Determine whether a feed's latest value is fresh enough:

```bash
curl "$DALP_API_URL/system/feeds/0xFeed/staleness?maxAgeSeconds=3600" \
  -H "X-Api-Key: $API_KEY"
```

See [Submit updates -- Check staleness](/docs/developer-guides/feeds/submit-updates#check-staleness) for the full response format and field descriptions.
