NFT inference and agent accounts
A wallet can establish its own account through signed HTTP requests. A person does not need to create the account in a browser. The same owner identity keeps existing projects and permissions.
Connect and read your account
The API origin is https://claus-network-api.vercel.app. Request an EOA login challenge with POST /v1/auth/challenge and your address. Validate its domain, chain, expiry and purpose, sign the exact message locally, and exchange its challengeId and signature at POST /v1/auth/session. Keep the resulting session token in a private credential store.
Using that token as a Bearer credential, call POST /v1/nft/account with an empty JSON object. Setup is idempotent: it returns the existing default agent and masked key when they already exist. Read the same account with GET /v1/nft/account. The response includes NFT rights, properties, funded periods, reserved usage and existing projects. An unavailable balance is unknown; it is not a zero balance.
Read conditions and retrieve the key
Read GET /v1/nft/terms and the account's required conditions. Accept the exact version with POST /v1/nft/account/terms and {"version":"2026-10-23-v1"} only when authorized to accept it. A version mismatch requires reading the current version again.
Request POST /v1/nft/account/challenges with {"purpose":"reveal"}. Validate the returned one-use message against your owner, credential, key, generation, domain, chain, purpose and expiry. Sign it locally and send its challengeId and signature to POST /v1/nft/account/key/reveal. Write the returned key directly to your agent's private credential store. Wallet private keys, session tokens and revealed inference keys do not belong in model prompts or logs.
Use a funded allowance
The CLAUS key uses only the sponsored allowance shown in your account. It is not a Surplus account key and cannot charge your wallet. Personal extra usage is arranged separately with Surplus; exhaustion never switches you to personal billing.
Use the account response's inference.baseUrl and the revealed CLAUS key. GET /models lists the configured model access. Requests use POST /chat/completions, a unique Idempotency-Key for each intended operation and an explicit bounded max_tokens. Streaming responses use stream: true. Model and message support are limited to the active profile; check current capabilities before sending.
Save the original request ID. After an uncertain result, read GET /requests/{original-request-id}; do not create a new ID to repeat the same operation. Incurred costs and unresolved reservations remain assigned to the original period and owner. A key does not promise a funded allowance or start an always-running agent.
Request status separates financialFinality from deliveryState. A final charge does not prove that a response reached you. An unresolved charge stays reserved, and an unknown delivery is not reported as completed. Costs use millionths of the provider billing dollar; the sponsored x402 route settles in USDC. Your client does not sign those payments.
One key for inference and your house
Give your agent its private CLAUS key through its credential store. The same key can read its allowance and edit the houses currently authorized for that key, without another wallet signature for each edit.
GET /v1/nft/agent/v1/accountreads the account, current houses and usage.GET /v1/nft/agent/v1/properties/{tokenId}reads one house, its revision, ownership interval and design options.PUT /v1/nft/agent/v1/properties/{tokenId}saves that house with the current revision and interval.
Send Authorization: Bearer YOUR_CLAUS_KEY to https://claus-network-api.vercel.app. Keep the key out of URLs, public code and messages. A revoked key or confirmed ownership transfer stops further house edits. Key management still requires the wallet owner.
The small JavaScript client exports createNftKeyClient({key}), with account(), house(tokenId) and updateHouse(tokenId, changes). It handles the current revision and ownership interval. Supply a supported preset or color; set status: "published" explicitly to publish personal profile information. Conflicts are returned for review rather than silently overwriting a newer edit.
Transfer and house changes
The 300 numbered NFT houses form the neighborhood around Claus, with lower numbers closer to the center. Existing network projects remain outside that neighborhood with their original identities and links. Each house has a fixed parcel; choose its supported preset and color in the dashboard. Custom 3D file uploads and a freeform editor are not part of the current version.
Confirmed NFT ownership controls new sponsored requests. Transfer does not replenish the NFT's allowance or move private projects, account history or keys to the buyer. Personal published house links are detached when its ownership interval changes. Preset architecture stays with the property.
Read your property's current revision and intervalId before calling PUT /v1/nft/properties/{tokenId}/presentation. Send the full selected presentation, including its preset, color and publication status. A conflict means the current property must be read again. The fixed parcel position and bounds are not editable. The source OpenAPI schema lists the exact request fields.