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

# Quickstart

> Create a Web inquiry, send users to the capture app, and handle the return URL

## Prerequisites

* Server-side **API key** from the InkLink dashboard (`secret_live_xxx`).
* Send the **`api-key`** header on every request (never from a public client).
* A **published** Web inquiry template and its **`template_key`**, or pass the full inquiry config inline. You can create and publish templates in the dashboard or with the [Template API](/web/templates) (`POST /web/template`, then `POST /web/template/{key}/publish` when needed).

## 1. Create an inquiry

The simplest path is to use a template you have already configured in the dashboard. Only **`subject_id`** and **`template_key`** are required; the inquiry inherits the rest of its configuration from the template. You can still pass additional fields in the request to override it.

<CodeGroup>
  ```bash curl theme={"dark"}
  curl -X POST "https://platform.inklink.com/api/v1/web/inquiry" \
    --header "api-key: $INKLINK_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
      "subject_id": "user_123",
      "template_key": "linkedin_profile"
    }'
  ```

  ```python Python theme={"dark"}
  import os
  import requests

  url = "https://platform.inklink.com/api/v1/web/inquiry"
  headers = {
      "api-key": os.environ["INKLINK_API_KEY"],
      "Content-Type": "application/json",
  }
  body = {
      "subject_id": "user_123",
      "template_key": "linkedin_profile",
  }
  r = requests.post(url, headers=headers, json=body)
  print(r.json())
  ```

  ```typescript TypeScript theme={"dark"}
  const r = await fetch("https://platform.inklink.com/api/v1/web/inquiry", {
    method: "POST",
    headers: {
      "api-key": process.env.INKLINK_API_KEY!,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      subject_id: "user_123",
      template_key: "linkedin_profile",
    }),
  });
  console.log(await r.json());
  ```
</CodeGroup>

Save the **`id`** from the response (e.g. `web_iq_…`).

<Note>
  Without **`template_key`**, you must pass the full inquiry configuration inline (**`name`**, **`query`**, **`fields`**, **`start_url`**, and so on). See the [API reference](/api-reference/endpoint/web-inquiry-create) for the full payload.
</Note>

## 2. Send the user to hosted capture

Redirect or deep-link:

`https://platform.inklink.com/capture/<id>`

`<id>` is the same **`id`** from the create response (e.g. `web_iq_…`). It appears in the **path** for InkLink-hosted capture; **`inquiry_id`** is only the query parameter name when you land on **your** return URL (see below).

The hosted app walks the user through the capture flow and sends the browser back to the return URL configured on the inquiry.

## 3. Read `status` on your return URL

When the flow finishes, the capture app redirects to your configured return URL with two query parameters added:

| Parameter        | Description                                                          |
| ---------------- | -------------------------------------------------------------------- |
| **`status`**     | `pending`, `processing`, `approved`, `rejected`, or `failed`         |
| **`inquiry_id`** | The same inquiry **`id`** from the create response (e.g. `web_iq_…`) |

Example:

`https://your-app.com/web/complete?status=approved&inquiry_id=web_iq_xxx`

Use that landing route to decide what to show next.

### Optional: full inquiry JSON

If you need more than **`status`**, such as scores, extracted claims, capture sessions, or timestamps, call **Get Web inquiry** from your server:

`GET https://platform.inklink.com/api/v1/web/inquiry/<inquiry_id>`

<CodeGroup>
  ```bash curl theme={"dark"}
  curl "https://platform.inklink.com/api/v1/web/inquiry/web_iq_xxx" \
    --header "api-key: $INKLINK_API_KEY"
  ```
</CodeGroup>

The response includes the inquiry configuration, a nested **`result`** (with **`status`**, **`acceptance`**, **`confidence`**, **`claims`**, and **`status_history`**), and **`sessions`** with page visits and time-limited signed evidence URLs.

See [Error handling](/error-handling) and the [Get Web inquiry reference](/api-reference/endpoint/web-inquiry-get).

### Optional: list inquiries

To page through inquiries from your server, call **List Web inquiries** with `limit` (default 25, max 100) and optional `after_id` - use the previous response's **`last_id`** as **`after_id`** when **`has_more`** is true.

<CodeGroup>
  ```bash curl theme={"dark"}
  curl "https://platform.inklink.com/api/v1/web/inquiry?limit=10" \
    --header "api-key: $INKLINK_API_KEY"
  ```
</CodeGroup>

See the [List Web inquiries reference](/api-reference/endpoint/web-inquiry-list).
