Crowdfunding
Campaign-scoped helpers for crowdfunding integrators. The DAO bearer token must be issued for the DAO that owns the campaign in the path.
Contribution deeplink
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.
Authorization
DaoBearerAuth 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
Campaign address (crowdfunding master address)
Query Parameters
Contribution amount in smallest units (nanoton for native, jetton smallest-units for jetton campaigns)
^[0-9]+$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.
TON message query_id (uint64). Defaults to 0.
int640 <= valueJetton 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"}LP claim deeplink
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.
Authorization
DaoBearerAuth 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
Campaign address (crowdfunding master address)
Query Parameters
Investor wallet address claiming LP tokens
TON message query_id (uint64). Defaults to 0.
int640 <= valueResponse 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"}Vested LP claim deeplink
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.
Authorization
DaoBearerAuth 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
Campaign address (crowdfunding master address)
Query Parameters
Investor wallet address claiming LP tokens
TON message query_id (uint64). Defaults to 0.
int640 <= valueResponse 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"}