# Authentication Source: https://docs.exec.com/api-reference/authentication Create and use API keys to authenticate requests All API requests require authentication using an API key. Keys are created in your workspace settings and provide full admin access to your workspace data. ## Creating an API Key From your workspace, click on **Settings** in the sidebar, then select **API**. Click the **Create API Key** button to open the creation dialog. Give your key a name that identifies its purpose, like "Production Integration" or "Analytics Dashboard". Your API key will be displayed **only once**. Copy it and store it securely before closing the dialog. API keys are shown only at creation time. If you lose a key, you'll need to create a new one. ## Using Your API Key Include your API key in the `Authorization` header of every request: ```bash theme={null} Authorization: Bearer exec_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` ### Example Request ```bash theme={null} curl -X GET "https://api.exec.com/rest/v1/workspace" \ -H "Authorization: Bearer exec_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` ## Key Format API keys follow this format: * **Prefix**: `exec_live_` * **Body**: 40 alphanumeric characters * **Example**: `exec_live_aB3dE5fG7hI9jK1lM3nO5pQ7rS9tU1vW3xY5zA7b` ## Managing Keys ### Viewing Keys In **Settings > API**, you'll see a table of all your API keys showing: * Key name * Last 4 characters (for identification) * Status (Active/Inactive) * Creation date * Last used timestamp ### Deactivating a Key If a key is compromised or no longer needed: 1. Click the **...** menu on the key row 2. Select **Deactivate** Deactivated keys are immediately rejected. You can reactivate them later if needed. ### Deleting a Key To permanently remove a key: 1. Click the **...** menu on the key row 2. Select **Delete** Deleting a key is permanent and cannot be undone. Any integrations using the key will stop working immediately. ## Security Best Practices Use environment variables or secrets management Name keys by purpose so you know what to revoke Create new keys and deactivate old ones regularly Only share keys with systems that need them ## Error Responses | Status | Error | Cause | | ------ | ---------------------------- | ------------------------------------- | | `401` | Missing Authorization header | No `Authorization` header provided | | `401` | Invalid or inactive API key | Key is wrong, deactivated, or deleted | | `403` | Workspace is inactive | Your workspace has been disabled | # List collections Source: https://docs.exec.com/api-reference/collections/list-collections /api-reference/openapi.yaml get /collections Returns a paginated list of collections in the workspace, ordered alphabetically by name. Collections group related scenarios together (e.g. "Procurement Scenarios", "Onboarding"). Use collection IDs to filter sessions, skills, and scenario analytics by collection. # Get folder Source: https://docs.exec.com/api-reference/knowledge-hub--folders/get-folder /api-reference/openapi.yaml get /knowledge-hub/folders/{folder_id} Returns a single Knowledge Hub folder by its UUID. # List folders Source: https://docs.exec.com/api-reference/knowledge-hub--folders/list-folders /api-reference/openapi.yaml get /knowledge-hub/folders Returns a paginated list of Knowledge Hub folders (also called Spaces or Hubs) in the workspace. Folders group pages and sources, and can be nested to form a hierarchy. Pass `parent` to list the direct children of a folder, or omit it to list every folder in the workspace. API keys are workspace-scoped and admin-created, so the response includes every non-archived folder regardless of its visibility scope. # Archive page Source: https://docs.exec.com/api-reference/knowledge-hub--pages/archive-page /api-reference/openapi.yaml delete /knowledge-hub/pages/{page_id} Archives (soft-deletes) a page. The page is hidden from lists but its history is preserved. # Create page Source: https://docs.exec.com/api-reference/knowledge-hub--pages/create-page /api-reference/openapi.yaml post /knowledge-hub/pages Creates a Knowledge Hub page. New pages go through the draft → publish version flow: set `status` to `published` to publish immediately, or `draft` (the default) to save without publishing. Returns the created page with its body (`201`). # Get page Source: https://docs.exec.com/api-reference/knowledge-hub--pages/get-page /api-reference/openapi.yaml get /knowledge-hub/pages/{page_id} Returns a single page with its published markdown body, attached sources, skills, and version info. Use `?include=draft` to also return the current draft body (`draft.title` and `draft.content`). # List page versions Source: https://docs.exec.com/api-reference/knowledge-hub--pages/list-page-versions /api-reference/openapi.yaml get /knowledge-hub/pages/{page_id}/versions Returns the version history for a page, newest first. # List pages Source: https://docs.exec.com/api-reference/knowledge-hub--pages/list-pages /api-reference/openapi.yaml get /knowledge-hub/pages Returns a paginated list of Knowledge Hub pages. List rows are metadata only — the page body is omitted. Fetch a single page to get its content. Filter by folder, status, owner, skill, free-text query, or update-date range. Results are sorted by `updated_at` (newest first) by default. API keys are workspace-scoped and admin-created, so the response includes every non-archived page in the workspace — including private and draft pages — regardless of visibility. # Update page Source: https://docs.exec.com/api-reference/knowledge-hub--pages/update-page /api-reference/openapi.yaml patch /knowledge-hub/pages/{page_id} Updates a page. Only the fields you provide are changed; omitted fields are left untouched. Editing `content` creates a new draft; set `status` to `published` to publish the new version. `PUT` is also accepted and behaves the same way. # Create source Source: https://docs.exec.com/api-reference/knowledge-hub--sources/create-source /api-reference/openapi.yaml post /knowledge-hub/sources Creates a Knowledge Hub source from a URL. Text extraction runs asynchronously, so the source is returned with `status: pending` or `processing`; poll the detail endpoint until `status` is `ready`. URL sources are de-duplicated within the workspace: if the URL already exists, the existing source is returned with status `200` instead of `201`. > File upload via the REST API is not yet supported — use URL ingest. # Delete source Source: https://docs.exec.com/api-reference/knowledge-hub--sources/delete-source /api-reference/openapi.yaml delete /knowledge-hub/sources/{source_id} Archives (soft-deletes) a source. # Get source Source: https://docs.exec.com/api-reference/knowledge-hub--sources/get-source /api-reference/openapi.yaml get /knowledge-hub/sources/{source_id} Returns a single source by its UUID. Use `?include=content` to fetch the extracted text (read from object storage — heavier, so opt-in). # List sources Source: https://docs.exec.com/api-reference/knowledge-hub--sources/list-sources /api-reference/openapi.yaml get /knowledge-hub/sources Returns a paginated list of Knowledge Hub sources. List rows are metadata only — pass `?include=content` on the detail endpoint to fetch the extracted text. Filter by type, status, folder, or free-text query. # API Overview Source: https://docs.exec.com/api-reference/overview Programmatic access to your Exec workspace The Exec API provides programmatic access to your workspace data. Use it to integrate Exec with your internal tools, build custom dashboards, automate training workflows, or power AI agents that manage your enablement programs. ## What You Can Do Pull roleplay session data with scores, transcripts, and evaluation feedback Track skill proficiency across your team with time-decay weighted scoring Monitor assignment status, completion, and scores Get aggregate performance metrics, participant tables, and rank distributions List collections and filter scenarios by collection List scenarios, filter by skill, check access, and assign to users List and manage folders, pages, and sources, and read their content Create scenarios programmatically or via interactive sessions Access members, groups, and workspace configuration ## Base URL All API requests use the following base URL: ```text theme={null} https://api.exec.com/rest/v1/ ``` ## Authentication Every request requires an API key in the `Authorization` header: ```bash theme={null} Authorization: Bearer exec_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` Learn how to create and use API keys ## Response Format All responses are JSON. List endpoints return paginated data: ```json theme={null} { "data": [...], "pagination": { "page": 1, "page_size": 50, "total_count": 128, "total_pages": 3 } } ``` Errors return appropriate HTTP status codes with structured error information: ```json theme={null} { "error": { "type": "invalid_request", "code": "user_not_found", "message": "No user found with email: unknown@example.com" } } ``` ## Credit Costs Most endpoints are free to call. The exception is scenario creation: each scenario created through the Scenario Studio endpoints costs **150 [platform credits](/platform/platform-credits)**, charged when the job is accepted. If your workspace doesn't have enough credits, the request returns `402` with the code `insufficient_credits` and no job is created. Reading, listing, and analytics endpoints never consume credits. ## Rate Limits API requests are rate-limited to ensure service stability: * **Burst limit**: 60 requests per minute * **Sustained limit**: 1,000 requests per day * **Scenario creation**: 10 requests per minute (higher cost operations) Rate-limited responses return `429` with a `retry_after` field indicating when to retry. ## Filtering Tips Most analytics endpoints accept these common filters: * **`user_ids`** / **`user_emails`** — filter by specific users (emails are resolved server-side) * **`group_ids`** — filter by workspace group membership * **`scenario_ids`** / **`collection_ids`** — filter by specific scenarios or collections * **`skill_ids`** — filter by skills evaluated * **`start_date`** / **`end_date`** — filter by date range (ISO 8601) All ID parameters accept UUIDs (the same IDs returned by list endpoints). ## Coming Soon We're actively expanding the API. Planned additions include: * Program management and reporting * Webhook integrations for real-time events * Call scoring data Contact us at [hello@exec.com](mailto:hello@exec.com) if you have specific API needs. # Quickstart Source: https://docs.exec.com/api-reference/quickstart Make your first API request in 2 minutes Get up and running with the Exec API in just a few steps. ## Prerequisites You have an Exec workspace with admin access ## Step 1: Create an API Key Navigate to your workspace settings and click **API** in the sidebar. Click **Create API Key**, enter a name like "Quickstart Test", and click **Create**. Copy the displayed key immediately. It looks like `exec_live_aB3dE5...` ## Step 2: Make Your First Request Open a terminal and run this command, replacing `YOUR_API_KEY` with the key you copied: ```bash cURL theme={null} curl -X GET "https://api.exec.com/rest/v1/workspace" \ -H "Authorization: Bearer YOUR_API_KEY" ``` ```python Python theme={null} import requests response = requests.get( "https://api.exec.com/rest/v1/workspace", headers={"Authorization": "Bearer YOUR_API_KEY"} ) print(response.json()) ``` ```javascript JavaScript theme={null} fetch("https://api.exec.com/rest/v1/workspace", { headers: { "Authorization": "Bearer YOUR_API_KEY" } }) .then(res => res.json()) .then(data => console.log(data)); ``` ## Step 3: Check the Response You should receive a JSON response with your workspace information: ```json theme={null} { "id": "a1b2c3d4e5f6", "name": "Your Workspace Name", "url_slug": "your-workspace", "created_at": "2024-01-15T10:30:00Z" } ``` If you see your workspace data, you're all set! ## Troubleshooting * Check that your API key is correct and complete * Ensure the key hasn't been deactivated * Verify the `Bearer ` prefix is included (with the space) * Verify you're using the correct base URL: `https://api.exec.com/rest/v1/` * Check your network connection and firewall settings ## Next Steps Pull roleplay session scores, transcripts, and feedback See how your team is progressing on key skills Check assignment completion status and scores Get aggregate performance metrics for scenarios # Cancel Scenario job Source: https://docs.exec.com/api-reference/scenario-studio/cancel-scenario-job /api-reference/openapi.yaml delete /scenario-studio/jobs/{job_id} Cancels a scenario creation job that is queued or processing. - **Queued jobs**: Marked as cancelled immediately - **Processing jobs**: The background task is terminated and the job is marked cancelled - **Completed/failed/cancelled jobs**: Returns 400 error (cannot cancel terminal states) # Create Scenario job Source: https://docs.exec.com/api-reference/scenario-studio/create-scenario-job /api-reference/openapi.yaml post /scenario-studio/jobs Creates an asynchronous scenario creation job. Returns immediately with a job ID that can be polled for status. The AI agent processes the job in the background, typically completing within 5 minutes. Use the GET endpoint to poll for completion, or provide a `callback_url` to receive a webhook when the job finishes. **Remix mode**: Provide `scenario_slug` to create a variation of an existing scenario. The AI will use the source scenario as a starting point and apply your prompt as modifications. # Create Scenario Studio session Source: https://docs.exec.com/api-reference/scenario-studio/create-scenario-studio-session /api-reference/openapi.yaml post /scenario-studio Creates an interactive scenario creation session for a user. Returns a URL immediately that the user can visit to complete scenario creation in the Scenario Studio UI. The session is pre-populated with the provided prompt, so when the user opens the URL, the AI agent immediately begins processing their request. # Get Scenario job status Source: https://docs.exec.com/api-reference/scenario-studio/get-scenario-job-status /api-reference/openapi.yaml get /scenario-studio/jobs/{job_id} Returns the current status and result of a scenario creation job. Poll this endpoint to check job progress. Typical job duration is about 5 minutes. **Job statuses:** - `queued`: Job is waiting to be processed - `processing`: AI agent is actively creating the scenario - `completed`: Scenario created successfully (check `scenario` field) - `failed`: Job failed (check `error` field for details) - `cancelled`: Job was cancelled via DELETE # Assign scenario to user Source: https://docs.exec.com/api-reference/scenarios/assign-scenario-to-user /api-reference/openapi.yaml post /scenarios/{scenario_id}/assignments Assign a scenario to a user as a task or homework assignment. The user will receive notification of the assignment and can track their progress. # Check scenario access Source: https://docs.exec.com/api-reference/scenarios/check-scenario-access /api-reference/openapi.yaml get /scenarios/{scenario_id}/access Check if a user has access to a specific scenario and what permission level they have. # Get scenario analytics summary Source: https://docs.exec.com/api-reference/scenarios/get-scenario-analytics-summary /api-reference/openapi.yaml get /scenarios/{scenario_id}/analytics/summary Returns aggregate metrics for a scenario: participant count, total sessions, average best score and rank, average lift, total practice minutes, and average session duration. Accepts both UUID and slug for the scenario identifier. # Get scenario participant analytics Source: https://docs.exec.com/api-reference/scenarios/get-scenario-participant-analytics /api-reference/openapi.yaml get /scenarios/{scenario_id}/analytics/participants Returns a per-user performance table for a scenario with pagination and sorting. Shows each participant's first score, best score, lift, rank, session count, and total practice duration. # Grant scenario access Source: https://docs.exec.com/api-reference/scenarios/grant-scenario-access /api-reference/openapi.yaml post /scenarios/{scenario_id}/access Grant a user access to a specific scenario with a specified permission level. # List scenario assignments Source: https://docs.exec.com/api-reference/scenarios/list-scenario-assignments /api-reference/openapi.yaml get /scenarios/assignments Returns a paginated list of scenario assignments in the workspace. Assignments represent tasks given to users to practice specific scenarios. Each assignment tracks status (not_started, in_progress, completed, past_due, did_not_pass), best score, attempt count, and completion requirements. Filter by user, scenario, program, or status to find specific assignments. # List scenarios Source: https://docs.exec.com/api-reference/scenarios/list-scenarios /api-reference/openapi.yaml get /scenarios Returns a paginated list of scenarios in the workspace. By default, returns all scenarios in the workspace (admin view). Use filters to narrow down results by owner, visibility, or access. # Get session detail Source: https://docs.exec.com/api-reference/sessions/get-session-detail /api-reference/openapi.yaml get /sessions/{session_id} Returns full detail for a single roleplay session, including score, rank, duration, and feedback. Use the `include` parameter to fetch optional heavy fields like the full conversation transcript or evaluation criteria with grades. These are omitted by default to keep responses lean. # List roleplay sessions Source: https://docs.exec.com/api-reference/sessions/list-roleplay-sessions /api-reference/openapi.yaml get /sessions Returns a paginated list of roleplay sessions in the workspace with inline user and scenario data. Sessions represent individual practice attempts on AI roleplay scenarios. Each session includes the participant's score, rank, duration, and metadata. Use filters to narrow results by user, scenario, skill, program, group, or date range. Note: Sessions may include users who are no longer active workspace members (e.g., users who have been removed). These users will not appear in GET /workspace/members but their historical session data is preserved. Results are ordered by creation date (newest first) by default. # Get skill proficiency by user Source: https://docs.exec.com/api-reference/skills/get-skill-proficiency-by-user /api-reference/openapi.yaml get /skills/{skill_id}/proficiency Returns per-user proficiency data for a specific skill. Proficiency uses time-decay weighted scoring across all observations (roleplay sessions and calls combined). Recent observations count more than older ones (30-day half-life). A minimum of 3 observations is required before a proficiency score is calculated. Proficiency tiers: `excellent` (≥90), `proficient` (≥75), `developing` (≥50), `needs_work` (<50), `insufficient_data` (<3 observations). Only users with at least one observation are included in the response. If no user filters are provided, returns proficiency for all workspace members who have practiced this skill. # List skills Source: https://docs.exec.com/api-reference/skills/list-skills /api-reference/openapi.yaml get /skills Returns a paginated list of skills in the workspace, ordered alphabetically by name. Skills represent competencies that are evaluated during roleplay sessions and calls (e.g. "Discovery Questions", "Objection Handling", "Procurement Selling"). Each skill can be linked to evaluation criteria across multiple scenarios. Use `?include=proficiency` to add aggregate proficiency stats per skill (participant count, scored participant count, percentage proficient+, and average score). This is computed across all workspace members who have practiced each skill. # Get workspace info Source: https://docs.exec.com/api-reference/workspace/get-workspace-info /api-reference/openapi.yaml get /workspace Returns basic information about the authenticated workspace. # List workspace groups Source: https://docs.exec.com/api-reference/workspace/list-workspace-groups /api-reference/openapi.yaml get /workspace/groups Returns a paginated list of groups in the workspace. # List workspace members Source: https://docs.exec.com/api-reference/workspace/list-workspace-members /api-reference/openapi.yaml get /workspace/members Returns a paginated list of workspace members with basic user info. # Building Tips & Techniques Source: https://docs.exec.com/building-tips A grab-bag of small, copyable techniques for building, refining, and remixing roleplay scenarios Small, practical techniques for common building moments. Find the one that matches what you're trying to do, copy the example, and adapt it to your scenario. For ready-to-paste agent prompts, see the [Prompt Library](/prompt-library). For full walkthroughs, see [Creating Scenarios](/roleplays/ai-agent) and [Advanced Roleplay Building](/roleplays/advanced-building). | I want to... | Jump to | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | | Make a character sound human | [Natural speech](#natural-speech-patterns), [Response length](#control-response-length) | | Fix how a word is said | [Pronunciation rules](#pronunciation-rules) | | Stop the character over-asking | [Don't ask superfluous questions](#dont-ask-superfluous-questions) | | Keep reps from getting stuck | [Exit conditions](#define-exit-conditions), [Concession points](#define-a-concession-point) | | Stop interruptions during a pitch | [Phase the conversation](#phase-the-conversation) | | Make discovery harder | [Multi-level depth](#add-multi-level-discovery-depth) | | Write better grading | [Observable chains](#write-criteria-as-observable-chains), [Scenario-specific notes](#add-scenario-specific-scoring-notes) | | Spin up a variation | [Hard/easy variants](#make-a-hard-or-easy-variant), [Dynamic variables](#reuse-with-dynamic-variables) | | Figure out why it broke | [Diagnose from a transcript](#diagnose-a-stuck-conversation) | *** ## Character & Voice ### Make the persona specific Give the character a personality, a motivation, and a communication style, not just a job title. The more human they feel, the less robotic the conversation. > Do: "VP Finance, skeptical and efficiency-oriented, wants to pre-qualify on price before investing time." Don't: "VP Finance." Use a real personality type (for example DISC: Dominant, Influential, Steady, Conscientious) to keep buyers distinct. More on character fields in [Advanced Roleplay Building](/roleplays/advanced-building#shape-the-character). ### Write the opening line verbatim Write the character's first line in exact words so the AI doesn't improvise an off-base start. It sets the tone for the whole conversation. ### Natural speech patterns Make the character sound human with occasional filler and pauses. ```text theme={null} Use occasional filler words like "hmm," "well," "um," and natural pauses when thinking through a response. Don't overdo it. ``` ### Control response length Stop a character from monologuing or over-sharing. ```text theme={null} Keep responses to 1-2 sentences unless asked to elaborate. This is a busy manager on a call, not someone who monologues or overshares. ``` ### Pronunciation rules If the character mangles a product name or acronym, add a text guideline that spells out how to say it. ```text theme={null} Always pronounce "NCR" as "N-C-R" (three separate letters), never "nicker." Pronounce the product "Naviga" as "nuh-VEE-guh." ``` ### Segment variants The same buyer type behaves differently by company size. Spell out how an Enterprise buyer's motives differ from SMB or mid-market, or use [conditional context](/roleplays/conditional-context) to vary the character by the learner's profile. *** ## Conversation Behavior These live in the character's [Conversation Guidelines](/roleplays/conversation-guidelines), built from **text sections** (free-form rules like response length, speech, pronunciation) and **trigger sections** (a trigger plus leveled responses). ### Be explicit about objections List the specific pushbacks you want and when, or the AI invents objections that may not match your product. If you only want pressure on price and timeline, say so. ### "Don't ask superfluous questions" One of the highest-impact lines you can add. Without it the AI over-asks and creates dead ends. ```text theme={null} Don't ask superfluous questions. Accept what you're told unless it touches a point of resistance I've defined. ``` ### Define exit conditions If the rep must do something specific to advance (ask for the meeting, present ROI), say so, or reps get stuck waiting for a "magic phrase" the character is silently holding out for. ### Define a concession point Tell the AI when to soften, or it stays in objection mode forever. ```text theme={null} After the rep addresses the budget objection with at least two supporting points, become more open to discussing next steps. ``` ### Add multi-level discovery depth Make reps dig instead of accepting the first answer. Ask the agent to add levels to a response guideline. ```text theme={null} Level 1 (initial): guarded, deflects. Level 2 (if pressed well): shares generalities. Level 3 (only with excellent probing): shares specific numbers. ``` ### Add or edit text and trigger sections Reach for a **text section** for a general rule ("keep answers short") and a **trigger section** for a specific moment ("when asked about budget, respond like this"). You can add your own triggers and as many response levels as a moment needs. Full editor: [Conversation Guidelines](/roleplays/conversation-guidelines). ### Phase the conversation Nothing limits you to one trigger section. Use several, named for the stage they cover, when the character should behave differently at different points. This matters most when the rep presents a deck: without it, an inquisitive character keeps interrupting the pitch. ```text theme={null} Build separate trigger sections for the phases of this call: Phase 1 (introductions): probes, asks why we're here, stays guarded. Phase 2 (presentation): listening mode, short affirmations, no new objections or interruptions. Phase 3 (questions): re-engages and pushes back on what they heard. ``` Mention up front that the scenario involves presenting a slide deck and the agent usually builds this structure on its own. *** ## Evaluation Criteria ### Write observable behaviors, not vague qualities > Do: "Asks at least three open-ended questions about the prospect's workflow before presenting." Don't: "Demonstrates good discovery skills." ### Write criteria as observable chains Format a criterion as "rep does X, then Y, without Z." ```text theme={null} Rep does not quote a specific number, explains pricing structure only if pressed, and redirects to discovery within the first minute. ``` ### Add scenario-specific scoring notes Drop a note right into the Good / Fair / Poor text to override or supplement the default logic. ```text theme={null} Good: Rep establishes credibility with a relevant customer example. Scenario-specific: Rep can only earn Good if they confirm the timeline before discussing price. ``` Align the weighting to what the scenario is actually testing, and associate a [skill](/skills/overview) with each criterion so the results feed your analytics. Editing criteria: [Advanced Roleplay Building](/roleplays/advanced-building#fine-tune-the-evaluation-criteria). *** ## Editing & Variants ### Edit in place; Remix for variants Everything in a published scenario is editable in place, either directly or by telling the agent what to change: context, criteria, character identity and behavior, response guidelines, voice, personality, session settings. Reach for **Remix** only when you want a separate variant and the original kept intact. See [Edit a Scenario](/roleplays/edit-scenario) and [Remix a Scenario](/roleplays/remix-scenario). ### Make a hard or easy variant Remix and describe the change, keeping the original intact. ```text theme={null} Make a hard version of this scenario: the character is more resistant to sharing information and the grading is stricter. Keep the same character and context. ``` ### Reuse with dynamic variables Set a placeholder like company name once and have it update everywhere in the scenario, so you can reuse a scenario across teams or accounts without hand-editing every mention. ### Clone vs. Remix Use **Clone** to adapt someone else's scenario (for example from a shared collection) into your own; use **Remix** to create a variation of your own scenario while keeping the original. To change a scenario itself, use **Edit**. If you get stuck while editing, use **Revert** to return to a previous version. *** ## Testing & QA ### Test with Try Now before publishing Click **Try Now** for a quick conversation with the character. Check the opening line, whether resistance feels right, whether it reveals too much, and whether the flow gets stuck. ### Preview with a simulated transcript Don't always run it live. Ask the agent for a sample run to review in a couple of minutes. ```text theme={null} Generate a simulated transcript of a mid-tier (Fair) performance of this scenario so I can see where the conversation falls short of Good. ``` ### Diagnose a stuck conversation Paste a real transcript back to the agent and ask what went wrong. ```text theme={null} This is a conversation that happened. The rep got stuck here: [paste]. Why did this happen, and what in the scenario design caused it? ``` To fix it, open the scenario in **Edit** and paste the transcript with a note on what felt off. The agent makes targeted changes based on what actually happened. You can also ask the builder about its own blind spots before publishing. *** ## Planning Shortcuts * **Start with the moment, not the topic.** "Prospect pushes back on price during a procurement demo after seeing the proposal" beats "objection handling." Specific moments make realistic practice. * **Split long conversations.** Keep a scenario under about ten minutes; split longer ones at natural stopping points and match the character name, company, photo, and voice across parts so it feels continuous. * **Start simple, then layer.** Build the easy, cooperative version first, confirm it works, then edit in tougher objections, a more resistant persona, or time pressure. Remix instead if you want to keep the easy version as its own scenario. * **Feed a long brief in pieces.** If you've worked up a detailed briefing document, don't expect one large paste into the chat to come through intact. Add the document to the Knowledge Hub and point the agent at it as a [source](/roleplays/advanced-building#build-from-your-own-materials), prioritize the background, objectives, and context that matter most, then layer the rest in with focused instructions ("add this background to the character," "make sure the context includes these market conditions"). Anything that must appear in the scenario is worth naming explicitly. For the foundational planning model (the Four Pillars) and the build methods, see [Creating Scenarios](/roleplays/ai-agent). *** ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) for guidance on building scenarios or any questions about the Scenario Studio. # Call Categories and Scorecards Source: https://docs.exec.com/calls/categories-and-scorecards Define conversation types, the attributes you capture, and the scorecards calls are graded on Categories are the heart of call scoring. Each category is a type of conversation, and it defines what Exec captures from those calls (attributes), how it grades them (scorecards), and how it summarizes them. Manage them under **Settings > Calls > Categories**. ## Categories Categories are folders for your conversation types, such as **Sales**, **Prospecting**, **Customer Success**, **Customer Support**, **Internal**, and **Recruiting**. A templated set comes built in and is ready to use as-is; click **Create Category** to add your own with a name and description. Each category has an **Automatically analyze future calls in this category** toggle and three tabs: **Attributes**, **Scorecards**, and **Call Summaries**. When the toggle is on and Exec is confident a call belongs to that category, it labels, scores, and analyzes the call with no action from you. Because the first scoring of a call spends [platform credits](/platform/platform-credits), turning the toggle off on categories you care less about is the simplest way to control spend: those calls still import and get categorized, and you can score them individually whenever you want. The Call Categories list, each with its attribute and call counts It's common to turn off the default attributes you don't need and keep just the few that matter to your team. Toggle any attribute on or off from the Attributes tab. ## Attributes Attributes are the structured data Exec pulls out of each call in a category. Every attribute has a **Type** (**Single-Select**, **Multi-Select**, **Text**, or **True/False**) and instructions that tell the scoring system how to identify it. * A **call type** attribute (single-select) lists the conversation types within a category. Customer Success ships with options like onboarding and implementation, general check-in, strategic QBR, renewal and expansion, and at-risk escalation. Its instructions help Exec identify the category and the specific conversation type, and you can add, edit, or remove options. * An **objections raised** attribute can capture the objections that come up on sales calls, so you can see the most common ones across the workspace and decide what coaching or roleplays to build around them. Toggle attributes on or off, edit the built-in ones, or create your own to capture exactly what your team cares about - which products or features came up, deal stage, call outcome, key stakeholders mentioned. Whatever you capture here becomes a chart on the [category dashboard](/calls/review-scored-calls#the-calls-dashboard) and a filter in Call History, so add the attributes you actually want to slice performance by. ## Scorecards A category's **Scorecard** is where the actual evaluation criteria for call scoring live. Every category ships with a **base scorecard** already built out, covering things like preparation and context awareness, so calls start scoring before you configure anything. Build on it around what matters for that conversation type: discovery, handling objections, talk ratio, business value, introductions, closing and next steps. Each item works the same way as a roleplay's evaluation criteria, with four descriptions: | Field | What it describes | | ---------------------------- | ------------------------------------------------------------------------------------------------------------- | | **Good Performance** | What strong performance on this criterion looks like | | **Fair Performance** | Partial or inconsistent performance | | **Poor Performance** | What missing the mark looks like | | **Not Relevant for Grading** | When the criterion shouldn't be graded at all - if this situation comes up, the call isn't marked down for it | **Not Relevant for Grading** is worth filling in. Criteria graded not relevant are left out of the score calculation entirely, so a criterion that had no chance to come up on a call doesn't drag that call's score down. To write the descriptions quickly, enter a title (for example, "Objection handling") and click **Generate** - Exec drafts the Good, Fair, and Poor descriptions for you, and you edit from there. ### Skills, attribution, and weighting Three more settings on each scorecard item: * **Skills** - generate or associate a skill, so call performance feeds the same [skill analytics](/skills/analyze-performance) as roleplays. * **Attribution** - who the criterion is credited to. This is specific to call scoring; roleplays have no equivalent because there's only one learner. | Attribution | Behavior | | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | | **Speakers (whoever demonstrates this skill)** | Credits whichever team members actually demonstrated it. The default, and the right choice for most criteria. | | **All participants (everyone on the call)** | Credits every internal participant equally. Use for things the whole team owns together, like call structure. | | **Call-level only (don't track individually)** | Scores the call but attributes nothing to individuals, so it stays out of personal skill data. | * **Weighting** - **0 points**, **1 point**, **2 points**, or **4 points**. Higher-weighted criteria count for more in the call's score; **0 points** leaves the criterion out of the score calculation, so it's evaluated and shown but doesn't move the number. Use this to make things like booking next steps or active listening count for more than softer criteria. A handy shortcut: build a roleplay for the conversation first, then transfer its evaluation criteria into the call scorecard. ### Conditional criteria **Conditional criteria** are scorecard items that only apply when an attribute has a specific value, so a call gets graded on what's actually relevant to it. Most categories ship with some already: Customer Success, for example, has separate criteria for onboarding calls, QBRs, and renewals on top of its base scorecard. Click **Add conditional criteria**, select the attribute and the value, and build the items. Calls in that category get the base scorecard plus any conditional criteria matching their attributes. Only **Single-Select** attributes can drive conditional criteria, and each value can have one set of them. Values that already have criteria don't appear in the picker again. ### Archiving and deleting a category **Archive** a category you've stopped using: its calls keep their extracted attribute data, their scorecards are marked outdated rather than deleted, and you can recategorize those calls or re-activate the category at any time. **Delete** is permanent - its calls return to uncategorized and have to be recategorized and rescored from scratch. Archive unless you're sure. ## Call Summaries The **Call Summaries** tab is where you give instructions for how calls in this category should be summarized, including what to include and how to structure it. If you leave it blank, Exec uses a sensible default, similar to a roleplay session summary. ## Next step Once calls are importing and scoring, see [Review Scored Calls](/calls/review-scored-calls) to track performance. ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) for guidance on building categories and scorecards. # Microsoft Teams Call Sync Source: https://docs.exec.com/calls/microsoft-teams Connect Microsoft Teams so recorded meetings flow into Exec for scoring Connect Microsoft Teams to Exec and recorded meetings flow in automatically, get transcribed, categorized, and scored the same way as calls from Fireflies or Gong. See [Call Scoring Overview](/calls/overview) for what happens after a call arrives. The Teams connection lives on the same **Microsoft 365** credential that powers [OneDrive and SharePoint document sync](/knowledge-hub/microsoft-365-integration). Connecting Teams also lets you enable those surfaces without a second sign-in. ## Connection modes You can connect Teams in one of two ways. | Mode | Who can set it up | Which meetings sync | | --------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------ | | **Single user** | Any workspace member | Meetings the connected user organized or joined, from their OneDrive. | | **Organization-wide** | A Microsoft Entra admin | Recordings from every user in your tenant. Exec walks each user's OneDrive to find recordings organized by anyone. | Pick organization-wide if you want to score calls across the whole team, not just one person's meetings. ## Connecting as a single user Go to **Settings → Integrations** and scroll to the **Call Recorders** section. Click the **+** button on the **Microsoft Teams** card, then click **Connect**. Sign in to Microsoft and approve the requested permissions. Exec queues an initial import of past Teams recordings. New meetings appear in **Calls** as they finish recording. ## Connecting organization-wide Organization-wide connections use a **Microsoft Entra app registration** that your IT admin creates in your own tenant, so Exec can read recordings across every user without individual sign-ins. In the [Microsoft Entra admin center](https://entra.microsoft.com), create a new app registration for Exec. Add these application permissions and grant admin consent for your organization: * `User.Read.All` * `OnlineMeetingTranscript.Read.All` * `Files.Read.All` Add `Sites.Read.All` as well if you also want to enable SharePoint document sync on the same credential. Reading Teams transcripts also requires an application access policy. Run the following in PowerShell, replacing `` with your app registration's application (client) ID: ```powershell theme={null} New-CsApplicationAccessPolicy -Identity Exec-Transcripts -AppIds Grant-CsApplicationAccessPolicy -PolicyName Exec-Transcripts -Global ``` Under **Certificates & secrets**, create a client secret and copy its value. Save the tenant ID and application (client) ID as well. In **Settings → Integrations → Call Recorders**, open the **Microsoft Teams** card and click **Connect organization-wide**. Paste the **Directory (tenant) ID**, **Application (client) ID**, and **Client secret**, then click **Connect**. Exec validates the credentials against Microsoft Graph before saving the integration. If admin consent is missing or a required permission has not been granted, the connect step surfaces the error so you can fix it in Entra and retry. Admin consent alone is not enough for Teams transcripts. You must also grant the app a Teams application access policy in PowerShell — otherwise transcript downloads fail even though calls appear in Exec. ## What gets imported * **Recordings** — the meeting video from the organizer's OneDrive * **Transcripts** — Teams transcripts pulled from Microsoft Graph, with SharePoint transcripts used as a fallback * **Participants** — email addresses of everyone on the call, used by [Recognize Team Members](/calls/set-up-call-scoring#recognize-team-members) to decide who is a teammate versus a customer Organization-wide connections enumerate every user in the tenant and search each user's OneDrive, so recordings organized by anyone in the org are picked up. Imports deduplicate on the meeting ID, so re-running a sync never creates duplicate calls. ## Configuring what gets scored Teams recordings flow through the same import rules and scoring settings as every other call recorder. Once Teams is connected, configure the rest of call scoring in **Settings → Calls**: * [Set Up Call Scoring](/calls/set-up-call-scoring) — access rules, minimum duration, and how Exec recognizes team members versus customers * [Call Categories and Scorecards](/calls/categories-and-scorecards) — define the conversation types and how they are graded * [Review Scored Calls](/calls/review-scored-calls) — read a call's summary, transcript, and scorecard ## Getting help Questions about the Microsoft Teams integration? Contact us at [hello@exec.com](mailto:hello@exec.com). # Call Scoring Overview Source: https://docs.exec.com/calls/overview Record and score your team's real calls automatically, the same way roleplays are scored ## Video walkthrough ``` A few notes on the iframe attributes: * **`allow="storage-access"`** is required for Safari and other browsers that block third-party cookies by default. Without it, Safari users see a popup login prompt instead of an inline sign-in. * **`camera` and `microphone`** are required so learners can run voice roleplays inside the iframe. * **`clipboard-write`** lets learners copy transcripts and share links. The parent site must be served over HTTPS. Browsers reject cross-origin iframes on mixed-content pages. ## How sign-in works inside an iframe When a learner opens the parent site for the first time: 1. Exec loads inside the iframe and checks whether the learner already has a session. 2. If not signed in, and the browser allows third-party cookies, Exec shows the normal sign-in screen inline. 3. If the browser blocks third-party cookies (default in Safari), Exec opens a small popup for sign-in. Once the learner authenticates, the popup closes and the iframe refreshes automatically. SSO works the same way as outside an iframe — if your workspace has SSO enabled, the popup or inline flow redirects to your identity provider. ## Troubleshooting The embedding site's origin isn't in your allowed list. Copy the exact origin from the browser address bar (scheme + host + port, no path) and paste it into **Settings → Security → Iframe Embedding**. Changes take up to a minute to take effect. Add `allow="storage-access"` to the iframe tag on the parent site. Safari blocks third-party cookies by default, and the Storage Access API is how Exec requests permission to sign the learner in. Without this attribute, learners will see a popup sign-in instead. Make sure the origin uses `https://` (not `http://`), has no path or trailing slash, and matches the parent site exactly. `https://example.com` and `https://www.example.com` are different origins. Not today — the iframe loads the same UI as `https://your-workspace.exec.com`. You can deep-link to a specific roleplay or Skills page by pointing the `src` attribute at that URL. ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) for help setting up iframe embedding or choosing between iframe and [LTI 1.3](/lti/overview). # Login and Access Issues Source: https://docs.exec.com/platform/login-issues Fixes for invitation, password, and single sign-on problems that keep someone from logging in to Exec. If someone can't log in to Exec, the cause is almost always one of a few things: the email address on their account has a typo, their invitation or reset email landed in junk, they need to reset a password, or their workspace uses single sign-on (SSO). Work through the sections below in order. Most access problems are resolved by a workspace admin from **Settings > Users**. End users who are stuck should contact their own admin first, then [hello@exec.com](mailto:hello@exec.com) if that doesn't resolve it. *** ## Start Here: Confirm the Account Email Is Correct The single most common cause of "I can't log in" is a small typo in the email address entered when the account was created, for example an extra letter or the wrong domain. If the address is wrong, the invitation and every login or reset email go to an address the user can't reach, so they never get in. A workspace admin goes to **Settings > Users** and finds the person's account. Compare it against the address the user actually checks. Watch for extra letters, swapped characters, and the wrong domain. Fix the address and re-send the invitation. See [Add a New User](/platform/add-user) for the invite flow. Admins can correct a typo themselves. If the account's email needs to be changed to an entirely different address (not just a typo fix), contact [hello@exec.com](mailto:hello@exec.com) and we'll update it. *** ## "I Never Received My Invitation Email" When an organization adds someone to Exec, that person gets an email with the subject **"\[Your Organization] has invited you to join them on Exec"**. If it never arrives: The invitation often lands in a spam, junk, or "Other" folder. Search the mailbox for "Exec" before anything else. Have an admin verify the address on the Users page (see the section above). A typo is the most common reason the email never arrives. Corporate email security gateways sometimes quarantine the invite. Exec sends from **`mg.exec.com`**. Ask your IT or messaging team to allow that sender. See [Network and Email Whitelist Requirements](/platform/whitelist-requirements). Once the address is confirmed and the sender is allowed, an admin re-sends the invite from **Settings > Users**. See [Create Your Exec Account](/platform/create-account) for what the user does once the invitation arrives. *** ## "Email or Password Isn't Being Accepted" If you see **"The e-mail address and/or password you specified are not correct"**, the email is recognized but the password doesn't match. Reset it. ### Reset Your Password Open **Login to Exec** and enter your email, then click **Continue**. Once the password field appears, select the **Forgot your password?** link. On the **Reset Your Password** page, enter your email and click **Reset Password**. You'll see "Check your email to complete the password reset process." Follow the link in the email to set a new password, then log in. If the reset email doesn't arrive, check junk and confirm IT allows the **`mg.exec.com`** sender (see above). If you enter your email on the reset page and get redirected to your company's sign-on screen instead, your workspace uses SSO and there's no Exec password to reset. See the next section. *** ## Signing In With Google The login page includes a **Continue with Google** button. It matches your Google account to your Exec account by verified email, so you don't need an Exec password. If Google sign-in fails: * **"No Exec account uses this Google email yet."** There is no Exec account with your Google email address. Ask a workspace admin to invite that address, or log in with the email your account actually uses. * **"Google sign-in was cancelled."** You closed or declined Google's consent screen. Click **Continue with Google** and try again. * **You're redirected to your company's sign-on page instead.** Your workspace enforces SSO, so Google sign-in isn't available. Sign in through your identity provider (see the next section). Signing in with Google also confirms your email address, so you won't see the "set a password" banner. If you want a password too, use **Forgot your password?** on the login page to set one. *** ## Your Organization Uses Single Sign-On (SSO) If your workspace has SSO enabled, you don't use an Exec password at all. After you enter your email and click **Continue**, Exec sends you to your company's identity provider (Okta, Microsoft Entra ID, Google Workspace, etc.) to sign in. Once SSO is enabled for a workspace, it is the only way to log in. If SSO login fails: * **You reach your identity provider but can't sign in there.** This is an account issue on your organization's side. Contact your internal IT or identity team, not Exec. * **You're not sent to SSO at all, or get an error before the provider loads.** Confirm you're using your corporate email address. If it still fails, contact [hello@exec.com](mailto:hello@exec.com). SSO alone does not create accounts. A user must be both allowed in your identity provider and present in the Exec workspace. For automatic provisioning, see [Single Sign-On and Directory Sync](/sso-directory-sync). *** ## "Your Account Is Not Associated With Any Workspace" This message means the login succeeded but the account isn't attached to a workspace, usually because the person hasn't been invited yet or was removed. A workspace admin should confirm the user exists under **Settings > Users** and re-invite if needed. If the user should have access and doesn't, contact [hello@exec.com](mailto:hello@exec.com). *** ## "Too Many Attempts" or a Temporary Lock After several failed login attempts, Exec temporarily blocks further tries to protect the account. Wait a few minutes and try again, and use **Forgot your password?** rather than guessing, so you're not locked out repeatedly. *** ## Still Can't Log In? If you've confirmed the email is correct, reset the password (or used SSO), and the user still can't get in: A workspace admin confirms the account exists and is set up under **Settings > Users**. Have the user try a different browser (Chrome is most reliable) or an incognito window. A corporate firewall can also block Exec. See [Network and Email Whitelist Requirements](/platform/whitelist-requirements) for the domains IT needs to allow. If access still fails, contact [hello@exec.com](mailto:hello@exec.com) with the user's email and what they've already tried. *** ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) for assistance with login, invitations, or workspace access. # Plans and Feature Availability Source: https://docs.exec.com/platform/plans What each Exec plan includes, where the limits are, and how to upgrade Exec has four plans: **Free**, **Starter**, **Professional**, and **Enterprise**. This page lays out what each one includes, so you can see exactly where your current plan stops and what the next one adds. ## Plan Comparison | | Free | Starter | Professional | Enterprise | | -------------------------------------------------- | -------------------------- | --------------------------- | ------------------- | ------------- | | **Price** | \$0 | \$120/month or \$1,200/year | \$7,020/year | Custom | | **Roleplay sessions** | 5 per year | Unlimited | Unlimited | Unlimited | | **Custom scenarios** | 2 | 50 | 50 | Custom | | **Seats** | 1 admin + 3 basic seats | Up to 50 | Up to 200 | Unlimited | | **Groups** | | 5 | 50 | Custom | | **Call Scoring** | Usage-based | Usage-based | Usage-based | Usage-based | | [**Platform credits**](/platform/platform-credits) | 500 once | 500/seat/mo | 750/seat/mo | 1,000/seat/mo | | **Programs** | | Up to 5 active | ✓ | ✓ | | **Courses** | Up to 2 | Up to 10 | Up to 50 | Unlimited | | **AI Coach** | | | ✓ | ✓ | | **Certifications** | | | ✓ | ✓ | | **Coaching, roleplay & skill analytics** | | | ✓ | ✓ | | **Screen sharing in roleplays** | | | ✓ | ✓ | | **SSO & directory sync** | | | | ✓ | | **Custom skills ontology** | | | | ✓ | | **How to buy** | Default for new workspaces | Self-serve checkout | Self-serve checkout | Talk to sales | *** ## Free Every new workspace starts on the Free plan. It includes: * **2 custom scenarios**, built in Scenario Studio and graded on criteria you control * **5 roleplay sessions per year** * **1 admin and 3 basic seats** * **Up to 2 [courses](/courses/overview)** and a one-time bonus of platform credits to try [AI course generation](/courses/generate-with-ai) * [**Call Scoring**](/calls/overview), so you can connect a call recorder and score live calls. Every plan includes it, and you pay only for the calls you score. The Free plan exists to answer one question: does practicing a conversation from your own business actually help your team? Two scenarios and five sessions are enough to build one, run it, [edit it](/roleplays/edit-scenario) until it sounds right, and decide. *** ## Starter **\$120 per month, or \$1,200 per year.** Starter removes the session cap and gives you room to run practice for a full team: * **Unlimited roleplay sessions** * **50 custom scenarios** * [**Programs**](/programs/overview), with up to 5 active at a time * **Up to 10 [courses](/courses/overview)** * **Call Scoring** (usage-based) * **Up to 50 seats and 5 groups** Starter does not include the AI Coach, certifications, analytics, or screen sharing in roleplays. Those are Professional features. *** ## Professional **\$7,020 per year.** Everything in Starter, plus the measurement and coaching layer: * [**AI Coach**](/roleplays/ai-coach), so reps can talk through their scorecard and re-drill the exact moment they missed * [**Certifications**](/certificates/create-certification) with pass criteria you define * **Coaching, roleplay, and [skill analytics](/skills/overview)** that show which skills are moving and who needs attention * **[Screen sharing](/roleplays/screenshare/enable) in roleplays** for demo and walkthrough practice * **Up to 50 [courses](/courses/overview)** * **Up to 200 seats and 50 groups** *** ## Enterprise Everything in Professional, plus: * [**SSO and directory sync**](/sso-directory-sync) * [**Feature Access (RBAC)**](/platform/feature-access) to control which members see and act on each part of Exec * **A custom skills ontology** mapped to your own competency model * **Unlimited seats** Enterprise pricing is custom. Contact us at [hello@exec.com](mailto:hello@exec.com) to talk through it. *** ## How Upgrades Work You can upgrade to **Starter** or **Professional** yourself. Open your workspace settings, pick the plan, and check out. The new limits apply immediately. **Enterprise** starts with a conversation. Email [hello@exec.com](mailto:hello@exec.com) and we will walk through seats, SSO, and the skills ontology with you. *** ## What Happens When You Hit a Free Limit **The scenario cap.** Once you have published 2 custom scenarios, Exec blocks the third until you upgrade. Your existing scenarios keep working, and you lose nothing you built. **The session pool.** The Free plan includes 5 roleplay sessions per year. When you use the last one, Exec pauses new sessions until the pool renews or you upgrade to a plan with unlimited sessions. **The course limit.** Every plan has a cap on how many active courses your workspace can have. When you reach it, Exec shows a banner across the course list and disables the create, import, and AI generation buttons. Archiving a course frees up a slot, or you can upgrade for more. Existing courses over a newly imposed limit keep working — the cap only gates creating new ones. **Platform credits.** A few AI actions - scoring a call, generating a course with AI, and creating a scenario through the API - draw on a monthly pool of [platform credits](/platform/platform-credits). Roleplay practice, scenario building in the app, and everything else are covered by your seats. Each plan grants credits per seat per month: Starter 500, Professional 750, Enterprise 1,000. Free-plan workspaces get a one-time 500-credit signup bonus instead. See [Platform Credits](/platform/platform-credits) for exactly what each action costs. Hitting a limit is usually a sign the product is working. If you want help deciding whether Starter or Professional fits your team, reply to any of our emails or write to [hello@exec.com](mailto:hello@exec.com). *** ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) with any questions about plans, billing, or upgrading. # Platform Credits Source: https://docs.exec.com/platform/platform-credits The three features that use credits, what each one costs, and how much your plan includes Platform credits meter three AI features that do heavy work on demand. Everything else in Exec, including all roleplay practice, is covered by your seats and never touches your balance. ## What Uses Credits | Feature | When you're charged | Cost | | ------------------------------------------------- | ------------------------------------- | --------------------------------- | | [Call Scoring](/calls/overview) | The first time each call is scored | 40 to 140 credits, by call length | | [AI course generation](/courses/generate-with-ai) | The first outline of a new course | 200 credits | | [Scenario Studio API](/api-reference/overview) | Each scenario created through the API | 150 credits | These are **platform credits**. They are unrelated to **coaching credits**, which are used to book sessions with human coaches - see [Coaching Credits](/coaching/credits) for those. *** ## Call Scoring Most workspaces spend the bulk of their credits here. A call is charged **once**, the first time it is scored, at a price set by the length of the recording. | Call length | Cost | | ---------------- | ----------- | | Up to 15 minutes | 40 credits | | 15 to 60 minutes | 100 credits | | Over 60 minutes | 140 credits | If Exec cannot determine a call's duration, it charges the middle tier. **Everything after the first score is free.** Reading the transcript, summary, captured attributes, and scorecard costs nothing, no matter how many people open the call or how often. **Your first rescore on each call is free.** If a call lands in the wrong category, or you change a scorecard and want it regraded, the first rescore costs nothing. Every call in your workspace gets one. Rescoring that same call again later costs its normal tier price. **Importing a call is not the same as scoring it.** Only calls that actually get scored consume credits. Category rules, team-member matching, and exclusion settings decide what enters the scoring queue, so calls that import and are skipped or filtered out are free. See [Set Up Call Scoring](/calls/set-up-call-scoring) to tune this. **Running out pauses scoring, it does not lose calls.** With no credits left and on-demand credits off, incoming calls are marked **Skipped** with the reason `No credits`. They stay in your history and can be processed later once you have credits again. Connecting a call recorder for the first time grants your workspace a one-time bonus of **10,000 platform credits**, enough to score roughly 100 hour-long calls, so you can evaluate call scoring before committing spend. *** ## AI Course Generation Drafting a course with the [AI course studio](/courses/generate-with-ai) costs **200 credits**, charged once per course, at the moment the studio produces its first outline. The cost appears on a confirmation dialog before the studio starts, so you always see it before committing. Once that first outline exists, the course is paid for. All of this is free: * Re-running the outline on the same course * Editing, rewriting, or restructuring what the studio produced * Adding your own sections, pages, quizzes, and roleplays * Publishing the course and shipping later versions If your workspace is out of credits, the studio shows an upsell instead of drafting. *** ## Scenario Studio API Creating a scenario through the [Scenario Studio API](/api-reference/overview) costs **150 credits** per scenario, charged when the job is accepted. This applies to the API only. Building the same scenario yourself in Scenario Studio is free and included with your seats. If your workspace doesn't have enough credits, the endpoint returns `402` with the code `insufficient_credits` and no job is created. *** ## What Your Seats Already Cover None of this draws on your balance, at any volume: * **Roleplay sessions**, including [multi-persona](/roleplays/multi-persona), [group sessions](/roleplays/group-sessions), and sessions with video avatars. Full seats include unlimited roleplay sessions, and avatars or extra characters don't change that. * **Building and editing scenarios** in Scenario Studio, plus [remixing](/roleplays/remix-scenario) and [cloning](/roleplays/clone-scenario) them * **Building a course by hand**, and every edit to a course after it has been generated * **Knowledge Hub** pages, sources, and AI chat * **Programs**, assignments, certifications, and analytics *** ## Your Monthly Allowance Credits are granted per seat, per month, and reset at the start of each billing period. Unused credits do not roll over. | Plan | Credits per seat, per month | | ---------------- | --------------------------------------------------------------- | | **Free** | None recurring, plus a one-time 500 at signup valid for 90 days | | **Starter** | 500 | | **Professional** | 750 | | **Enterprise** | 1,000, or whatever your contract specifies | **Credits pool across the whole workspace.** They are not tied to the person whose seat earned them, so a 20-seat Professional workspace has 15,000 credits a month to spend wherever it needs them. For scale, 750 credits covers about seven hour-long calls scored, or three AI-generated courses. *** ## Checking Your Balance Open **Workspace Settings > Billing**. The platform credits card shows: * **Credits used and remaining** for the current period, and the date usage resets * **Where your credits came from** - base plan, per-seat allocation, purchased credits, and any bonus or promotional grants, each listed separately * **On-demand usage**, if any, for the current period Admins can open **Platform Credit History** for a line-by-line log of every charge, showing what was scored or generated, when, and how many credits it took. Call Scoring also shows a credit counter on the calls dashboard, so your team can see the balance without leaving the feature. *** ## Buying More Credits **Add credits to your subscription.** On the Billing page, use **Add platform credits** to raise your recurring monthly allocation. Credits are purchased in blocks of 5,000 per month, priced before you confirm, and the change takes effect on your next billing period. **Turn on on-demand credits.** Work continues past your monthly allowance instead of stopping, and the extra usage is billed at the end of the period at a higher per-credit rate. This is the right setting if you would rather never have a call skipped for lack of credits. It is off by default. On Enterprise plans, allocation changes and on-demand settings are handled by your Exec rep rather than in the app. *** ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) with any questions about credits, allowances, or billing. # Remove a User Source: https://docs.exec.com/platform/remove-user Revoke someone's access to your Exec workspace Removing a user from the workspace fully revokes their access to Exec, including all programs, groups, and workspace-level content. *** ## How to Remove a User Demo Exec Com Rubrics(17) A confirmation screen will list the implications of removal: * Their personal credits are returned to the workspace account * They are removed from all workspace groups * They are removed from all active programs * Their access to Exec is fully revoked Click **Remove User** to confirm. Removing a user is immediate. Make sure you're removing the right person before confirming. *** ## Getting Help **Need help?** Contact us at [hello@exec.com](mailto:hello@exec.com) for guidance on managing workspace access or user permissions. # Understand the Settings Tab Source: https://docs.exec.com/platform/settings-tab Configure workspace settings including users, groups, billing, integrations, and more The Settings area is where workspace admins and owners manage everything about the workspace: users and seats, groups, profile fields, billing, integrations, security, data exports, and the controls for each product (Roleplays, Calls, and Skills). ## Video walkthrough