Authorization header. The pattern is straightforward and follows IETF RFC 6750, but a few specifics about how Volunteer’s tokens are issued and managed matter for partner integrations.
This page covers obtaining the token, using it on every request, storing it securely, rotating it, and handling auth failures.
At a glance
Obtaining a token
Volunteer tokens are issued by the customer (or their VOMO concierge) — not by the partner integration. The flow:Confirm API access is enabled for the customer's VOMO account
The customer's VOMO administrator generates a token in the admin portal
The customer provides the token to the partner integration
The partner stores the token securely
Using the token
Every authenticated request includes the token in theAuthorization header:
Bearer (with a trailing space) followed by the token. Don’t omit the space; don’t include extra characters before or after.
In code
Storing the token
Tokens grant full access to the customer’s VOMO data. Treat them with the same care as production database passwords.Production: secrets manager
vomo-integration/{customerId}/api-token) makes per-customer auditing and access control straightforward.
Local development: environment variables
For a developer’s local machine, an environment variable in a.env file is acceptable:
.env to .gitignore. Never commit it to source control.
Anti-patterns
Several token-handling patterns that look reasonable but cause production issues:Per-customer isolation
The Volunteer token is scoped to a single VOMO organization — the organization whose administrator generated it. A token for “Wayne Foundation” can only read Wayne Foundation’s data; it cannot read or write any other customer’s data. For partner integrations serving multiple customers, this means one token per customer. The integration code looks up the right token for the customer it’s currently serving.What happens if you use the wrong token
If you accidentally use Customer A’s token while calling endpoints scoped to Customer B’s data, the response depends on how VOMO authorizes:- For data in Customer A’s organization, the call succeeds.
- For data outside Customer A’s organization, the call typically returns
403 Forbiddenor404 Not Found.
Token rotation
Tokens should be rotated periodically — typically every 90 days for high-stakes integrations, every 6–12 months for lower-stakes ones. The rotation flow:The customer's VOMO administrator generates a new token
The customer provides the new token to the partner
The partner stores the new token alongside the old one
The partner switches to the new token
Confirm requests succeed with the new token
401 errors that would indicate a problem.The customer revokes the old token in VOMO
The partner removes the old token from the secrets manager
Handling auth failures
A401 Unauthorized response from any endpoint means the token isn’t being accepted. Common causes:
A defensive pattern
401. Retries against an invalid token just produce more 401s and noise. Pause the customer’s work and alert.
See Error Handling for the full error-classification pattern.
Handling permission errors
A403 Forbidden response indicates the token is valid but doesn’t have permission for the specific endpoint or resource. Causes:
401, 403 should not be retried. It’s a permission issue, not a transient failure.
Local development setup
For developers building or debugging integrations locally:Coordinate with the customer to set up a development environment
Receive a dedicated development token
Store the token in a `.env` file (gitignored)
Make a test call to confirm everything works
GET /v1/users?per_page=1 is a minimal validation request.When the work is done, revoke the development token
A simple dev test
Compliance considerations
For partner integrations operating in regulated jurisdictions:Auth checklist
Walk through this when integrating with a new customer:- API access is enabled for the customer’s VOMO account
- The customer’s administrator has issued a Bearer token through the admin portal
- The token is stored in a secrets manager (production) or
.envfile (dev) - The token is never logged in plaintext
- One token per customer — no sharing across customers
- HTTPS is used for every request (not HTTP)
401and403handling pauses work rather than retrying- Token rotation is scheduled and tracked
- Customer offboarding includes token revocation
- Audit logs capture token read operations
Where to go next
Base URLs
/v1/ versioning convention.