---
title: "Quickstart"
description: "Add a resource, create an assistant and ask a first question, in the Lookio app and then over the REST API with curl."
canonical: "https://lookio.app/docs/get-started/quickstart"
updated: "2026-11-03"
---

# Quickstart

You need a Lookio account. A new workspace comes with free welcome credits, which is enough for the questions below.

**Web app**

1. **Add a resource**

   Open **Resources** and choose **Add a resource**. Pick **Text**, give it a title such as "Refund policy", and paste a few paragraphs. Markdown headings (`#`) become the sections an answer cites.

   The resource shows **Indexing** for a few seconds, then **Ready**.
2. **Create an assistant**

   Open **Assistants** and choose **Create an assistant**. Name it, then open it and choose what it answers from: all resources, the ones you pick, or a tag. In the first case there is nothing else to set.
3. **Ask a question**

   Open **Chat**, pick the assistant and ask something your text answers. The answer cites its sources as `[1]`, `[2]`. Open a citation to read the passage it relies on.

**REST API**

The API answers at `https://api.lookio.app/v1`. Every call needs an API key. See [Authentication](/docs/api/authentication) for the details.

1. **Create an API key**

   In the app, open **Developer tools**, then the **API** tab, and choose **Create key**. Pick the **Editor** preset: it can read, add and update resources and assistants, and ask questions. Copy the key now. Lookio shows it once.

   ```bash
   export LOOKIO_API_KEY="sk_live_..."
   ```
2. **Check the key**

   ```bash
   curl https://api.lookio.app/v1/account \
     -H "Authorization: Bearer $LOOKIO_API_KEY"
   ```

   The response lists the scopes this key holds.
3. **Add a text**

   ```bash
   curl https://api.lookio.app/v1/resources \
     -H "Authorization: Bearer $LOOKIO_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "type": "text",
       "title": "Refund policy",
       "text": "# Refunds\n\nYou can return any item within 30 days for a full refund."
     }'
   ```

   The resource comes back with `status` set to `queued`. Note its `data.id`.
4. **Wait until it is ready**

   ```bash
   curl https://api.lookio.app/v1/resources/RESOURCE_ID \
     -H "Authorization: Bearer $LOOKIO_API_KEY"
   ```

   Repeat until `data.status` is `ready`. If it is `failed`, read `data.status_detail`.
5. **Create an assistant**

   ```bash
   curl https://api.lookio.app/v1/assistants \
     -H "Authorization: Bearer $LOOKIO_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "Support",
       "context": "You are the support assistant of Acme. You answer customers who want a quick, accurate reply.",
       "resource_ids": ["RESOURCE_ID"]
     }'
   ```

   Note the assistant's `data.id`.
6. **Ask a question**

   ```bash
   curl https://api.lookio.app/v1/assistants/ASSISTANT_ID/query \
     -H "Authorization: Bearer $LOOKIO_API_KEY" \
     -H "Content-Type: application/json" \
     -H "Idempotency-Key: $(uuidgen)" \
     -d '{ "question": "How long do I have to return an item?" }'
   ```

   `data.answer` holds the answer, `data.citations` the passages behind it, and `data.credit_cost` what it cost. The default mode is Flash, 30 credits.

> **Info: Only questions cost credits**
>
> Importing and editing are free. Asking is the only call that spends credits, and it spends credits on every question, even when the resources hold no answer. An assistant that reads no resource is refused first with `assistant_has_no_resources`. Sending an `Idempotency-Key` makes a retried question safe: see [Conventions](/docs/api/conventions#idempotency).

## Next steps

- [Core concepts](/docs/get-started/concepts): the vocabulary, the four query modes and how credits work.
- [Resources](/docs/platform/resources): what Lookio can read and how long it takes.
- [Streaming](/docs/api/streaming): show an answer as it is written.
- [Connect an AI client](/docs/mcp/connect): let Claude or Cursor use your workspace.
