API
Authentication and keys
Create, rotate and revoke HackathonRadar API keys, send them in the Authorization header, and check a key with the validate endpoint
Every API request is authenticated with an API key sent as a bearer token. You create and delete keys yourself at /settings/api-access.
Create a key
Open API Access
Go to /settings/api-access while signed in to your Enterprise account.Name the key
Type a name in the Key name field. Name it after the system that will use it, such ascrm-syncorstaging, so you can tell keys apart later.Generate
Click Generate. A green New API Key Created box shows the full key with a copy button.Store it now
Copy the key into your secret manager. The page warns "Save this key now. You won't be able to see it again." Once you close the box, the full key is never shown again.
Keys start with hr_. Each key in the list shows its name, when it was created and, once used, when it was last used.
Send the key
Put the key in the Authorization header with the Bearer prefix, exactly like this:
Authorization: Bearer hr_your_key_herecurl https://www.hackathonradar.com/api/stats \
-H "Authorization: Bearer $HACKATHONRADAR_API_KEY"The Bearer prefix is case sensitive and needs the space. Keys in the query string are not accepted. Call https://www.hackathonradar.com, not the bare domain, because most clients drop the header when they follow the redirect.
| Problem | Status | error value |
|---|---|---|
No header, or it does not start with Bearer | 401 | Missing or invalid authorization header |
| Key not recognized, or deleted | 401 | Invalid API key |
| The key could not be checked | 401 | Authentication failed |
Every successful request updates the key's Last used time on the settings page.
Check a key with the validate endpoint
POST /api/api-keys/validate tells you whether a key is live without touching any data. It takes the key in the JSON body, not in a header.
curl -X POST https://www.hackathonradar.com/api/api-keys/validate \
-H "Content-Type: application/json" \
-d '{"api_key": "hr_your_key_here"}'{
"valid": true,
"userId": "user_2abc...",
"keyId": "3f1c2b9e-..."
}A body without api_key returns 400 API key is required. An unknown or deleted key returns 401 Invalid API key. Use it in a health check or at deploy time to catch a bad secret before your first real call. A successful check also updates Last used.
Rotate a key
There is no rotate button. Rotation is three steps, with no downtime:
Generate a replacement
Create a new key with a name that marks it as the successor, such ascrm-sync-2026-10.Deploy it
Swap the new key into your system and confirm requests succeed. The old key keeps working until you delete it.Delete the old key
Click the trash icon next to the old key. Its Last used time is a quick check that nothing still depends on it.
Revoke a key
Click the trash icon next to a key on /settings/api-access. The key stops working straight away, and requests with it return 401 Invalid API key. Deletion cannot be undone, so generate a new key if you need access again.
When your plan changes
Managing keys needs Enterprise. If your plan drops below Enterprise, /settings/api-access shows the upgrade screen and you can no longer generate or delete keys there, so delete any keys you no longer need before you change plans.
Keep keys safe
- Keep keys on the server. Never ship one in browser code, a mobile app or a public repository.
- Use one key per system or environment, so you can revoke one without breaking the rest.
- Store keys in your platform's secret store, not in your code.
- Delete keys that show no recent Last used time.
- If a key leaks, delete it first, then generate a replacement.
Every key acts as your account. Inbound submissions, suppression rules and saved views created with a key belong to the account that owns it, and every key on that account can read them.