- Blitz Rocket API DocumentationGetting StartedAPI ReferenceWebhooksReferral Tracking
Bonus Actions
Retrieve and complete bonus actions for contest entries
On this page
Bonus Actions
Bonus actions are tasks that participants can complete to earn extra points in a contest. Use these endpoints to retrieve available bonus actions and mark them as completed.
Get Bonus Actions
/api/v1/entries/:entryId/bonus-actionsRetrieve all bonus actions for a specific entry, including their completion status.
Path Parameters
entryIdstring required The unique entry identifier. Use 'lookup' with query params to find by email.
Query Parameters (when entryId is "lookup")
emailstring required Email address to look up
contestIdstring required Contest ID to look up within
Request
# By entry ID
curl -X GET https://blitzrocket.com/api/v1/entries/entry_abc123/bonus-actions \
-H "x-api-key: your_api_key_here"
# By email lookup
curl -X GET "https://blitzrocket.com/api/v1/entries/lookup/[email protected]&contestId=clx1abc123" \
-H "x-api-key: your_api_key_here"
// By entry ID
const entryId = "entry_abc123";
const response = await fetch(
`https://blitzrocket.com/api/v1/entries/${entryId}/bonus-actions`,
{
headers: { "x-api-key": "your_api_key_here" },
}
);
const { data } = await response.json();
console.log(`${data.bonusActionsCompleted}/${data.bonusActionsTotal} completed`);
console.log(data.actions);
import requests
# By entry ID
entry_id = "entry_abc123"
response = requests.get(
f"https://blitzrocket.com/api/v1/entries/{entry_id}/bonus-actions",
headers={"x-api-key": "your_api_key_here"}
)
data = response.json()["data"]
print(f"{data['bonusActionsCompleted']}/{data['bonusActionsTotal']} completed")
print(data["actions"])
Response
{
"success": true,
"data": {
"entryId": "entry_abc123",
"email": "[email protected]",
"totalPoints": 150,
"bonusActionsCompleted": 2,
"bonusActionsTotal": 5,
"bonusPointsEarned": 30,
"actions": [
{
"id": "ba_001",
"action": "follow_twitter",
"description": "Follow us on Twitter",
"icon": "twitter",
"iconColor": "#1DA1F2",
"points": 10,
"confirmationType": "auto",
"destinationUrl": "https://twitter.com/blitzrocket",
"order": 1,
"completed": true,
"completedAt": "2025-06-15T12:00:00.000Z",
"completionStatus": "verified"
},
{
"id": "ba_002",
"action": "share_referral",
"description": "Share your referral link",
"icon": "share",
"iconColor": "#10B981",
"points": 20,
"confirmationType": "manual",
"destinationUrl": null,
"order": 2,
"completed": true,
"completedAt": "2025-06-16T09:30:00.000Z",
"completionStatus": "verified"
},
{
"id": "ba_003",
"action": "visit_website",
"description": "Visit our product page",
"icon": "link",
"iconColor": "#6366F1",
"points": 5,
"confirmationType": "click",
"destinationUrl": "https://example.com/product",
"order": 3,
"completed": false,
"completedAt": null,
"completionStatus": null
}
]
}
}
Response Fields
entryIdstringThe entry identifier
emailstringParticipant email
totalPointsnumberTotal points for the entry
bonusActionsCompletednumberNumber of completed bonus actions
bonusActionsTotalnumberTotal number of available bonus actions
bonusPointsEarnednumberPoints earned from bonus actions
actions[].idstringUnique identifier for the bonus action
actions[].actionstringAction type identifier
actions[].pointsnumberPoints awarded for completing this action
actions[].completedbooleanWhether this action has been completed
Complete Bonus Action
/api/v1/entries/:entryId/bonus-actions/:bonusActionId/completeMark a bonus action as completed for an entry and award the associated points.
Path Parameters
entryIdstring required The unique entry identifier
bonusActionIdstring required The unique bonus action identifier
Request Body
proofstringProof of completion (optional, e.g., screenshot URL)
answerstringAnswer for quiz-type bonus actions (optional)
Request
curl -X POST https://blitzrocket.com/api/v1/entries/entry_abc123/bonus-actions/ba_003/complete \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{}'
const entryId = "entry_abc123";
const bonusActionId = "ba_003";
const response = await fetch(
`https://blitzrocket.com/api/v1/entries/${entryId}/bonus-actions/${bonusActionId}/complete`,
{
method: "POST",
headers: {
"x-api-key": "your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const { data } = await response.json();
if (data.alreadyCompleted) {
console.log("Action was already completed");
} else {
console.log(`+${data.pointsAdded} points! New total: ${data.newTotalPoints}`);
}
import requests
entry_id = "entry_abc123"
bonus_action_id = "ba_003"
response = requests.post(
f"https://blitzrocket.com/api/v1/entries/{entry_id}/bonus-actions/{bonus_action_id}/complete",
headers={
"x-api-key": "your_api_key_here",
"Content-Type": "application/json"
},
json={}
)
data = response.json()["data"]
if data["alreadyCompleted"]:
print("Action was already completed")
else:
print(f"+{data['pointsAdded']} points! New total: {data['newTotalPoints']}")
Response (New Completion)
{
"success": true,
"data": {
"alreadyCompleted": false,
"completedAt": "2025-06-17T14:00:00.000Z",
"pointsAdded": 5,
"newTotalPoints": 155,
"message": "Bonus action completed successfully."
}
}
Response (Already Completed)
{
"success": true,
"data": {
"alreadyCompleted": true,
"completedAt": "2025-06-15T12:00:00.000Z",
"message": "This bonus action has already been completed."
}
}
Error Responses
| Status | Error | Description |
|---|---|---|
400 | Missing entryId or bonusActionId | Both path parameters are required |
401 | Invalid API key | API key is missing or invalid |
404 | Entry or bonus action not found | The specified resource does not exist |