API tokens
Electrik uses Laravel Sanctum personal access tokens. Users create and revoke tokens from Settings → API tokens.
Personal vs team tokens
A token is either:
- Personal — scoped to the user only, no
team_id. - Team — carries a
team_id. Requests run throughelectrik.token-team, which switches current team + Spatie context before your route runs.
Creating a team token requires tokens.manage (or ownership). Tokens support expiry presets (never|7|30|90|365) and show last_used_at when present.
Abilities
Abilities come from config('electrik.api_tokens.abilities'). Guard routes with:
Route::get('/reports', ReportsController::class)
->middleware('electrik.ability:read,*');
A token with * always passes. Session/web auth (no token) also passes, so the same route works for browser and API clients.
Built-in API routes
Registered under api + prefix api:
| Method | Path | Ability |
|---|---|---|
GET |
/api/electrik/me |
read or * |
GET |
/api/electrik/team |
read or * |
GET |
/api/electrik/members |
read or * |
POST |
/api/electrik/usage |
write, billing:write, or * |
/me
Returns id, email, name, token meta (abilities, last_used_at, expires_at), and current team.
curl -H "Authorization: Bearer <token>" https://your-app.test/api/electrik/me
/usage
Reports metered Stripe usage for the current team:
curl -X POST https://your-app.test/api/electrik/usage \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"stripe_price_id":"price_xxx","quantity":5}'
Throttling
Electrik ensures throttle:api on the api group and registers a default 60/min limiter named api if the host app never defined one.
OpenAPI (optional)
composer require dedoc/scramble
Suggested in Electrik’s composer.json; not required.