API Reference

wallets

10 endpoints

GET/api/v1/wallets

List Wallets

List all wallets owned by the current user.

Set details=true to include balance and organization/membership context.

Query parameters

detailsboolean

Include balance and context information

default: false

default_backendstring

default: "primary"

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

Responses

200Successful Response

PaginatedResponse_UserWalletResponse_ | PaginatedResponse_UserWalletWithContextResponse_

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets" \
  -H "Authorization: Bearer <token>"
POST/api/v1/wallets/primary

Create Primary Wallet

Ensure the current user has a primary wallet and a primary virtual card.

Idempotent. Returns 201 Created when the wallet is created this request, 200 OK when returning an already-existing primary wallet.

Query parameters

default_backendstring

default: "primary"

Responses

200Primary wallet already existed; returned unchanged.
FieldTypeDescription
wallet_uuid*string

Created wallet UUID

wallet_address*string

Created wallet address

virtual_card_uuidstring | null

Created virtual card UUID (primary identity anchor)

201Successful Response
FieldTypeDescription
wallet_uuid*string

Created wallet UUID

wallet_address*string

Created wallet address

virtual_card_uuidstring | null

Created virtual card UUID (primary identity anchor)

400Invalid request
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X POST "https://api.davi.social/api/v1/wallets/primary" \
  -H "Authorization: Bearer <token>"
GET/api/v1/wallets/{wallet_address}

Get Wallet

Get a wallet by its address.

Path parameters

wallet_address*string

Responses

200Successful Response
FieldTypeDescription
address*string

Wallet address

uuid*string

Wallet UUID

user_uuidstring | null

Owner user UUID (None for org treasury wallets)

public_key_pem*string

Public key in PEM format

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets/{wallet_address}" \
  -H "Authorization: Bearer <token>"
GET/api/v1/wallets/{wallet_address}/details

Get Wallet Details

Get wallet with balance and organization/membership context.

Returns the wallet with its current balance, organization context, and membership information if applicable.

Path parameters

wallet_address*string

Responses

200Successful Response
FieldTypeDescription
wallet_uuid*string

Wallet UUID

wallet_address*string

Wallet address

balance*number

Current wallet balance

is_primary*boolean

Whether this is the user's primary wallet

organizationWalletOrganizationInfo | null

Organization this wallet belongs to, if any

object · WalletOrganizationInfo

FieldTypeDescription
uuid*string

Organization UUID

name*string

Organization name

slug*string

Organization slug

membershipWalletMembershipInfo | null

Membership associated with this wallet, if any

object · WalletMembershipInfo

FieldTypeDescription
uuid*string

UserMembership UUID

tier_name*string

Membership tier name

joined_at*string (date-time)

When user joined this membership

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets/{wallet_address}/details" \
  -H "Authorization: Bearer <token>"
GET/api/v1/wallets/{wallet_address}/balance

Get Wallet Balance

Get a wallet's current point balance.

Path parameters

wallet_address*string

Responses

200Successful Response
FieldTypeDescription
balance*number

Current wallet balance

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets/{wallet_address}/balance" \
  -H "Authorization: Bearer <token>"
GET/api/v1/wallets/{wallet_address}/transactions

Get Transaction History

List a wallet's transactions, most recent first.

Path parameters

wallet_address*string

Query parameters

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

Responses

200Successful Response
FieldTypeDescription
total_items*integer

Total number of items available

total_pages*integer

Total number of pages available

current_page*integer

Current page number

items*Transaction[]

List of items on the current page

array items · Transaction

FieldTypeDescription
id*string

Transaction ID (CUID2)

from_address*string

Sender wallet address

to_address*string

Receiver wallet address

amount*number

Transaction amount

transaction_type*string

Type of transaction

status*string

Status of the transaction

transaction_hash*string

Hash of the transaction

previous_hash*string

Hash of the previous transaction

signature*string

Digital signature of the transaction

public_key*string

Public key in PEM format

encrypted_data*string

Encrypted transaction data

data_hash*string

Hash of the transaction data

description*string

Description of the transaction

reference_id*string

Reference ID for the transaction

original_transaction_id*string

Original transaction ID for reversals/refunds (CUID2)

failure_reason*string

Reason for failure, if any

reversal_reason*string

Reason for reversal, if any

failed_at*string (date-time) | null

Timestamp when the transaction failed

created_at*string (date-time)

Timestamp when the transaction was created

confirmed_at*string (date-time) | null

Timestamp when the transaction was confirmed

tagsstring[]

Tags attached to the transaction at creation time

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets/{wallet_address}/transactions" \
  -H "Authorization: Bearer <token>"
GET/api/v1/wallets/{wallet_address}/transactions/recent

Get Recent Transactions

Get recent transactions with enriched sender information.

Returns transactions with human-readable sender names (when available) and transaction type labels. For transactions created before sender metadata was stored, falls back to wallet address.

Path parameters

wallet_address*string

Query parameters

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

Responses

200Successful Response
FieldTypeDescription
total_items*integer

Total number of items available

total_pages*integer

Total number of pages available

current_page*integer

Current page number

items*RecentTransactionItem[]

List of items on the current page

