Bonus Actions

Retrieve and complete bonus actions for contest entries

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

GET/api/v1/entries/:entryId/bonus-actions
Public or Private API Key

Retrieve 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

entryIdstring

The entry identifier

emailstring

Participant email

totalPointsnumber

Total points for the entry

bonusActionsCompletednumber

Number of completed bonus actions

bonusActionsTotalnumber

Total number of available bonus actions

bonusPointsEarnednumber

Points earned from bonus actions

actions[].idstring

Unique identifier for the bonus action

actions[].actionstring

Action type identifier

actions[].pointsnumber

Points awarded for completing this action

actions[].completedboolean

Whether this action has been completed


Complete Bonus Action

POST/api/v1/entries/:entryId/bonus-actions/:bonusActionId/complete
Public or Private API Key

Mark 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

proofstring

Proof of completion (optional, e.g., screenshot URL)

answerstring

Answer 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

StatusErrorDescription
400Missing entryId or bonusActionIdBoth path parameters are required
401Invalid API keyAPI key is missing or invalid
404Entry or bonus action not foundThe specified resource does not exist