ChatFlow Logo

How to Use Sentinel (Signup Protection)

Sentinel scores signups for fraud risk. Call its API with an email, domain, or IP and get back an allow, challenge, or block decision before a fake account reaches your product.

Sentinel is ChatFlow's signup-protection service. Your application calls Sentinel's API with an email address (and optionally a domain or IP) when someone signs up, and Sentinel returns a risk decision so you can stop fraudulent and throwaway accounts before they ever reach your product.

Sentinel is a separate product

Sentinel has its own dashboard, its own plans, and a free trial, separate from your ChatFlow chatbot account. You can sign in with the same email, but you onboard into Sentinel on its own. Inside the Sentinel dashboard, the manager roles (Account Manager and above) can view activity; managing API keys, lists, and billing is reserved for Admins and Owners.

How it works

  1. A visitor signs up on your site.
  2. Your app calls the Sentinel check endpoint with their email (and optionally domain or IP).
  3. Sentinel returns a risk level, a score, and a recommendation (allow, challenge, or block).
  4. Your app acts on the recommendation: let them in, ask for extra verification, or reject the signup.

Step 1: Create your Sentinel account and API key

1

Open Sentinel and onboard

Go to the Sentinel area and complete onboarding to create your Sentinel workspace. A free trial is available, and you can choose a plan later.

2

Create an API key

In the Sentinel dashboard, open API Keys and select Create Key. Give it a name (for example, "Production"). The full key is shown once, so copy it and store it somewhere safe. After that you only ever see its prefix.

3

Test the key

On the same page, use Test API Key: paste the key, enter an email, and run a check to see the risk response right in the dashboard. Test checks also appear in your Activity log.

Step 2: Call the check endpoint

Send a request to the check endpoint with your key in the Authorization header. You can pass an email, a domain, or an ip (at least one is required).

Check a signup
curl "https://chat-flow.app/api/sentinel/v1/[email protected]" \
  -H "Authorization: Bearer YOUR_API_KEY"

You can also send a POST with a JSON body, which is handy from server code:

POST variant
curl -X POST "https://chat-flow.app/api/sentinel/v1/check" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]", "ip": "203.0.113.10" }'

The response

Example response
{
  "risk_level": "high",
  "risk_score": 88,
  "recommendation": "block",
  "categories": ["disposable_email", "no_mx_records"],
  "blocked": true,
  "is_whitelisted": false,
  "is_blacklisted": false,
  "has_mx_records": false,
  "is_newly_registered": true,
  "domain_age_days": 3
}
FieldMeaning
risk_levelnone, low, medium, or high.
risk_scoreA number from 0 (safe) to 100 (high risk).
recommendationWhat to do: allow, allow_with_caution, challenge, or block.
categoriesThe reasons behind the score, such as a disposable email address, a flagged connection, or a match on your own lists.
blockedtrue only on the Shield plan when auto-block is on and the risk is high (see below).
is_whitelisted / is_blacklistedWhether the value matched one of your custom lists.
has_mx_records, is_newly_registered, domain_age_daysExtra signals about the email's domain that you can use in your own rules.

Step 3: Act on the decision

Use recommendation (or your own logic on risk_score) in your signup flow:

RecommendationSuggested action
allowLet the signup through normally.
allow_with_cautionAllow, but consider extra monitoring or a lighter verification step.
challengeAdd friction: email confirmation, a CAPTCHA, or manual review.
blockReject the signup.

Fail open

If a check ever fails or times out, let the signup proceed rather than blocking real customers. Treat Sentinel as a strong signal, not a single point of failure.

Other endpoints

  • Batch check at /api/sentinel/v1/check/batch scores several values in one request.
  • Status at /api/sentinel/v1/status confirms your key is healthy.

Tune results with custom lists

Open Custom Lists in the dashboard to keep your own blacklist (always block) and whitelist (always allow). Add an email, domain, or IP by hand, or bulk import and export with CSV. Your lists take priority, so a whitelisted address is always allowed and a blacklisted one is always blocked, regardless of the score.

Report threats with community submissions

Under Submissions you can report a bad email, domain, or IP with a reason. Submissions are reviewed, and approved ones help improve protection across Sentinel. Track the status of yours (pending, approved, rejected) on the same page.

Monitor what Sentinel is catching

  • The dashboard shows total checks, how many were blocked, challenged, and allowed, recent trends, and your top blocked domains.
  • The Activity Log holds the full history of checks. Search by value, filter by risk level or type (email, domain, IP) and date, and export to CSV for your own analysis.

Review the Activity Log regularly and adjust your custom lists as fraud patterns shift.

Plans

Sentinel has two plans, Basic and Shield. Both include unlimited checks, email, domain, and IP scoring, custom lists, and the monitoring dashboard. Shield adds unlimited list entries, community threat intelligence, webhooks, auto-block, advanced analytics, and priority support. Current pricing and a plan comparison are shown in Settings → Subscription in the Sentinel dashboard.

Shield: auto-block

On Shield you can turn on auto-block high-risk signups in Settings. When it is on, the check response sets blocked: true for high-risk results, so your app can reject them on that flag alone.

Shield: webhooks

On Shield, Sentinel can post to a URL you control whenever a risky check comes in, so you can log it, alert your team, or trigger extra verification without polling the API. Configure and test the webhook in Settings.

Verify it's working

  1. Create an API key and run a check from Test API Key with a known throwaway address. You should see a high risk level.
  2. Run a check with a normal business email and confirm it comes back low risk.
  3. Open the Activity Log and confirm both checks appear.
  4. Add a test address to your whitelist and confirm a check for it now returns allowed.

Troubleshooting

A legitimate signup was flagged

Add the address or its domain to your whitelist, or treat challenge as a verification step rather than an outright block. Use the Activity Log to see which categories triggered the score.

My checks are not appearing in the Activity Log

The log records checks made with a valid, active key. Confirm the key is active in API Keys and that your Authorization header is Bearer YOUR_API_KEY.

I got a 400 error

The request needs at least one of email, domain, or ip. For the POST variant, make sure the body is valid JSON and the Content-Type is application/json.

My plan shows expired

Open Settings → Subscription in the Sentinel dashboard and manage your billing there.