Data storage
SafeFetch stores the following data for each action:| Field | Stored | Notes |
|---|---|---|
body | ✅ | The request body you send when creating an action |
headers | ✅ | Custom headers you attach to the action |
response_body | ✅ | The response from your target API |
response_code | ✅ | HTTP status code from your target API |
url | ✅ | The target URL |
callback | ✅ | Where results are forwarded (if set) |
Best practices
Don’t put raw secrets in action bodies
Instead of:Don’t put auth tokens in custom headers unless necessary
If your endpoint requires authentication, prefer a pre-shared token that your endpoint validates, not a token with broad permissions:Use HMAC verification on your endpoints
Every SafeFetch delivery includes anX-SafeFetch-Signature header. Always verify it:
Transport security
- All connections to the SafeFetch API are over HTTPS/TLS
- Deliveries are always made over HTTPS (HTTP targets are rejected)
- Database connections use TLS with certificate verification
Encryption at rest
All data is encrypted at rest.Access control
- Each account has its own API key
- All API queries are scoped by
account_id— you can only access your own actions - API keys are stored as hashed values (not plaintext) in the database
Coming soon
These features are planned for future releases.
Redacted responses
redact_response is enabled, SafeFetch stores the status code and duration but discards the response body. Useful when your endpoint returns sensitive data (PII, financial records, health data) that shouldn’t be retained.
Retention TTL
1d, 7d, 30d, 90d.
Per-account body encryption
Encryptbody, headers, and response_body with a per-account key. Even if the database is compromised, action data is unreadable without the account’s encryption key. Available on Team and Enterprise plans.