> ## 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.

# Overview

> Web Inquiry on the InkLink platform

Web inquiries capture and verify information from any website in a secure capture flow that protects the integrity of the evidence you collect.

<Info>
  For most integrations, the flow is simple: publish a template or pass config inline, create the inquiry on your backend, send the user to the hosted capture app, then read **`status`** and **`inquiry_id`** on your configured return URL.
</Info>

<Warning>
  Create inquiries with your server-side **`api-key`** only. Do not expose the key in the browser or create inquiries from a public client.
</Warning>

## Integration flow

<Steps>
  <Step title="Create a template (dashboard or API)">
    In the InkLink dashboard, create a template that defines your inquiry settings, including the query, fields, and return URLs. Save it and copy the **`template_key`** so each inquiry can inherit that configuration. Alternatively, create and publish templates with the **Template API**–see [Inquiry templates](/web/templates) for the full lifecycle and endpoint list.

    <Warning>
      New templates start as **Draft**. Before **`template_key`** will work with the API, open the template and change its status to **Published** (or use **Publish** via the API). Draft templates cannot be used for inquiries.
    </Warning>
  </Step>

  <Step title="Create an inquiry">
    Call `POST https://platform.inklink.com/api/v1/web/inquiry` from your backend with your org **`api-key`**. Send **`subject_id`** (your stable user key) and **`template_key`** from your template so the inquiry uses that configuration. If you skip a template, you can pass the full inquiry config inline instead (**`name`**, **`query`**, **`fields`**, **`return_url`**, **`start_url`**, and more). See [Quickstart](/web/quickstart) and the [API reference](/api-reference/endpoint/web-inquiry-create) for the full payload.
  </Step>

  <Step title="Hosted capture">
    Open the user's browser to:

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

    Put the **`id`** from the create response (e.g. `web_iq_…`) as the **last path segment**. When the flow completes, your **`return_url`** receives that same value as the **`inquiry_id`** query parameter. The capture app guides the user through the target site and collects evidence.
  </Step>

  <Step title="Read the outcome on your return URL">
    When the hosted flow finishes, the user is redirected to your configured return URL (from the template or your create request) with **`status`** and **`inquiry_id`** as query parameters.

    <Note>
      For most integrations, those query parameters are enough. **List Web inquiries** (`GET /api/v1/web/inquiry`) returns a paginated list with a nested **`result`** for each row - useful for dashboards or sync - see the [API reference](/api-reference/endpoint/web-inquiry-list). Call **Get Web inquiry** (`GET /web/inquiry/{id}`) when you need the full payload for one inquiry, such as **`status_history`**, **`sessions`**, or signed evidence URLs.
    </Note>
  </Step>
</Steps>

## Return URL and Get Web inquiry

<CodeGroup>
  ```text Return URL theme={"dark"}
  https://your-app.com/web/complete?status=approved&inquiry_id=web_iq_xxx
  ```

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

## Capture types

| Type             | What it captures                                                                                                     |
| ---------------- | -------------------------------------------------------------------------------------------------------------------- |
| **`screenshot`** | Viewport screenshot of the target page                                                                               |
| **`document`**   | Document files downloaded from a website (for example PDF and other supported formats), sent to InkLink for analysis |

<AccordionGroup>
  <Accordion title="Result statuses">
    | Status         | Meaning                                 |
    | -------------- | --------------------------------------- |
    | **`pending`**  | Result created, not yet processed       |
    | **`approved`** | Claims verified and accepted            |
    | **`rejected`** | Claims did not pass acceptance criteria |
    | **`failed`**   | Processing encountered an error         |
  </Accordion>

  <Accordion title="Result scores and extra fields">
    Each completed result includes two scores:

    | Score          | Values                            | Purpose                                                       |
    | -------------- | --------------------------------- | ------------------------------------------------------------- |
    | **Acceptance** | `high`, `medium`, `low`, `reject` | How well the captured evidence satisfies the inquiry criteria |
    | **Confidence** | `high`, `medium`, `low`           | How reliable the evidence source and extraction are           |

    Both scores include a human-readable **reason** field. The nested **`result`** on `GET https://platform.inklink.com/api/v1/web/inquiry/<inquiry_id>` can also include extracted **`claims`**, **`status_history`**, timestamps, and other metadata; the same response includes **`sessions`** and signed evidence URLs when you need the full picture.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={3}>
  <Card title="Quickstart" href="/web/quickstart">
    Create an inquiry, send users to hosted capture, and handle the return URL.
  </Card>

  <Card title="API reference" href="/api-reference/endpoint/web-inquiry-create">
    Review the create inquiry request and response schema.
  </Card>

  <Card title="Error handling" href="/error-handling">
    Check common API and integration errors before going live.
  </Card>
</CardGroup>
