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

# Hurtigstart (API)

> Besvar din første telefonsamtale med en KI-agent i fire REST-kall.

Denne veiledningen tar deg gjennom de fire REST-kallene som kreves for å besvare
din første telefonsamtale med en KI-agent.

<Info>
  Du trenger en [ThunderPhone-konto](https://app.thunderphone.com).
  Det er gratis å registrere seg og tar under ett minutt. Foretrekker du å klikke fremfor å bruke curl?
  [Hurtigstart i dashbordet](/nb/quickstart-dashboard) gir deg den samme
  første samtalen uten å skrive kode.
</Info>

## Trinn 1: Hent en API-nøkkel

<Steps>
  <Step title="Logg inn">
    Åpne [app.thunderphone.com](https://app.thunderphone.com).
  </Step>

  <Step title="Gå til Nøkler">
    Gå til **Organisasjon → Nøkler** i dashbordet.
  </Step>

  <Step title="Opprett en nøkkel">
    Klikk på **Opprett nøkkel**, gi den et navn, og kopier
    verdien `sk_live_...`. Den rå nøkkelen vises **kun én gang** — lagre den
    umiddelbart i hemmelighetshåndtereren din.
  </Step>
</Steps>

<Tip>
  Står du fast? [Opprett en API-nøkkel for server](/nb/guides/api-keys) forklarer
  denne prosessen trinn for trinn, og copilot-funksjonen i appen kan
  fremheve hver kontroll for deg i sanntid.
</Tip>

Gjennom hele denne veiledningen bytter du ut `sk_live_YOUR_API_KEY` med verdien du
nettopp kopierte. Nøkkelen identifiserer organisasjonen din automatisk, så
du trenger aldri å legge inn en organisasjons-ID i URL-er.

## Trinn 2: Opprett en agent

En stemmeagent definerer hvordan KI-en håndterer samtaler — prompt, stemme,
produktnivå, verktøy og om den kan brukes i widgeter.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thunderphone.com/v1/agents \
    -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name":   "Customer Support",
      "prompt": "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
      "voice":  "john",
      "product": "spark"
    }'
  ```

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

  agent = requests.post(
      "https://api.thunderphone.com/v1/agents",
      headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
      json={
          "name":   "Customer Support",
          "prompt": "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
          "voice":  "john",
          "product": "spark",
      },
  ).json()
  print("Agent id:", agent["id"])
  ```

  ```javascript Node.js theme={null}
  const agent = await fetch("https://api.thunderphone.com/v1/agents", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.THUNDERPHONE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name:    "Customer Support",
      prompt:  "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
      voice:   "john",
      product: "spark",
    }),
  }).then((r) => r.json());
  console.log("Agent id:", agent.id);
  ```
</CodeGroup>

<Tip>
  Produktnivåer: `spark` er optimalisert for kostnad, `bolt` for hastighet, og
  `storm-base` / `storm-extra` for intelligens i komplekse prompter. Se
  [Agenter](/api-reference/agents#product-tiers-at-a-glance) for hele
  sammenligningen.
</Tip>

## Trinn 3: Klargjør et telefonnummer

Dette kallet ber ThunderPhones demopool om et nummer og tilordner den nye
agenten din som behandler for innkommende anrop. (Hvis du vil ta med ditt eget nummer fra en VoIP-
leverandør, kan du se [VoIP-tilkoblinger](/api-reference/voip-connections)
i stedet.)

<CodeGroup>
  ```bash cURL theme={null}
  # First provision
  curl -X POST https://api.thunderphone.com/v1/phone-numbers \
    -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"area_code": "415"}'

  # Then assign the agent you created in Step 2
  curl -X PATCH https://api.thunderphone.com/v1/phone-numbers/<id-from-previous> \
    -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"inbound_agent_id": 12}'
  ```

  ```python Python theme={null}
  number = requests.post(
      "https://api.thunderphone.com/v1/phone-numbers",
      headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
      json={"area_code": "415"},
  ).json()
  requests.patch(
      f"https://api.thunderphone.com/v1/phone-numbers/{number['id']}",
      headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
      json={"inbound_agent_id": agent["id"]},
  )
  print("Your ThunderPhone number:", number["number"])
  ```
</CodeGroup>

Det nye nummeret ditt starter i `status="provisioning"` og går over til
`active` i løpet av noen sekunder. Innen du lukker nettleseren, er
nummeret klart til å motta anrop.

## Trinn 4 (valgfritt): Konfigurer en webhook

Legg til et webhook-endepunkt for hendelser i sanntid (dynamisk anropsruting, behandling etter anrop).
Abonner bare på hendelsene du trenger.

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Prod webhook",
    "url":    "https://your-server.com/thunderphone-webhook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
```

Responsen inneholder en `secret` som bare vises én gang — kopier den til
hemmelighetshåndtereren din. Bruk denne hemmeligheten til å verifisere
headeren `X-ThunderPhone-Signature` på innkommende forespørsler (se
[Oversikt over webhooks](/nb/webhooks/overview)).

## Trinn 5: Test agenten din

Ring nummeret du nettopp klargjorde. Agenten svarer, introduserer
seg og følger ledeteksten din.

Undersøk anropet etter at det er avsluttet:

```bash theme={null}
curl https://api.thunderphone.com/v1/calls \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Gå inn på et bestemt anrop for å hente transkripsjonen og URL-en til opptaket:

```bash theme={null}
curl https://api.thunderphone.com/v1/calls/{call_id}/transcript \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
curl https://api.thunderphone.com/v1/calls/{call_id}/audio \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

***

## Neste trinn

<CardGroup cols={2}>
  <Card title="Legg til funksjonsverktøy" icon="screwdriver-wrench" href="/nb/tools/overview">
    La agenten din kalle API-ene dine under en samtale.
  </Card>

  <Card title="Foreta utgående anrop" icon="arrow-up-right" href="/api-reference/outbound-calls">
    Utløs anrop fra din egen kode.
  </Card>

  <Card title="Håndter webhooks" icon="bolt" href="/nb/webhooks/overview">
    Reager på anropshendelser i sanntid.
  </Card>

  <Card title="Fullstendig API-referanse" icon="book" href="/api-reference/introduction">
    Alle offentlige endepunkter, dokumentert.
  </Card>
</CardGroup>
