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

# API quickstart

> Make your first API call in under a minute.

<Steps>
  <Step title="Get an API key">
    Open the OpenWhispr desktop app, go to **Integrations > API Keys**, and create a key with the scopes you need.

    Your key looks like `owk_live_abc123...` — copy it now, it's only shown once.
  </Step>

  <Step title="List your notes">
    <CodeGroup>
      ```bash curl theme={null}
      curl -H "Authorization: Bearer owk_live_YOUR_KEY" \
        https://api.openwhispr.com/api/v1/notes/list?limit=5
      ```

      ```javascript Node.js theme={null}
      const res = await fetch("https://api.openwhispr.com/api/v1/notes/list?limit=5", {
        headers: { Authorization: "Bearer owk_live_YOUR_KEY" },
      });
      const { data } = await res.json();
      console.log(data);
      ```

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

      res = requests.get(
          "https://api.openwhispr.com/api/v1/notes/list",
          params={"limit": 5},
          headers={"Authorization": "Bearer owk_live_YOUR_KEY"},
      )
      print(res.json()["data"])
      ```
    </CodeGroup>
  </Step>

  <Step title="Create a note">
    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST \
        -H "Authorization: Bearer owk_live_YOUR_KEY" \
        -H "Content-Type: application/json" \
        -d '{"content": "My first API note", "title": "Hello from the API"}' \
        https://api.openwhispr.com/api/v1/notes/create
      ```

      ```javascript Node.js theme={null}
      const res = await fetch("https://api.openwhispr.com/api/v1/notes/create", {
        method: "POST",
        headers: {
          Authorization: "Bearer owk_live_YOUR_KEY",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          content: "My first API note",
          title: "Hello from the API",
        }),
      });
      const { data } = await res.json();
      console.log(data.id);
      ```

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

      res = requests.post(
          "https://api.openwhispr.com/api/v1/notes/create",
          headers={"Authorization": "Bearer owk_live_YOUR_KEY"},
          json={"content": "My first API note", "title": "Hello from the API"},
      )
      print(res.json()["data"]["id"])
      ```
    </CodeGroup>
  </Step>

  <Step title="Search your notes">
    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST \
        -H "Authorization: Bearer owk_live_YOUR_KEY" \
        -H "Content-Type: application/json" \
        -d '{"query": "meeting notes"}' \
        https://api.openwhispr.com/api/v1/notes/search
      ```

      ```javascript Node.js theme={null}
      const res = await fetch("https://api.openwhispr.com/api/v1/notes/search", {
        method: "POST",
        headers: {
          Authorization: "Bearer owk_live_YOUR_KEY",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ query: "meeting notes" }),
      });
      const { data } = await res.json();
      console.log(`Found ${data.length} results`);
      ```

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

      res = requests.post(
          "https://api.openwhispr.com/api/v1/notes/search",
          headers={"Authorization": "Bearer owk_live_YOUR_KEY"},
          json={"query": "meeting notes"},
      )
      print(f"Found {len(res.json()['data'])} results")
      ```
    </CodeGroup>
  </Step>
</Steps>

## Next steps

* [List notes](/api-reference/notes/list-notes) — full CRUD reference
* [Create folder](/api-reference/folders/create-folder) — organize notes into folders
* [MCP server](/integrations/mcp) — connect your AI assistant
