Skip to main content
This page maps TurnCall’s privacy and security controls to the GDPR and then to HIPAA, so a security review can see which requirement each one helps you meet and where the work is still yours.
TurnCall holds no certification or attestation: not HIPAA, not SOC 2, not ISO 27001. Nothing here is legal advice. A self-hosted TurnCall is software you run, and whether your deployment complies is decided by how you run it and by your own counsel, not by this page. The controls help; they do not make a deployment compliant on their own.
What stays yours, in short: agreements with the vendors who hear your calls (DPAs, BAAs), the infrastructure TurnCall runs on, who can reach it, backups, the carrier’s own recording copy, the call record (whose numbers and metadata are neither redacted nor deleted by retention), text conversations (which retention does not cover yet), and audio (which redaction does not cover yet). What stays yours has the full list.

The controls

Some limits of these controls matter to a review:
  • Redaction is not anonymisation or de-identification. Recall is the detector’s: spelled-out numbers and misheard names are missed, and PERSON and dates are not in the default. Redacted data is still personal data, and redacted PHI is still PHI.
  • The call record is kept raw, and kept. GET /v1/calls/{id} returns the caller’s and called numbers and the call’s metadata as they were, whether or not the project redacts, and retention never deletes the call record. Only deleting the project removes it, at the purge.
  • A call live when redaction is turned on is partly raw. The transcript lines stored before the change stay as they were, in the transcript read and in that call’s call.ended.
  • Only project credentials are encrypted by TurnCall. Call data (recordings, transcripts, events, analysis) is stored as it is, so encrypt your database, volumes and bucket at rest. These secrets are stored unencrypted (#338): webhook subscriptions’ signing secrets, a phone number’s call-init server_url_secret, and in an agent’s config its server_url.secret, MCP servers’ headers and env, llm.api_key, static AWS keys in config.aws and a tool’s webhook_secret. Anyone with a database dump or backup can read them, and with a signing secret can sign a forged event or call-init request that your receivers accept. Keep provider keys in project credentials, and protect dumps and backups as you would the secrets.
  • Twilio and WhatsApp webhooks can go unverified. With no TWILIO_AUTH_TOKEN and no phone number bringing its own Twilio account, TurnCall accepts Twilio’s voice and SMS webhooks without checking their signature (#337). Without WHATSAPP_APP_SECRET, it accepts WhatsApp’s the same way (#339). Set both in production.
  • TurnCall does not refuse an http:// webhook URL (#340). Use https:// for webhooks, call-init and tools, and serve the API over TLS (the Helm chart’s Ingress does).

GDPR

Article numbers refer to Regulation (EU) 2016/679. You are the controller for your callers’ data, or a processor for your customer; either way, these controls support obligations that remain yours. Not covered by any control here:
  • Erasure on request (Art. 17). There is no route that deletes one call or one caller’s calls. Retention deletes by age, and never the call record. DELETE /v1/chat/sessions/{id} only ends a chat session: its messages stay. Deleting a project deletes its recordings at once and the rest of its data at the purge (PROJECT_PURGE_RETENTION_DAYS after the delete, 30 days by default; 0 turns the purge off, and the deleted project’s data is then kept). Answering an individual’s erasure request is yours, in your database and storage, and at your providers and carrier.
  • Access requests (Art. 15). The API reads a call’s record, transcript, events and recording by call id; finding every call of one person is yours.
  • Records of processing (Art. 30), DPIAs (Art. 35), breach notification (Art. 33 and 34) and telling callers they are being recorded and how their data is used (Art. 13) are yours.

HIPAA

Section numbers refer to 45 CFR Part 164: the Security Rule (Subpart C) and the Privacy Rule (Subpart E). If you handle protected health information (PHI) on behalf of a covered entity, you are its business associate; TurnCall, as software you run, is not. Access control (§164.312(a)(1)): API keys are scoped to a project and carry a role (admin, developer, viewer), and settings such as redaction, retention and the audit log need an admin key. A key is not a person, so unique user identification (§164.312(a)(2)(i)) needs one key per person or service.

What stays yours

  • Agreements with your vendors. Redaction never applies to what the agent hears: your STT, LLM and TTS providers receive the caller’s raw audio or words, and post-call analysis, takeaways and knowledge base embeddings send text to your LLM and embedding providers. A DPA (GDPR) or BAA (HIPAA) with each, and with your carrier (Twilio, Telnyx, your SIP trunk, Meta for WhatsApp), your cloud and your tracing backend, is yours. Your own call-init and tool servers receive raw values too. Running the LLM yourself (Ollama, or any OpenAI-compatible endpoint) removes one vendor; STT and TTS still go to the provider you choose.
  • The infrastructure. Encryption at rest of Postgres, Redis, volumes and the bucket; TLS at your ingress; network policy; patching; and the database owner, who can drop the audit log’s trigger.
  • Access control. Who holds admin keys, the platform key (PLATFORM_API_KEY), CREDENTIAL_ENCRYPTION_KEY and API_KEY_HASH_SECRET, and who can reach the database and storage directly.
  • The call record. Its numbers and metadata are kept as they were, not redacted, and retention never deletes it. Keep personal data out of metadata if you can, and remove records yourself when you must.
  • Backups. Retention deletes from the live database and storage, not from your backups, snapshots or replicas. Backing up, restoring and expiring them is yours.
  • The carrier’s recording copy. TurnCall records calls itself. If your carrier records them too, TurnCall deletes a Twilio copy it was told about, on an account it holds credentials for; any other copy stays with your carrier until you delete it there or turn carrier recording storage off. See Retention.
  • Text conversations. SMS, WhatsApp and Chat API conversations are redacted (stored redacted once a session ends) but not covered by retention yet. Neither are campaign targets, the suppression list, knowledge base documents or eval scenarios. Deleting a chat session keeps its messages.
  • Audio. Redaction is text only in this release: the recording is not bleeped. Keep it briefly with recordings_days.
  • Logs and webhook deliveries that already left the server, in your log pipeline and at your webhook receivers.
  • Callers’ rights and notices: erasure and access requests, recording-consent and AI-disclosure notices, breach notification, and your own risk analysis.