SettleMint
Developer guidesFeeds

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

Get the most recent round from a feed:

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

Response:

{
  "feedAddress": "0x...",
  "roundId": "42",
  "answer": "150000000",
  "decimals": 8,
  "formattedAnswer": "1.50000000",
  "startedAt": "1700000000",
  "updatedAt": "1700000000",
  "answeredInRound": "42",
  "description": "USD price feed",
  "version": "1"
}
FieldDescription
roundIdIncrementing identifier for this data point
answerRaw value scaled by decimals
formattedAnswerHuman-readable value with decimal point applied
startedAtTimestamp when this round was initiated
updatedAtTimestamp when this round was last updated
descriptionFeed description from the contract
versionFeed contract version

Historical rounds

Fetch a specific round by its ID:

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

Response:

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

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.

Resolve a feed

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

# 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"
ParameterTypeRequiredDescription
subjectaddressYesThe asset or entity address
topicNamestringAt least one of topicName or topicIdHuman-readable topic name
topicIdstringAt least one of topicName or topicIdThe keccak256 hash of the topic name

Response:

{
  "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

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:

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

Filter parameters

ParameterTypeDescription
subjectaddressFilter by the asset or entity address
kindenumFilter by feed kind (SCALAR)
isActivebooleanFilter by active/inactive status
tokenAddressaddressFilter by associated token address
firstnumberPage size (max 1000)
skipnumberNumber of items to skip
orderByenumSort field: id, feedAddress, subject, topicId, decimals, isActive, registeredAt

Response:

{
  "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 feeds created through the IssuerSignedScalarFeedFactory:

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

Response:

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

List adapters

List aggregator adapters created through the ScalarFeedAggregatorAdapterFactory:

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

Response:

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

Check staleness

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

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

See Submit updates -- Check staleness for the full response format and field descriptions.

On this page