Skip to main content
POST
/
virtual-assets
Create a virtual asset
curl --request POST \
  --url https://sandbox.api.reap.global/virtual-assets/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Reap-Version: <reap-version>' \
  --data '
{
  "symbol": "<string>",
  "name": "<string>",
  "decimals": 9,
  "rateSource": "FIXED",
  "rate": 123,
  "httpEndpoint": "<string>"
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "symbol": "<string>",
  "name": "<string>",
  "decimals": 0,
  "status": "ACTIVE",
  "rateSource": "FIXED",
  "httpEndpoint": "<string>",
  "currentRate": 1,
  "currentRateUpdatedAt": "<string>",
  "allocated": {
    "amount": "<string>",
    "value": 123
  },
  "createdAt": "<string>",
  "updatedAt": "<string>"
}

Authorizations

Authorization
string
header
required

API key as Bearer token

Headers

Reap-Version
enum<string>
required

API version (YYYY-MM-DD)

Available options:
2025-02-14
Example:

"2025-02-14"

Body

symbol
string
required

Unique symbol within the project (e.g., USDC, BTC, GOLD, POINTS). Uppercase alphanumeric and underscores only.

Pattern: ^[A-Z0-9_]{1,10}$
name
string
required

Display name for the virtual asset

Required string length: 1 - 50
decimals
integer
required

Number of decimal places for amounts

Required range: 0 <= x <= 18
rateSource
enum<string>
required

How the USD exchange rate is determined for this virtual asset.

Available options:
FIXED,
HTTP
Example:

"FIXED"

rate
number

Initial USD rate. Required when rateSource is FIXED. Ignored for HTTP.

httpEndpoint
string<uri>

URL of the rate endpoint. Required when rateSource is HTTP. Must be HTTPS and resolve to a public address (no private IPs). The endpoint must respond to GET requests with JSON: { "rate": <number> } where rate is the USD value of 1 unit of this virtual asset. Rates are fetched periodically by the platform.

Response

Virtual asset definition

id
string<uuid>
required

Unique virtual asset identifier

symbol
string
required

Virtual asset symbol

name
string
required

Display name

decimals
integer
required

Number of decimal places for amounts

Required range: -9007199254740991 <= x <= 9007199254740991
status
enum<string>
required

Lifecycle status. Disabled assets are excluded from balance computation.

Available options:
ACTIVE,
DISABLED
Example:

"ACTIVE"

rateSource
enum<string>
required

How the USD exchange rate is determined for this virtual asset.

Available options:
FIXED,
HTTP
Example:

"FIXED"

httpEndpoint
string | null
required

Rate endpoint URL. Present only for HTTP rate source.

currentRate
number | null
required

Latest known USD rate per unit. Null if no rate snapshot exists yet.

Required range: x > 0
currentRateUpdatedAt
string | null
required

ISO 8601 timestamp of the latest rate snapshot. Null when currentRate is null.

allocated
object
required

Total amount of this virtual asset allocated across all accounts in the project.

createdAt
string
required

ISO 8601 creation timestamp

updatedAt
string
required

ISO 8601 last update timestamp