RWA

Register an RWA asset backed by existing deals

Requires scope service:operate (operator keys only); funded mutation (503 MAINTENANCE while paused). Mints an RWA NFT to the gateway wallet. Every deal id must be an Active storage deal owned by the gateway wallet; the registration fee is paid from the gateway's KEP balance.

POST/api/v1/rwaTry it
iNote
Requires a key with the service:operate scope, sent as Authorization: Bearer <api-key>. Keys missing the scope are rejected with 403 — see Authentication.
!Heads up
Executes a real on-chain transaction on Robinhood testnet, funded by the gateway wallet. Returns 503 while funded mutations are paused for maintenance.

Body

application/json RegisterAssetRequestrequired

Example body
{
  "name": "string",
  "assetType": "invoice",
  "metadataURI": "string",
  "declaredValueKep": "1000",
  "dealIds": [
    0
  ],
  "labels": [
    "string"
  ]
}

Errors

CodeMeaning
400Invalid request body or on-chain rejection.
401Invalid or missing API key.
403The API key lacks the required scope for this operation.
503Funded mutations are paused for maintenance. Sent with a Retry-After header (seconds).
cURL
curl -X POST https://gateway.kepto.xyz/api/v1/rwa \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "assetType": "invoice",
    "metadataURI": "string",
    "declaredValueKep": "1000",
    "dealIds": [
      0
    ],
    "labels": [
      "string"
    ]
  }'
201 · application/json
{
  "assetId": 0,
  "name": "string",
  "assetType": "string",
  "metadataURI": "string",
  "status": "None",
  "declaredValueKep": "string",
  "issuer": "string",
  "owner": "string",
  "attestor": "string",
  "registeredAt": 0,
  "attestedAt": 0,
  "attestationCount": 0,
  "attestationsRequired": 0,
  "attestationCurrent": true,
  "backingIntact": true,
  "documents": [
    {
      "index": 0,
      "dealId": 0,
      "merkleRoot": "string",
      "label": "string"
    }
  ]
}