> ## Documentation Index
> Fetch the complete documentation index at: https://intervyo.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Run your first AI interview in 5 minutes — by UI or by API.

You'll set up a Role, get a candidate into an interview, and see
a scored transcript within \~2 minutes of them finishing. Pick the path that
fits you.

<Tabs>
  <Tab title="By UI (no code)">
    The fastest path — for hiring managers, recruiters, and L\&D teams who never
    want to touch an API.

    <Steps>
      <Step title="Create a workspace">
        Sign up at [intervyo.ai/auth/sign-up](https://intervyo.ai/auth/sign-up),
        then create your team. The trial is free; no card required.
      </Step>

      <Step title="Pick a Role">
        Open **Roles** and choose a calibrated starter (Software
        Engineer, Sales Rep, Customer Support…) — or build your own. See
        [Roles](/en/concepts/roles). New here? Try a ready-made
        [cookbook recipe](/en/cookbook/overview).
      </Step>

      <Step title="Get a candidate in">
        Either click **Add** under **Participants** to invite someone directly,
        or share the Role's public apply link and let people
        [apply themselves](/en/guides/self-serve-applications). Either way they
        verify by email and the AI interviews them.
      </Step>

      <Step title="Review the scorecard">
        When the session completes, a full scorecard — per-dimension scores,
        recommendation, transcript, recording — appears on the participant's
        profile. Share it with your panel via a
        [no-login link](/en/guides/sharing-candidate-profiles).
      </Step>
    </Steps>
  </Tab>

  <Tab title="By API">
    For developers integrating intervyo.ai into your own product or ATS. Full
    walkthrough: [Hiring, step by step](/en/guides/hiring-step-by-step).

    <Steps>
      <Step title="Get an API key">
        In the dashboard, go to **Developer → API Keys** and create a key scoped
        to `participants:write` and `sessions:write`. See
        [Authentication](/en/authentication).
      </Step>

      <Step title="Set up your environment">
        ```bash theme={null}
        export INTERVYO_API_KEY="iv_live_…"
        export ROLE_ID="ce1cd564-..."   # from your Roles page
        export TEAM_SLUG="your-team-slug"
        ```
      </Step>

      <Step title="Create a participant">
        Sessions belong to a participant, so create one first.

        <CodeGroup>
          ```bash cURL theme={null}
          curl -X POST "https://www.intervyo.ai/api/v1/participants?accountSlug=$TEAM_SLUG" \
            -H "x-api-key: $INTERVYO_API_KEY" \
            -H "Content-Type: application/json" \
            -d '{
              "name": "Ada Lovelace",
              "email": "ada@example.com",
              "role_id": "'"$ROLE_ID"'"
            }'
          ```

          ```ts TypeScript theme={null}
          const res = await fetch(
            `https://www.intervyo.ai/api/v1/participants?accountSlug=${process.env.TEAM_SLUG}`,
            {
              method: "POST",
              headers: {
                "x-api-key": process.env.INTERVYO_API_KEY!,
                "Content-Type": "application/json",
              },
              body: JSON.stringify({
                name: "Ada Lovelace",
                email: "ada@example.com",
                role_id: process.env.ROLE_ID,
              }),
            },
          );
          const { data } = await res.json();
          const candidateId = data.id;
          ```

          ```python Python theme={null}
          import os, requests

          res = requests.post(
              "https://www.intervyo.ai/api/v1/participants",
              params={"accountSlug": os.environ["TEAM_SLUG"]},
              headers={"x-api-key": os.environ["INTERVYO_API_KEY"]},
              json={
                  "name": "Ada Lovelace",
                  "email": "ada@example.com",
                  "role_id": os.environ["ROLE_ID"],
              },
          )
          candidate_id = res.json()["data"]["id"]
          ```
        </CodeGroup>

        Save the returned `id` as your `candidate_id`.
      </Step>

      <Step title="Schedule the session">
        The invite email is sent automatically.

        ```bash theme={null}
        curl -X POST "https://www.intervyo.ai/api/v1/sessions?accountSlug=$TEAM_SLUG" \
          -H "x-api-key: $INTERVYO_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "candidate_id": "<candidate_id-from-previous-step>",
            "role_id": "'"$ROLE_ID"'",
            "stage": "screen",
            "idempotency_key": "quickstart-ada-screen"
          }'
        ```

        The response includes a `join_url` (and confirms the invite was emailed).
      </Step>

      <Step title="Receive the scorecard">
        Configure a [webhook](/en/concepts/webhooks) to get `session.completed` the
        moment the interview ends — or poll
        [`GET /api/v1/sessions/{id}`](/api-reference/sessions/get-sessions-id)
        until `status` is `completed`. Webhooks are strongly preferred; the wait
        is otherwise unbounded.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## What just happened

<CardGroup cols={2}>
  <Card title="The AI ran your rubric" icon="sliders">
    Every dimension on the Interviewer was scored against the transcript, with
    per-dimension reasoning and citations.
  </Card>

  <Card title="Authenticity signals captured" icon="shield-check">
    Tab-switch, paste, and voice-spoofing signals surface on the dashboard for
    your judgment — never used to silently reject.
  </Card>

  <Card title="Recording archived" icon="video">
    Audio and transcript stored in encrypted, region-aware buckets with
    presigned access. Retention follows your workspace policy.
  </Card>

  <Card title="Webhook delivered" icon="webhook">
    If configured, your endpoint received the event with the full scorecard,
    HMAC-signed, with retries on failure.
  </Card>
</CardGroup>

<Tip>
  **Next:** tune what the AI assesses in your [Interviewer](/en/concepts/interviewers),
  or add a second [Round](/en/concepts/rounds) so candidates auto-progress on a pass.
</Tip>
