API

Crowdfunding

Campaign-scoped helpers for crowdfunding integrators. The DAO bearer token must be issued for the DAO that owns the campaign in the path.

Returns a ready-to-sign ton://transfer/... URI that contributes the given amount to the specified crowdfunding campaign.

Auth: the DAO bearer token's dao_address must match the DAO that owns the campaign. Mismatches return 403.

Whitelist: for jetton campaigns investor_address is checked against the campaign whitelist — non-whitelisted investors get 403 not_whitelisted. For native campaigns the check happens on-chain and a non-whitelisted contribution bounces back to the sender.

GET
/api/v1/crowdfunding/campaigns/{address}/contribution-link

Authorization

DaoBearerAuth
AuthorizationBearer <token>

DAO service token in Bearer format. The token must be valid, not revoked, and authorized for the same dao_address as in the request path.

In: header

Path Parameters

address*string

Campaign address (crowdfunding master address)

Query Parameters

amount*string

Contribution amount in smallest units (nanoton for native, jetton smallest-units for jetton campaigns)

Match^[0-9]+$
investor_address?string

Investor address (required for jetton campaigns, used to resolve the investor's jetton wallet via get_wallet_address). For jetton campaigns it is also checked against the campaign whitelist when one is configured — non-whitelisted investors get 403 not_whitelisted.

query_id?integer

TON message query_id (uint64). Defaults to 0.

Formatint64
Range0 <= value
response_address?string

Jetton transfer response_destination (defaults to investor_address if absent)

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/crowdfunding/campaigns/EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk/contribution-link?amount=1000000000"
{  "isNative": true,  "campaignAddress": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",  "tonTransfer": {    "uri": "ton://transfer/EQAoZM5v...?amount=1000000000&bin=te6..."  },  "details": {    "to": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",    "valueNanoton": "1000000000",    "bodyBocBase64Url": "https://example.com/logo.png"  },  "miniAppLink": "example",  "warnings": [    "example"  ]}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}

Returns a ready-to-sign ton://transfer/... URI for the **initial** LP claim. This is the request_claim_lp_tokens message the investor sends to their per-campaign Helper contract once the campaign is successful.

Auth: the DAO bearer token's dao_address must match the DAO that owns the campaign. Mismatches return 403.

GET
/api/v1/crowdfunding/campaigns/{address}/claim-link

Authorization

DaoBearerAuth
AuthorizationBearer <token>

DAO service token in Bearer format. The token must be valid, not revoked, and authorized for the same dao_address as in the request path.

In: header

Path Parameters

address*string

Campaign address (crowdfunding master address)

Query Parameters

owner_address*string

Investor wallet address claiming LP tokens

query_id?integer

TON message query_id (uint64). Defaults to 0.

Formatint64
Range0 <= value

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/crowdfunding/campaigns/EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk/claim-link?owner_address=EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk"
{  "kind": "initial",  "campaignAddress": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",  "tonTransfer": {    "uri": "ton://transfer/EQAoZM5v...?amount=1000000000&bin=te6..."  },  "details": {    "to": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",    "valueNanoton": "1000000000",    "bodyBocBase64Url": "https://example.com/logo.png"  },  "vesting": {    "phase": "not_started",    "claimableAmount": "1000000000",    "vestedAmount": "1000000000",    "totalLpAmount": "1000000000",    "claimedLpAmount": "1000000000",    "vestingEnd": "2026-06-01T12:00:00Z"  },  "warnings": [    "example"  ]}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}

Returns a ready-to-sign ton://transfer/... URI for the claim_vested message the investor sends to their per-campaign VestingVault to release the currently vested-but-unclaimed LP.

Auth: the DAO bearer token's dao_address must match the DAO that owns the campaign. Mismatches return 403.

GET
/api/v1/crowdfunding/campaigns/{address}/vesting-claim-link

Authorization

DaoBearerAuth
AuthorizationBearer <token>

DAO service token in Bearer format. The token must be valid, not revoked, and authorized for the same dao_address as in the request path.

In: header

Path Parameters

address*string

Campaign address (crowdfunding master address)

Query Parameters

owner_address*string

Investor wallet address claiming LP tokens

query_id?integer

TON message query_id (uint64). Defaults to 0.

Formatint64
Range0 <= value

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/crowdfunding/campaigns/EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk/vesting-claim-link?owner_address=EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk"
{  "kind": "initial",  "campaignAddress": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",  "tonTransfer": {    "uri": "ton://transfer/EQAoZM5v...?amount=1000000000&bin=te6..."  },  "details": {    "to": "EQAoZM5vjrPB1RgYQBpymvHrLmjucfhZcTuMhixWU36gYIkk",    "valueNanoton": "1000000000",    "bodyBocBase64Url": "https://example.com/logo.png"  },  "vesting": {    "phase": "not_started",    "claimableAmount": "1000000000",    "vestedAmount": "1000000000",    "totalLpAmount": "1000000000",    "claimedLpAmount": "1000000000",    "vestingEnd": "2026-06-01T12:00:00Z"  },  "warnings": [    "example"  ]}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}

On this page