Platform & Partners

Tenant Admin

What tenant admins (workspace users) can do in the recruiter portal, and how they see credentials provisioned by their platform admin.

Tenant admins are regular workspace users with the admin role within their customer workspace. They interact with Teamcast through the Recruiter Console (/recruiter), not the Platform Console. Their permissions are scoped to their own tenant — they cannot see or modify data belonging to other tenants.

Dashboard redirect

After login, a user whose roleDiscriminator is tenant_user is redirected to /recruiter. The sidebar items visible to them are determined by their permissions[]array, just like the Platform Console.

Recruiter console capabilities

AreaPathWhat the tenant admin can do
Jobs/recruiter/jobsCreate, edit, archive job openings; set interview plan parameters
Candidates/recruiter/jobs/:id/candidatesAdd candidates, view pipeline, track interview status
Plan review (HITL-1)/recruiter/assessmentApprove or reject AI-generated interview plans
Assessment review (HITL-2)/recruiter/assessment/:idReview coverage summary, flag issues, close interviews
Analytics/recruiter/analyticsRole-level coverage profiles and pipeline analytics
API Keys/recruiter/integrations/api-keysView and manage API keys for their workspace
Webhooks/recruiter/integrations/webhooksConfigure a webhook endpoint for interview events
OAuth Apps/recruiter/integrations/oauth-clientsManage OAuth 2.1 clients for their workspace

Integration credentials visibility

API keys, webhook configs, and OAuth clients created by the platform admin for a customer tenant appear in that tenant's /recruiter/integrations pages alongside any self-provisioned credentials. There is no visual distinction — they share the same list.

TabReads fromCan tenant admin manage?
API KeysGET /api-keysYes — can create, edit, revoke (within their own permissions)
WebhooksGET /me/webhook-configYes — can upsert or delete (requires webhook:update permission)
OAuth AppsGET /oauth-clientsYes — can create and manage TENANT-audience clients
API keys are stored under the tenant's tenantId regardless of who created them. A key created by the platform admin for Liha is indistinguishable from one Liha's admin created themselves — both are returned by GET /api-keys when called with Liha's session.

API key permissions available to tenant users

Tenant admins cannot grant an API key more permissions than they hold themselves (the self-serve escalation guard in ApiKeyController.create). The default set used by the UI is:

PermissionWhat the API key can do
interview:createSubmit a new interview request via the A2A endpoint
interview:readRead interview details, status, and assessment results
interview:approveApprove or reject interview plans (HITL-1) via API
interview:updateUpdate interview metadata (job description, candidate info)
candidate:readRead candidate profiles linked to interviews
recording:readDownload interview recordings
webhook:readRead webhook delivery logs
platform:* permissions can never be embedded in an API key, regardless of who creates it. This is enforced server-side.

LinkedIn POC: using a platform-provisioned key

In the LinkedIn POC, the platform admin (LinkedIn) provisions an API key for the customer workspace (e.g. Liha) from the Platform Console. To wire up the POC instance to use this key:

  1. Create the API key for Liha in /admin/integrations/api-keys — copy the raw key (shown once).
  2. Set TEAMCAST_API_KEY=tc_live_... in the POC's .env.
  3. All tc-core operations in the POC will now run in Liha's tenant context — interviews, candidates, assessments, and webhook events are all scoped to Liha.
Was this page helpful?