array items · RecentTransactionItem

FieldTypeDescription
transaction_id*string

Transaction ID (CUID2)

transaction_type*enum

Type: transfer, reward, refund, etc.

direction*enum

'incoming' if wallet received, 'outgoing' if wallet sent

sender_name*string

Sender name from metadata, or wallet address as fallback

sender_address*string

Sender wallet address

amount*number

Transaction amount in points

created_at*string (date-time)

Transaction timestamp

has_reward_contentboolean | null

For reward transactions: True if has content (voucher, etc.), False if points-only. None for non-reward types.

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/wallets/{wallet_address}/transactions/recent" \
  -H "Authorization: Bearer <token>"
GET/api/v1/transactions

List Transactions

List all transactions across all wallets owned by the current user.

Returns a paginated list of transactions, ordered by most recent first.

Query parameters

default_backendstring

default: "primary"

pageinteger

default: 1 · ≥ 1

page_sizeinteger

default: 20 · ≥ 1 · ≤ 100

sort_bystring | null
sort_orderstring

default: "asc"

Responses

200Successful Response
FieldTypeDescription
total_items*integer

Total number of items available

total_pages*integer

Total number of pages available

current_page*integer

Current page number

items*Transaction[]

List of items on the current page

array items · Transaction

FieldTypeDescription
id*string

Transaction ID (CUID2)

from_address*string

Sender wallet address

to_address*string

Receiver wallet address

amount*number

Transaction amount

transaction_type*string

Type of transaction

status*string

Status of the transaction

transaction_hash*string

Hash of the transaction

previous_hash*string

Hash of the previous transaction

signature*string

Digital signature of the transaction

public_key*string

Public key in PEM format

encrypted_data*string

Encrypted transaction data

data_hash*string

Hash of the transaction data

description*string

Description of the transaction

reference_id*string

Reference ID for the transaction

original_transaction_id*string

Original transaction ID for reversals/refunds (CUID2)

failure_reason*string

Reason for failure, if any

reversal_reason*string

Reason for reversal, if any

failed_at*string (date-time) | null

Timestamp when the transaction failed

created_at*string (date-time)

Timestamp when the transaction was created

confirmed_at*string (date-time) | null

Timestamp when the transaction was confirmed

tagsstring[]

Tags attached to the transaction at creation time

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/transactions" \
  -H "Authorization: Bearer <token>"
POST/api/v1/transactions/{transaction_id}/decrypt

Decrypt Transaction Data

Decrypt a transaction's data payload.

The caller names which of their wallets to decrypt with; ownership of that wallet is what authorizes the read.

Path parameters

transaction_id*string

Request body*application/json

FieldTypeDescription
wallet_address*string

Address of a wallet the caller owns that took part in the transaction. Its key is what decrypts the payload.

Responses

200Successful Response
FieldTypeDescription
manifest_url*string

The URL of the reward manifest

content_hashstring | null

The hash of the reward content. Used for integrity checking

expires_atstring (date-time) | null

The expiration date of the reward manifest

access_keystring | null

The access key for the reward manifest

access_key_typeenum

The type of access key for the reward manifest

default: "none"

additional_data*object

Additional transaction-specific custom data

400Invalid request
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

409Resource already exists
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X POST "https://api.davi.social/api/v1/transactions/{transaction_id}/decrypt" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ /* request body */ }'
GET/api/v1/transactions/{transaction_id}

Get Transaction

Get one of the caller's transactions by id.

A transaction is readable by the wallets on either end of it. The id alone does not authorize the read: it is unguessable, but unguessable is not a permission, and on a third-party surface it would let any token holding wallet:transactions:read fetch a transaction that came into its possession by any means.

Path parameters

transaction_id*string

Query parameters

default_backendstring

default: "primary"

Responses

200Successful Response
FieldTypeDescription
id*string

Transaction ID (CUID2)

from_address*string

Sender wallet address

to_address*string

Receiver wallet address

amount*number

Transaction amount

transaction_type*string

Type of transaction

status*string

Status of the transaction

transaction_hash*string

Hash of the transaction

previous_hash*string

Hash of the previous transaction

signature*string

Digital signature of the transaction

public_key*string

Public key in PEM format

encrypted_data*string

Encrypted transaction data

data_hash*string

Hash of the transaction data

description*string

Description of the transaction

reference_id*string

Reference ID for the transaction

original_transaction_id*string

Original transaction ID for reversals/refunds (CUID2)

failure_reason*string

Reason for failure, if any

reversal_reason*string

Reason for reversal, if any

failed_at*string (date-time) | null

Timestamp when the transaction failed

created_at*string (date-time)

Timestamp when the transaction was created

confirmed_at*string (date-time) | null

Timestamp when the transaction was confirmed

tagsstring[]

Tags attached to the transaction at creation time

401Authentication failed
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

403Insufficient permissions
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

404Resource not found
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

422Validation error
FieldTypeDescription
errors*object

Map of field names to error messages. Use '_root' for form-level errors.

message*string

Human-readable error summary

codestring | null

Machine-readable error code

Example request

curl -X GET "https://api.davi.social/api/v1/transactions/{transaction_id}" \
  -H "Authorization: Bearer <token>"