API contracts
Use these payloads when you need to call Sync directly from your backend or want to generate types. Everything here is live in the private beta; expect minor field names to shift as we bake the SDK, but the structure will stay close.
POST /sync/v1/distributions
Create + fund a Merkle distributor. Provide cohort and split references along with vesting times.
{
"cohortId": "ecosystem-weekly",
"splitTemplateId": "weekly-linear",
"mint": "GEODs9nC6HvZ4a3we8qC3dKpVt7y2SN8Wg4uLv3rWdXH",
"admin": "devonsolana.sol",
"schedule": {
"startVestingTs": 1763056306,
"endVestingTs": 1763142706,
"clawbackStartTs": 1763229106
},
"memo": "fractals:distribution:23:fund",
"pricingHint": { "solUsd": 110.0 }
}{
"transaction": "base64-encoded v0 tx",
"summary": {
"distributionId": "dist_23",
"cohortLabel": "Ecosystem weekly",
"estimatedCost": { "lamports": 4600560, "usd": 0.51 },
"merkle": {
"root": "0xf2d956...",
"maxTotalClaim": "1635000000000",
"maxNumNodes": 5
}
},
"dashboardUrl": "https://dashboard.fractals.so/distributions/dist_23"
}POST /sync/v1/distributions/{id}/claims
Return a ready-to-sign claim transaction for a wallet.
{
"wallet": "CKvG...WGVd",
"commitment": "confirmed"
}{
"transaction": "base64-encoded claim tx",
"expectedAmount": "10097777",
"token": { "mint": "XNET", "decimals": 8 },
"subsidy": { "usd": 0.5, "note": "Claim fees covered by Sync" },
"status": "ready"
}GET /sync/v1/cohorts
List cohorts, filter by label, or paginate through large projects.
/sync/v1/cohorts?label=DePIN&limit=20&cursor=eyJpZCI6ICJjb2hvcnRfMSJ9{
"items": [
{
"id": "cohort_depin_validators",
"label": "DePIN validators",
"size": 143,
"lastUpdatedAt": "2025-01-03T18:22:11.000Z"
}
],
"nextCursor": null
}Error envelope
Every endpoint wraps errors the same way:
{
"error": {
"code": "COHORT_NOT_FOUND",
"message": "Cohort cohort_depin_validators does not exist",
"retryable": false,
"requestId": "req_abc123"
}
}requestId makes it easy to share logs with our team if you need help.
Last updated on