Platform Setup

API Authentication & Security

API key management, OAuth flows, rate limits, and security best practices.

4 min readUpdated 2025-01-11

BrightStar's API authenticates every request with an API key rather than a username-and-password login or a session cookie. That single decision shapes how you build against it: whether you're wiring a retreat's registration form into BrightStar, pulling attendee counts into a reporting dashboard, or connecting a check-in tablet at a kirtan door, the key you use is the identity the API sees for that connection. This guide covers the key types BrightStar issues, how authentication actually works on the wire, what the rate limits mean in practice, and what to do if a key ends up somewhere it shouldn't.

What are the different API key types, and why does it matter which one you use?

BrightStar issues three kinds of keys, and the difference between them is really a difference in blast radius if one leaks. A live key, prefixed bs_live_, has full read and write access and is meant for production — the application actually selling tickets or managing your event data. A test key, prefixed bs_test_, has the same full read/write permissions but only against sandbox data, so you can build and break things during development without touching a real event or a real attendee record. A read-only key, prefixed bs_read_, can't write anything at all, which is exactly what you want behind a reporting tool or an analytics dashboard that only needs to look at numbers — if that key ever leaks, there is nothing it can change. Choosing the narrowest key that does the job for a given integration is the simplest security decision available on this API, and it costs you nothing in day-to-day use.

How do you actually authenticate a request?

Every request carries its key as a bearer token: an Authorization header reading Bearer followed by the key itself, sent alongside a Content-Type of application/json to BrightStar's API base URL. A standard curl call or any ordinary HTTP client handles this without an SDK. In practice the endpoint is forgiving about exactly where the key shows up — the Authorization header, an X-API-KEY header, or an api_key query parameter, which is how tools like Zapier send it by default — and a stray repeated Bearer prefix gets stripped rather than causing the request to fail outright. Once BrightStar verifies the key, it resolves to the organizer account that owns it, and everything the request returns is scoped to that account's own data. That scoping is the real protection underneath all of this: a key can only ever act as the account it belongs to, and never reach across into someone else's events, registrations, or attendees.

What happens when you hit BrightStar's rate limits?

BrightStar limits each API key to 100 requests per minute and 1,000 per hour, with a burst allowance of 20 requests per second for short spikes. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, so you can see exactly how much room is left and when the window resets, rather than discovering the limit only after you've hit it. Limits are tracked per key and per endpoint, not across your whole account, and the allowance is generous relative to ordinary use — an integration polling every few minutes for updated registrations will never come close. Go over it and you'll get a 429 response carrying a Retry-After header telling you how many seconds to wait before trying again. Waiting that out, rather than retrying immediately, is the correct response and the fastest way back to normal service.

Most API key incidents aren't sophisticated break-ins — they're a key left somewhere it was never meant to be, like committed into a public repository or pasted into client-side JavaScript anyone can view. Part of why BrightStar can afford to be strict here is that the full key value is shown to you exactly once, at creation; after that, only a hash and a short display prefix are kept, and each key's last-used timestamp is recorded so you can see which ones are still active. The habits below close off the common ways a key gets loose in the first place:

What do you do if a key is compromised?

If you suspect a key has leaked — pushed to a public repo, exposed in a log, shared with the wrong person — treat it as compromised immediately rather than waiting for evidence of misuse. Go to Settings, then API Keys, then Revoke, and cut the key off. Generate a new key and update every application that was using the old one; other keys on your account keep working, so revoking one doesn't force you to rotate everything at once. BrightStar notes that compromised keys may lead to account suspension, which is one more reason to act the moment you suspect exposure rather than after you've confirmed damage.

Common questions

How do I authenticate with the BrightStar API?

BrightStar's API uses API keys sent as a bearer token in the Authorization header, for example Authorization: Bearer followed by your key. Requests go to the BrightStar API base URL with a Content-Type of application/json, so a standard cURL or HTTP client call works without any extra SDK.

Read more

Keys carry a bsk_ prefix followed by 32 random bytes, and the key material itself is the secret, so there is no separate signing step to get right. The endpoint is deliberately forgiving about where the key arrives: the Authorization header, an X-API-KEY header, or an api_key query parameter, which is what Zapier sends by default, and stray repeated Bearer prefixes are stripped rather than rejected. Verification resolves the key to the organizer who owns it, and every response is then scoped to that account's own data.

What types of API keys does BrightStar offer?

BrightStar issues three key types. Live keys use the bs_live_ prefix and have full read and write access for production applications. Test keys use the bs_test_ prefix and have full read and write access against sandbox data for development and testing. Read-only keys use the bs_read_ prefix and are limited to read access, which suits analytics dashboards and reporting.

Read more

The point of splitting keys this way is containment: a test key can never touch a real attendee record no matter what code runs against it, and a read-only key can never be used to alter an event even if it ends up in the wrong hands. Matching the key type to the job — production, development, or reporting — limits what a single leaked credential could actually do.

What are the BrightStar API rate limits?

The standard BrightStar limits are 100 requests per minute per API key and 1,000 requests per hour per API key, with a burst allowance of 20 requests per second. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers so you can track your remaining quota and when it resets.

Read more

The burst allowance exists specifically so a short spike — a check-in app scanning several tickets back to back — doesn't trip the per-minute ceiling. Because the reset value is a Unix timestamp rather than a countdown, you can calculate exactly when your quota refreshes instead of guessing. Limits apply per key, so splitting integrations across separate keys keeps one busy connection from eating another's headroom.

What happens if I exceed the API rate limit?

BrightStar returns a 429 response when you exceed the rate limit. The correct handling is to wait the number of seconds given in the Retry-After header before retrying, rather than retrying immediately.

Read more

The limiter counts per key and per endpoint rather than across the whole account, and the allowance is generous relative to a polling integration: a connection checking every few minutes will not come close. The 429 carries a Retry-After header expressed in whole seconds, which is the value to wait on. It is worth knowing that the counter is held in memory on the instance serving the request and is best-effort, so it is a guard against a misbehaving loop rather than a precise quota to budget against.

How should I store and rotate my BrightStar API keys?

Never expose BrightStar API keys in client-side code; store them in environment variables and use test keys in development environments. BrightStar recommends rotating keys every 90 days, monitoring API usage for anomalies, implementing IP allowlists for server-side access and using webhook signatures to verify authenticity.

Read more

The strongest protection is that BrightStar cannot leak a key it does not hold. The full value is returned exactly once at creation and never written down; what is kept is a hash of it plus a short display prefix, and verification works by hashing whatever was presented and looking that up. That also means a key cannot be retrieved later, so rotation is always issue-new-then-revoke-old rather than re-reading the existing one. Each key records when it was last used, which shows which ones are still wired into something.

What do I do if my API key is leaked?

Revoke it immediately in BrightStar under Settings, then API Keys, then Revoke. Generate a new key and update your applications to use it. Compromised keys may result in account suspension, so act as soon as you suspect exposure.

Read more

Revocation takes effect at the next request rather than on a schedule, because verification resolves a key by looking it up and a revoked record simply stops resolving. Nothing else has to be rotated alongside it, and other keys on the account keep working, which is the argument for issuing one key per connection instead of reusing a single key everywhere. Requests served are logged against the key that made them, so it is possible to see what a compromised key actually pulled before it was cut off. Keys are created and revoked from the integrations page in the dashboard.

Ready to get started?

Create your first event on EveryEvent Bangkok — it’s free.