# JevShield API reference

JevShield classifies contact-form messages before your server forwards them. Keep your API key on your server. Generate a key after signing in at https://jevshield.com/account.

## Check a message

POST https://jevshield.com/api/v1/check

Headers: Content-Type: application/json; x-api-key: YOUR_API_KEY

```json
{"text":"Can you quote this project?","email":"visitor@example.com"}
```

`text` accepts up to 10,000 characters. Supply a nonempty text or email. Optional `business_context` accepts up to 1,000 characters describing wanted inquiries; it is sent to the model. `email` and `name` are optional. Optional `site` is an HTTP/HTTPS URL (only its hostname is retained in logs); `form_id` accepts up to 80 letters, numbers, underscores, colons or hyphens.

## Interpret the response

- `verdict`: allow, review or block. Review means uncertain, not an automatic rejection.
- `score`, `reason`: classification score and explanation. Rules scores are heuristic, not calibrated probabilities.
- `model`: provider model version on successful AI responses.
- `engine`: jev or rules. Provider failure can fall back to rules.
- `execution_time_ms`: API processing duration, not complete form-to-email latency.
- `quota_remaining`: account checks remaining.
- `check_id`, `report_token`: present when detection logging succeeds; keep the report token on your server.
- `logging_status`: saved or unavailable. Logging failure does not change the classification.

Your integration decides whether to send, hold or reject. An allow verdict does not establish sender identity. There is no hosted inbox or quarantine queue.

## Errors

400 invalid input; 401 missing API key; 403 invalid key; 429 quota exhausted; 503 unavailable. Handle errors explicitly in your integration.

## Logs and execution reports

Account logs cover the last 7 days. Filter `Uncertain — review` to inspect uncertain check results. Logs do not hold, resend or restore messages. Message text storage is off by default, with an account opt-in. Public demo checks are excluded. Message processing is required even when text storage is off.

After applying a decision, POST https://jevshield.com/api/v1/report with the same API key:

```json
{"check_id":"CHECK_UUID","report_token":"TOKEN_FROM_CHECK","action":"allowed","reason":"verdict"}
```

Actions: allowed, blocked, error_allowed. Reasons: verdict, threshold, uncertain, service_error, observe, trusted_sender. Tokens expire after 10 minutes. Identical retries are accepted; conflicting actions are rejected. Reporting uses no detection quota. Reported execution does not prove email delivery.

## Observe before blocking

For custom API integrations, observation is implemented by your receiver: call the check endpoint, record its verdict, continue your normal submission flow, then report the action you applied. The check API does not toggle blocking in your form. Use `action: "allowed"` and `reason: "observe"` only when your integration allowed the submission without enforcing the verdict. Observation still processes submitted content and consumes detection quota.

The latest [JevShield WordPress plugin ZIP](https://jevshield.com/jevshield-ai-anti-spam.zip) includes a Protection Mode setting. New installations use Observe only; existing configured installations keep blocking until the administrator changes the setting. The plugin reports its action automatically when a report token is available. Check the recorded verdict, execution and actual delivery before choosing Block high-confidence spam. WordPress.org releases may follow the website ZIP; update if Protection Mode is missing.

The legacy FormShield plugin retains its existing settings and update path. Its business-context and exact-email override settings are not part of the JevShield plugin. The `business_context` API field and execution report reasons remain available for custom integrations.

## Plans

USD per month: Free 100 checks at $0; Starter 5,000 at $9; Pro 25,000 at $29; Agency 100,000 at $69. No automatic overage charges. See https://jevshield.com/pricing for purchase terms.

## Further reading

- [Full integration guide](https://jevshield.com/docs)
- [Privacy](https://jevshield.com/privacy)
- [Terms](https://jevshield.com/terms)

Observation and logging guidance updated September 27, 2026.
