← Back to Tutorials
Overview
Learn the complete workflow: get simulations → assign to users → generate tokens → track completion.
Duration: 25 minutes | Level: Intermediate
Prerequisites
- ✅ API key
- ✅ Organization ID
- ✅ User ID (or use
/v2/access-api/user/create to create one)
Complete Workflow
Step 1: Get Available Simulations
curl -X POST https://api.symtrain.com/v2/access-api/simulation/library \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "your-org-id",
"userId": "user-id"
}'
Response:
{
"simulations": [
{
"id": "sim-123",
"title": "Customer Service Basics",
"type": "audio",
"duration": "10-15 minutes",
"description": "Learn fundamental customer service skills"
}
]
}
Step 2: Assign Simulation to User
curl -X POST https://api.symtrain.com/v2/access-api/simulation/assignment \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "your-org-id",
"userId": "user-id",
"simulationId": "sim-123",
"assign": true
}'
Response:
{
"success": true,
"simulationId": "sim-123",
"deepLink": "https://symtrain.com/your-org-id/simulation/sim-123"
}
Step 3: Generate User Access Token
curl -X POST https://api.symtrain.com/v2/access-api/user/token \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "your-org-id",
"userId": "user-id"
}'
Response:
{
"token": "eyJhbGciOiJIUzI1...",
"expiresIn": 3600
}
Token valid for 1 hour.
Step 4: Create Complete Deep-link
Combine the deep-link with the token:
https://symtrain.com/your-org-id/simulation/sim-123?token=eyJhbGciOiJIUzI1...
Send this link to the user via email or your application.
Step 5: Track Completion Data
After the user completes the simulation:
curl -X POST https://api.symtrain.com/v2/access-api/simulation/completion-data \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "your-org-id",
"userId": "user-id",
"simulationId": "sim-123"
}'
Response:
{
"completionData": [
{
"executionId": "exec-456",
"completedAt": "2024-10-15T14:30:00Z",
"completionTime": 780,
"score": 85.5,
"status": "COMPLETED"
}
]
}
Key Fields:
completedAt: Completion timestamp (null if incomplete)
completionTime: Duration in seconds (null if incomplete)
score: Final score (only for completed attempts)
Complete Code Example
async function assignSimulationWorkflow(orgId, userId, simulationId) {
// 1. Assign simulation
const assignResponse = await fetch(
"https://api.symtrain.com/v2/access-api/simulation/assignment",
{
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
organizationId: orgId,
userId,
simulationId,
assign: true,
}),
}
);
const { deepLink } = await assignResponse.json();
// 2. Generate token
const tokenResponse = await fetch(
"https://api.symtrain.com/v2/access-api/user/token",
{
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ organizationId: orgId, userId }),
}
);
const { token } = await tokenResponse.json();
// 3. Create complete link
const completeLink = `${deepLink}?token=${token}`;
console.log("Send this link to the user:", completeLink);
return completeLink;
}
Testing
Best Practices
- Token Management: Tokens expire in 1 hour - generate fresh tokens if needed
- Deep-link Security: Don't store tokens long-term
- Completion Tracking: Poll completion-data after expected completion time
- Error Handling: Handle cases where user doesn't complete simulation
Next Steps
← Back to Tutorials
Last modified on