Customer API and Zapier
Connect Zapier with Sign in with Streakfox, or use an API key, to count member actions, look up streaks and subscribe to milestone and at-risk events.
The customer API powers the Streakfox Zapier app. You can also call it from any automation platform or backend that can send an Authorization header.
Connect Zapier
In Zapier, add a Streakfox step and choose Sign in. Sign in to Streakfox, check what Zapier will be able to do, and choose Allow. There's no key to copy.
Zapier can reach every project you can. To cut it off, open any program's Connections tab and choose Disconnect next to Zapier under Connected apps. That stops its access straight away and removes every zap subscription it made.
Use an API key
For Make, n8n or your own code, open Use an API key instead on the Connections tab and choose Create API key. The key starts with sfx_api_, and Streakfox shows it once.
A key can reach every program in the workspace it was created in. It never expires. Use Manage API keys → Disconnect to revoke it; this also removes every subscription created with it. Streakfox stores only a hash of the key.
The Zapier app
| Type | Name | What it does |
|---|---|---|
| Trigger | Milestone Achieved | A member reaches a milestone, like 7 or 30 days. |
| Trigger | Reward Unlocked | A member earns a milestone that has a reward attached. |
| Trigger | Streak At Risk | A new day starts and the member hasn't kept their streak alive yet. |
| Trigger | Streak Broken | The member missed a full day and the streak ended. |
| Action | Record Member Action | Counts an action toward the member's streak. |
| Search | Find Member Streak | Looks up a member's current and best streak. |
Triggers are instant. Streakfox sends milestone and reward events as soon as the action is processed. At-risk and broken checks run hourly. Triggers follow the same rules as follow-up webhooks: they only fire for live programs, and never for members in a Proof control group.
Adding or removing a zap trigger changes what members experience. Like any follow-up change, it ends a running Proof experiment for that program.
REST endpoints
All endpoints live under https://api.streakfox.com/v1/api and need Authorization: Bearer <token>, using an API key (sfx_api_...) or an OAuth access token (sfx_oat_...).
| Method | Path | Purpose |
|---|---|---|
GET | /me | The account the key belongs to. |
GET | /programs | Programs the key can reach, with id, name, eventKey, status and project. |
POST | /programs/{programId}/events | Count a member action. |
GET | /programs/{programId}/members/{userHash} | A member's streak. |
POST | /hooks | Subscribe a URL to webhook events. |
DELETE | /hooks/{subscriptionId} | Remove a subscription. |
GET | /programs/{programId}/webhook-samples?type= | Recent payloads for one event type, or a sample. |
Count an action
curl -X POST https://api.streakfox.com/v1/api/programs/$PROGRAM_ID/events \
-H "Authorization: Bearer $STREAKFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"userHash": "member_123", "idempotencyKey": "lesson-completion-987"}'| Field | Required | Description |
|---|---|---|
userHash | ✅ | Stable member ID. Hash emails before sending them. |
idempotencyKey | ❌ | Retries with the same key count once. |
ts | ❌ | ISO 8601 time of the action. Defaults to now. |
meta | ❌ | Up to 4 KB of details. |
externalService, integrationId | ❌ | Source labels for Insights. |
test | ❌ | true counts the action as test progress. |
Returns 202 with counted: true. If the program is in test mode and test is not set, it returns counted: false with reason: "PROGRAM_NOT_LIVE".
Subscribe to events
curl -X POST https://api.streakfox.com/v1/api/hooks \
-H "Authorization: Bearer $STREAKFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"programId": "'$PROGRAM_ID'", "url": "https://example.com/streakfox", "eventTypes": ["streak.at_risk"]}'The URL must use HTTPS. The response includes a secret; deliveries are signed with it exactly like follow-up webhooks. If your receiver answers 410 Gone, Streakfox removes the subscription.