Skip to content

Getting Started

Base URL: https://api.redfolderresearch.com

We use token-based auth. We’ll provide you with a master token, which you use once to generate user tokens via POST /api/auth/login/. From there, all requests use that user token in the Authorization: Token <your_token> header. No OAuth flows or session management needed.

Exchange your master token for a user token. Contact your designated support person to receive your master token.

Terminal window
curl -X POST https://api.redfolderresearch.com/api/auth/login/ \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token <your master token>" \
-d '{"token_name": "My Integration"}'

The response also includes an “expiry” field — null for these tokens (they do not expire).

Use the user token for all subsequent API requests. You do not use the master token for anything other than generating user tokens.

Terminal window
# Verify authentication with the ping endpoint
curl https://api.redfolderresearch.com/ping_with_auth/ \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token <your user token>"

User tokens do not expire — they persist until explicitly revoked via POST /api/auth/logout/. Logout revokes the token used to authenticate that request, so call it with the user token you want to revoke — the master token cannot revoke user tokens. For most integrations, you generate a single token once and use it for all subsequent API calls without needing to re-authenticate.

Recommended approach for automated integrations:

  1. Generate one user token during initial setup (Step 1 above)
  2. Store the token securely in your system (e.g., environment variable, secrets manager)
  3. Use that token for all API requests — no need to call login/logout again
  4. Only regenerate if the token is compromised or you need to rotate credentials

The token_name parameter in the login request is required (the call returns 400 without it) and does not affect permissions. Case attribution uses the cc_emails field in your submission payload; when cc_emails contains no valid email, the token’s token_name is used as a fallback only if it is itself an email address — otherwise the case has no reporter attribution, so always populate cc_emails.