Integration API (A2A)

Privacy & Data

Coverage-only assessments, PII minimization, and on-demand erasure — by construction, not by policy.

No hire/no-hire label, ever. Teamcast never computes or transmits a score, a recommendation, a verdict, or any inferred emotion signal. This aligns with the EU AI Act's restrictions on emotion inference in employment contexts, and it is enforced twice: once by the deterministic scoring engine (there is no LLM anywhere in the scoring path, and no score is ever produced), and again by an egress guard that rejects any outbound assessment payload containing a forbidden field before it can be delivered or stored.

What every assessment payload can contain

FieldPresent
coverage_summary (sufficient / partial / insufficient)Yes
gap_competencies[]Yes
covered_count / total_countYes
highlights_count / lowlights_countYes (counts only, not content)
recording chunk references (expiring signed URLs)Yes, if recording is enabled
score / rating / percentageNever
recommendation / verdict / hire / decision / final_verdictNever — actively blocked
emotion, sentiment, or affect signalNever — not computed

The egress guard checks for exactly these forbidden keys before any assessment payload leaves the service — a bug that accidentally added one of them would fail closed rather than leak silently:

typescript
const FORBIDDEN_KEYS = ['recommendation', 'verdict', 'hire', 'decision', 'final_verdict'];

PII minimization

Use candidate_ref (your own opaque identifier) instead of candidate_name/candidate_email wherever your workflow allows it — Teamcast never requires a real name or email to run an interview, only *some* identifier to address the invite to.

On-demand erasure

DELETE /integration/interviews/:runId/candidate-data (or interview.rankings's sibling purge path) removes candidate PII in one transaction:

  • Resume text, candidate name, and candidate email are nulled on the interview record
  • Transcript and proctoring-event JSON are cleared
  • Any dead-lettered webhook payloads for the interview (which can carry the same PII) are deleted
  • A CandidatePurgeLog entry records that the erasure happened, with your reason
bash
curl -X DELETE https://devapi.teamcast.ai/api/v2/integration/interviews/run_.../candidate-data \
  -H "X-API-Key: sk_live_..." -H "X-Tenant-ID: tnt_8a21b6" \
  -d '{ "reason": "GDPR erasure request" }'

# → { "purged": true, "purged_at": "2026-07-05T09:12:03.000Z" }

Multi-tenant isolation

Every lookup by runId is additionally scoped by the resolved tenantId — a platform key with a valid X-Tenant-ID cannot address another tenant's runs, and a cross-tenant runId returns a plain 404 rather than a 403 (no existence leak). See Architecture → Multi-tenancy.

Was this page helpful?