Workspace Management
Workspaces are the foundation of every CarvOS integration. Each workspace maps one of your clients (tenants) to a CarvOS organization. You must provision a workspace before you can push candidates, vacancies, applications, or use meeting intelligence for that client.
Prerequisites¶
- Completed the Quick Start (API key, webhook receiver configured)
- Incoming and outgoing webhook secrets from the Self-Service Portal
Entity Mapping¶
CarvOS maps your ATS identifiers to internal entities:
| Your ATS | CarvOS | Sent Via |
|---|---|---|
Client (client_id) |
Workspace | X-ATS-Client-ID header |
User (user_id) |
Member | X-ATS-User-ID header |
Every API request includes these headers so CarvOS knows which workspace and member the operation belongs to.
Step 1: Create a Workspace¶
Workspace creation includes an initial admin member. Provide the admin's name and email alongside the workspace details — the admin is provisioned automatically.
curl -X POST "https://api.carvos.io/v1/webhooks/your-ats-id" \
-H "X-Webhook-Signature: t=1234567890,v1=abc123..." \
-H "Content-Type: application/json" \
-d '{
"event": "workspace.created",
"event_id": "evt-ws-001",
"client_id": "acme-corp",
"user_id": "admin-user",
"name": "Acme Corp",
"admin_name": "Admin User",
"admin_email": "admin@acme.com"
}'
Warning
Wait for the workspace.provisioned outgoing webhook before sending any
entities to this workspace. Requests sent before provisioning completes
will fail.
See the API Reference for the full schema.
Step 2: Add Members¶
Each user in your client's organization who will interact with CarvOS (e.g., recruiters, hiring managers) should be added as a member:
curl -X POST "https://api.carvos.io/v1/workspaces/acme-corp/members" \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"user_id": "recruiter-001",
"name": "Jane Smith",
"email": "jane@acme.com"
}'
CarvOS confirms with a workspace.member_added outgoing webhook.
See the API Reference for the full member schema.
Step 3: Use the Workspace¶
Once provisioned, use the workspace's client_id in request headers to push
entities:
curl -X POST "https://api.carvos.io/v1/candidates" \
-H "X-API-Key: your-api-key" \
-H "X-ATS-Client-ID: acme-corp" \
-H "X-ATS-User-ID: recruiter-001" \
-H "Content-Type: application/json" \
-d '{ ... }'
All entities (candidates, vacancies, applications) are scoped to the workspace
identified by X-ATS-Client-ID.
Managing Workspaces¶
Updating¶
Update workspace details via the workspace.updated incoming webhook or the
REST API.
Removing Members¶
Remove members via the member.deleted incoming webhook or the
REST API.
Deleting¶
Delete a workspace via the workspace.deleted incoming webhook or the
REST API.
This removes the workspace and all its members.
Outgoing Events Reference¶
| Event | When |
|---|---|
workspace.provisioned |
Workspace is ready for use |
workspace.member_added |
Member added to workspace |
For full event payload schemas, see the API Reference.
Incoming Events Reference¶
| Event | When |
|---|---|
workspace.created |
Create a new workspace |
workspace.updated |
Update workspace details |
workspace.deleted |
Remove a workspace |
member.created |
Add a member |
member.deleted |
Remove a member |
Next Steps¶
-
Application Scoring
Push candidates, vacancies, and get scored applications
-
Meeting Intelligence
Get transcripts, summaries, and notes from meetings