Deep dive
Projects and tokens
Two objects cover most use cases: a project groups related artwork; a token is one edition.
Every project and token has an address
A token’s address is three values: its chain (network), contract (collection), and tokenId (edition number). A project uses chain and id. Pass those values directly to the read APIs.
tsx
const token = useToken({ chain, contract, tokenId })// Discovery returns the same identity fields inline.const { projects } = useProjects({ chain: "eip155:1" })const selected = projects[0]const result = useProject({ chain: selected.chain, id: selected.id })
WhitehashToken: one token
| Field | Source | Null when |
|---|---|---|
chain | The network the token lives on | never |
contract | The token’s contract (Tezos gentk FA2, or an EVM collection) | never |
tokenId | On-chain token ID / iteration index | never |
name | Metadata JSON | metadata omits it |
iterationHash | The fxhash seed(gentk-v1: a separate metadata field; v2/v3 & EVM: embedded in the artifact URI) | token is unrevealed |
artifactUri | Metadata: the executable generator URL (ipfs:///onchfs://) with render state | metadata omits it |
displayUri / thumbnailUri | Metadata: static preview images | no preview published |
generatorUri | Metadata: the project’s reusable generator, without render params | not published (common on old v1) |
attributes | Metadata features, folded to {name, value} | empty array, never null |
assigned | Derived: false = unrevealed placeholder | never (boolean) |
raw | The untouched source metadata JSON | never (may be null value) |
WhitehashProject: one generative project
| Field | Source | Null when |
|---|---|---|
chain | The network the project lives on | never |
id | EVM collection contract, or a Tezos issuer entry such as v3:13623 | never |
name / description | Project metadata JSON | metadata omits it |
displayUri / thumbnailUri | Project metadata preview | no preview |
editions | The mint cap (max supply) | unknown for this generation |
minted | Iterations actually created so far | unknown |
captureSettings | Normalized project capture mode, trigger, resolution, delay, selector, GPU, and GIF settings | project metadata does not publish capture configuration |
Refs are optional. Use projectRef(), tokenRef(), and formatRef() only when a route or paste field needs one serialized value. Ordinary reads use the identity fields above.