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

# Quickstart

> Run your first audit in under two minutes.

## 1. Get an API key

Create an account, then open your [dashboard](https://www.serializedaudit.io/portal) and generate a key under **API keys**. The secret is shown once, so store it somewhere safe.

<Card title="Get your API key" icon="key" href="https://www.serializedaudit.io/signup?returnTo=%2Fdashboard" horizontal>
  New accounts include free trial credits. No card required.
</Card>

## 2. Make your first call

Pass your key in the `X-Auth-Key` header and the contract you want to check as query parameters.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://www.serializedaudit.io/api/audit-contract?chain=base&address=0x6D7401F6f1fB09ff24a048337ff44D890CdF86F8" \
    -H "X-Auth-Key: sk_live_your_key_here"
  ```

  ```ts TypeScript theme={null}
  const res = await fetch(
    "https://www.serializedaudit.io/api/audit-contract?chain=base&address=0x6D7401F6f1fB09ff24a048337ff44D890CdF86F8",
    { headers: { "X-Auth-Key": process.env.SERIALIZED_API_KEY! } },
  );
  const { audit } = await res.json();
  ```

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

  res = requests.get(
      "https://www.serializedaudit.io/api/audit-contract",
      params={"chain": "base", "address": "0x6D7401F6f1fB09ff24a048337ff44D890CdF86F8"},
      headers={"X-Auth-Key": os.environ["SERIALIZED_API_KEY"]},
  )
  ```
</CodeGroup>

## 3. Read the verdict

A safe contract returns an empty `vulnerabilities` array:

```json theme={null}
{
  "audit": {
    "isSafe": true,
    "description": "Standard ERC-20 token. No owner privileges that can harm holders were detected.",
    "symbol": "EXMPL",
    "address": "0x6D7401F6f1fB09ff24a048337ff44D890CdF86F8",
    "chain": "BASE",
    "vulnerabilities": []
  },
  "billing": { "type": "fresh_no_decompile", "credits": 4 }
}
```

Every authenticated call also echoes a `billing` object next to `audit`: the tier that was charged and the credits it cost. See [Credits & Billing](/credits).

An unsafe one lists the risks it found:

```json theme={null}
{
  "audit": {
    "isSafe": false,
    "description": "The owner can mint unlimited supply after deployment, diluting holders at will.",
    "symbol": "RISK",
    "vulnerabilities": [
      { "type": "UnlimitedMinting", "impact": "critical", "description": "The owner can mint new tokens without limit." }
    ]
  }
}
```

Branch on `isSafe` for your decision, surface `description` to users, and read `vulnerabilities` for details. See [Understanding Results](/understanding-results).

## Next steps

<CardGroup cols={2}>
  <Card title="How to integrate" icon="rocket" href="/integration-guide">
    The recommended production pattern: fire-and-subscribe plus one SSE stream.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Keys, headers, and key safety.
  </Card>

  <Card title="Audit a Contract" icon="terminal" href="/api-reference/audit-contract">
    Full endpoint reference, every parameter and response.
  </Card>

  <Card title="Risk Categories" icon="triangle-exclamation" href="/risk-categories">
    Every risk type we can return.
  </Card>

  <Card title="Credits & Billing" icon="coins" href="/credits">
    What a call costs.
  </Card>
</CardGroup>
