Read the benefits one or more wallets reach
One call of the distributor API, read from the interface description Yutai publishes. Every sample answer on this page is simulated: no real holder's data stands behind it. The formats every value travels in are the identifiers page's.
The call
/v1/eligibility
The key presents the eligibility.read scope.
The get started page shows how a platform gets a key.
The parameters
wallets- Required. The wallet addresses to read: one or more, at most 20 in one read, each an EVM 0x address, a Solana address or a TRON address. It sits in the query.
What it answers
The wallets the request named, each with its tokens and the benefits they reach. The claimed state is the one fact the answer carries at the holder level: a benefit the holder the wallet is linked to has claimed reads claimed on every wallet that carries it, so wallets that share it show one fact about their holder.
walletsRequired. A list of objects with the fields below. It carries at least 1 and at most 20 items.
Each itemRequired. An object with the fields below.
walletThe wallet address the request named, in the spelling it sent.
Required. A string.
readWhether Yutai read the wallet at all; false when the wallet could not be read.
Required. True or false.
sourceModeThe data mode the read answered in: SIMULATED, SANDBOX or LIVE.
Required. A string that is one of the values below.
SIMULATEDSANDBOXLIVE
asOfThe instant of the newest price quote behind the wallet's tokens, in the ISO 8601 form, present only when the read priced a held security. It carries the quote's instant, never the price.
Optional. An instant in the ISO 8601 form.
tokensThe tokens the wallet's own trail answers, each with the benefits it reaches; present when the wallet was read.
Optional. A list of objects with the fields below. It carries at most 200 items.
Each itemRequired. An object with the fields below.
issuerThe issuer that mints the token, or null when no issuer is recorded.
Required. A string. It may also be null.
securityThe security the token's mapping names, with its name, its ISIN and its ticker.
Required. An object with the fields below.
nameRequired. A string. It carries at least 1 and at most 256 characters.
isinRequired. A string.
tickerThe security's ticker as the registry records it, or null when it records none.
Required. A string. It carries at least 1 and at most 16 characters. It may also be null.
symbolThe token's own symbol, like NVDAon.
Required. A string. It carries at least 1 and at most 16 characters.
chainNameThe chain's own name from the platform's one chain-name table, never its CAIP-2 id.
Required. A string. It carries at least 1 and at most 128 characters.
wrapperThe wrapper programme that carries the token.
Required. A string. It carries at least 1 and at most 128 characters.
chainThe chain the token trades on, as its CAIP-2 id.
Required. A string.
sharesThe wallet's holding as a decimal string at the token's own decimals, never a JSON number.
Required. A string.
daysHeldWhole days the wallet has held the security without selling; counts toward the tier.
Required. A whole number, at least 0.
tierThe programme tier the wallet's own trail answers, or null when no tier stands.
Required. A string. It may also be null.
credentialTierThe credential tier the answered programme tier bound at create, or null when it carries no binding.
Required. A string that is one of the values below. It may also be null.
Tier 1Tier 2Tier 3
progressThe tier clock's progress toward the next rung, through the one resolver and the one progress derivation; absent when no true days bar stands.
Optional. An object with the fields below.
nextTierThe tier the clock is moving toward, or null at the top of the ladder.
Required. A string that is one of the values below. It may also be null.
Tier 1Tier 2Tier 3
daysHeldWhole days the next rung's own clock has run.
Required. A whole number, at least 0.
progressPercentThe share of the next rung's days already held, in whole percents rounded down.
Required. A whole number, from 0 to 100.
benefitsThe benefits the holding reaches, each with its state and its illustrative flag.
Required. A list of objects with the fields below. It carries at most 500 items.
Each itemRequired. An object with the fields below.
benefitIdRequired. A string.
nameRequired. A string. It carries at least 1 and at most 128 characters.
typeRequired. A string that is one of the values below.
DISCOUNT_CODEEXPERIENCEPOINTSVOUCHERACCESSDIGITAL_COLLECTIBLESTOCK_REWARD
deliveryRequired. A string that is one of the values below.
CODEPOINTS_CREDITVENUE_REDEMPTIONCHAIN_MINTTOKEN_TRANSFERREWARD_FULFILMENT
stateRequired. A string that is one of the values below.
eligiblelockedclaimedredeemedunavailable
illustrativeRequired. True or false.
scopeWho the offer is shown to: base for every distributor, distributor for the distributors it names.
Required. A string that is one of the values below.
basedistributor
funderWho funds the offer: Yutai, its issuer, a distributor or a brand.
Required. A string that is one of the values below.
YUTAIISSUERDISTRIBUTORBRAND
plusThe Yutai Plus facts, present only on a distributor-scoped offer the calling key's own distributor may see; absent on every base offer and on every other distributor's answer.
Optional. An object with the fields below.
distributorNameThe distributor's own name from Yutai's member record, the name the Plus offer stands under.
Required. A string. It carries at least 1 and at most 128 characters.
progressThe wallet's streak toward the tier that asks days; present only on an eligibility answer and only when that tier asks days.
Optional. An object with the fields below.
streakDaysWhole days the wallet has held the security, the one clock the tier reads.
Required. A whole number, at least 0.
requiredDaysThe whole days the tier asks for.
Required. A whole number.
rewardTiersThe programme's reward tiers in ladder order, each with the one short requirement sentence.
Required. A list of objects with the fields below. It carries at most 64 items.
Each itemRequired. An object with the fields below.
nameThe tier's name as the programme carries it.
Required. A string. It carries at least 1 and at most 128 characters.
requirementThe one short sentence the tier's holding and days read as.
Required. A string. It carries at least 1 and at most 512 characters.
lockedReasonOptional. A string. It carries at least 1 and at most 512 characters.
sourceThe lending protocol whose positions the token carries, as its source word: defi:kamino, defi:jupiter, defi:morpho or defi:euler; present exactly when positions stands.
Optional. A string that is one of the values below.
defi:kaminodefi:jupiterdefi:morphodefi:euler
positionsWhere the token's units sit when a lending protocol carries some of them, each location once in the closed order; absent when the whole holding sits in the wallet.
Optional. A list of objects with the fields below. It carries at most 13 items.
Each itemRequired. An object with the fields below.
locationWhere the units sit: the wallet itself, a lending protocol's supplied units, its obligation collateral, or its borrowed units.
Required. A string that is one of the values below.
walletkamino_suppliedkamino_collateralkamino_borrowedjupiter_suppliedjupiter_collateraljupiter_borrowedmorpho_suppliedmorpho_collateralmorpho_borrowedeuler_suppliedeuler_collateraleuler_borrowed
unitsThe units at this location as an exact decimal string at the token's own decimals; borrowed units are negative.
Required. A string.
countsForEligibilityWhether the units count towards the holding: true for the wallet and both lent locations, false for borrowed units.
Required. True or false.
breakdownOne plain sentence saying where the units sit, built from the same positions; absent when the whole holding sits in the wallet.
Optional. A string. It carries at least 1 and at most 512 characters.
skippedChainsThe chains the wallet's stored trail shows it has held on that this distributor does not serve, as CAIP-2 ids, each once and sorted; present only when the stored trail names one, and never on an unread wallet.
Optional. A list of strings. It carries at least 1 and at most 64 items.
unreadReasonWhy the wallet could not be read; present only when read is false.
Optional. A string. It carries at least 1 and at most 512 characters.
The errors
Every refused call answers one object with three fields: message, the plain sentence that says what did not happen; code, the closed refusal code the call log records beside the call; and requestId, the id to quote when asking Yutai about the call. The message carries 1 to 512 characters, the code 1 to 64 characters, and the request id 1 to 64 characters. Every answer carries the same id on its X-Request-Id header.
| Status | What it answers |
|---|---|
| 400 | The query could not be read. |
| 401 | The key is missing, malformed, unknown, revoked or expired. |
| 403 | The key does not carry the scope, or the wallets name no chain the distributor serves. The call is also refused with 403, nothing read, when the distributor is paused, suspended or closed, when the key is paused, or when the key presents from an origin it does not allow. |
| 429 | The key made too many calls this minute, or the platform has used today's live wallet reads; the Retry-After header names the seconds until the next window opens, or until the reads open again. Nothing was read. |
| 500 | The read failed. Nothing was changed. |
| 503 | The data source this read needs is not live yet, or the owners' blockchain switch does not allow the read, so the read is refused. Nothing was read. |
The errors and limits page carries every refusal status the document declares, each in its own words, beside the calls that answer it.