Skip to main content
  • Issues grants to every member in memberList as one batch (joinOptions=add). The batch succeeds or fails as a whole (all-or-nothing).
  • If any member does not exist, the whole batch is rejected with ACCOUNT_DOES_NOT_EXIST, and errorMessage lists the missing accounts.
  • Quota check: if (grants already issued + members in this memberList) exceeds the event’s maxGrantCount, the whole batch is rejected with FREESPIN_QUOTA_FULL.
  • If any member is already bound (allowDuplicateJoin=false) or has reached the per-member limit (max_grants_per_member), the whole batch is rejected with BAD_PARAMETERS, and the error message lists those members.
  • If the event is invalid (not found, not active, expired or currency mismatch), the whole batch is rejected with FREESPIN_EVENT_NOT_FOUND or BAD_PARAMETERS.
  • On success, grants is returned; each entry contains grantID and memberAccount.

Path

Headers

FieldTypeRequiredDescription
AuthorizationstringYesToken we provide
Content-TypestringYesmultipart/form-data

Request parameters

FieldTypeRequiredSignedDescription
channelIDnumberYes✓Channel ID (use 1 if you have no channels)
eventIDstringYes✓Event ID (24-character hex)
memberListstring[]Yes✓Member accounts (at least 1, no duplicates, no empty strings). In form-data, repeat the field once per value.
signstringYesSignature. See Signature for how to generate it

Response

Success (the HTTP status code is always 200; check status.code for the result)
FieldTypeDescription
dataobject
data.grantsobject[]Grant results (only present when the whole batch succeeds)
data.grants[].memberAccountstringMember account
data.grants[].grantIDstringGrant ID (24-character hex)
statusobjectResponse status. See Response format

Response example

Response codes

Besides the common codes, this API may also return: