DEVELOPER DOCUMENTATION
Privacy and Work Email
What identity data the API exposes at each stage, and why AI trainers are reachable only at their @opentrain.work Work Email.
The Public API applies one privacy rule consistently: names are always masked, and personal contact details are never revealed at all. Every API surface — proposals, profiles, contracts, platform events — shows a first name and last initial, never a full last name. Personal emails you never see — all platform-mediated contact happens through OpenTrain messaging or, for platform integrations, a managed @opentrain.work Work Email.
Masked Identity Everywhere
Section titled “Masked Identity Everywhere”Proposal candidates, AI trainer profiles, and contracts all expose a first name and last initial:
{ "candidate": { "id": "...", "displayName": "Ada L.", "firstName": "Ada", "lastNameInitial": "L.", "profileSlug": "ada-l-1a2b3c", "profileTitle": "Senior Data Annotator", "country": "United Kingdom", "countryCode": "GB" }}If a name is missing entirely, the API falls back to "Freelancer" rather than exposing anything else.
AI-interview transcripts are sanitized before they reach you — internal control markers are stripped, and an empty transcript reads "Interview completed.".
Post-Hire: Still Masked
Section titled “Post-Hire: Still Masked”Hiring does not unmask anyone. Contracts you’re party to show the same masked name:
{ "freelancer": { "userId": "...", "displayName": "Ada L.", "country": "United Kingdom", "profilePath": "/profile/ada-l-1a2b3c" }}Full names live only inside the OpenTrain app, where the platform controls how they’re displayed — they never cross the API boundary.
What Is Never Exposed
Section titled “What Is Never Exposed”The Public API returns no email field anywhere. Not pre-hire, not post-hire, not on profiles, proposals, contracts, messages, or team rosters. Personal email addresses, phone numbers, and off-platform contact details never leave the platform. To reach an AI trainer, use OpenTrain messaging — it notifies them through their own verified channels.
This is deliberate: it protects AI trainers from disintermediation and spam, and it means an agent integration can never accidentally leak a worker’s personal contact information, because it never has it.
Work Email: The Platform Exception
Section titled “Work Email: The Platform Exception”The Platform API has one carefully-gated channel for direct contact. When an annotation platform provisions a hired AI trainer into its own workspace, it may receive that person’s Work Email — a platform-issued address ending in @opentrain.work that OpenTrain manages and can revoke:
{ "contractId": "...", "participants": [ { "opentrainUserId": "...", "displayName": "Ada L.", "country": "United Kingdom", "profileUrl": "https://app.opentrain.ai/profile/ada-l-1a2b3c", "workEmail": "ada.1234@opentrain.work" } ]}workEmail is present only when both gates pass:
- The install holds the
participants:emailscope, and - The human granted PII consent when authorizing the install.
Otherwise the request fails 403:
{ "error": "Install has not granted PII consent for participant work emails", "code": "FORBIDDEN", "details": { "requiredScopes": ["participants:email"], "piiConsent": false }}Even then, only addresses with active provisioning and the @opentrain.work suffix are ever returned — a personal address can never slip through this path.
Designing Your Integration Around This
Section titled “Designing Your Integration Around This”- Key your records on stable IDs (
userId/opentrainUserId), never on display names — masked names are not unique and can change. - Don’t build flows that assume you can email candidates. Pre-hire outreach goes through the proposal conversation endpoint; post-hire communication through contract messaging.
- Platforms: treat Work Email as account provisioning material (workspace logins, assignment notifications), not as a general contact list. It’s consent-gated for a reason, and addresses are deactivated when contracts end.
- Never store or forward personal contact details an AI trainer might volunteer in a message — the platform guarantee works only if integrations uphold it too.