Troubleshooting
Common issues and solutions when working with the Vremly API.
Authentication Issues
"Missing or invalid JWT token" (401)
Cause: The Authorization header is missing, malformed, or the token has expired.
Solution:
- Verify the header format is
Authorization: Bearer <token>(note the space after "Bearer"). - Check that the token hasn't expired — re-authenticate via
/auth/loginto get a fresh token. - Ensure you're not accidentally including extra whitespace or newline characters in the token.
# Correct format
curl https://api.vremly.com/projects \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
"Not a member of the specified organization" (403)
Cause: The x-org-id header is missing or the authenticated user doesn't belong to that organization.
Solution:
- List your organizations to get valid IDs:
curl https://api.vremly.com/organizations \
-H "Authorization: Bearer <token>"
- Use a valid organization ID from the response in the
x-org-idheader.
OAuth token rejected
Cause: The third-party token (Google or Facebook) is invalid or expired.
Solution:
- Ensure the OAuth token is fresh — these tokens have short lifespans.
- Verify you're using the correct token type: Google requires an ID token, Facebook requires an access token.
Request Issues
"Bad Request" with validation errors (400)
Cause: Required fields are missing or have invalid values.
Solution: Check the message array in the response for specific field errors:
{
"statusCode": 400,
"message": [
"email must be an email",
"password must be at least 8 characters"
],
"error": "Bad Request"
}
Fix each listed validation error and retry.
"Conflict" (409)
Cause: A resource with the same unique identifier already exists (e.g., duplicate email during registration).
Solution: Use different values for the conflicting field, or log in to the existing account.
Rate Limiting
"Too Many Requests" (429)
Cause: You've exceeded the API rate limit (100 requests/minute per IP or 300/minute per user).
Solution:
- Read the
Retry-Afterheader to know how long to wait. - Implement exponential backoff in your integration.
- Cache GET responses to reduce redundant requests.
- Use batch endpoints where available.
# Check rate limit headers in any response
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1710500460