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

# Quick Start

> Get your API key, verify your credentials, and send your first signature request in a few minutes.

This guide walks you through getting authenticated and sending your first signature request using the Lumin API.

## Prerequisites

* A Lumin account with Workspace Owner access
* `curl` or an HTTP client of your choice

<Steps>
  <Step title="Get your API key">
    1. Go to **Settings → Developer settings → API keys** in the Lumin app, or click [here](https://account.luminpdf.com/sign-in?return_to=https://luminpdf.com/app/pdf/workspace/last_accessed/dashboard/developer-settings) to go directly to the Developer settings page.
    2. Click **Generate key**, enter a name for the key, and click **Create**.
    3. Copy and securely store the key — you won't be able to see it again.

    <Warning>
      Treat your API key like a password. Do not commit it to source control or expose it in client-side code.
    </Warning>
  </Step>

  <Step title="Verify your credentials">
    Confirm your API key works by calling `GET /user/info`:

    <CodeGroup>
      ```bash curl theme={"theme":{"light":"github-light","dark":"github-dark"}}
      curl -X GET "https://api.luminpdf.com/v1/user/info" \
        -H "X-API-KEY: YOUR_API_KEY"
      ```

      ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
      import requests

      response = requests.get(
          "https://api.luminpdf.com/v1/user/info",
          headers={"X-API-KEY": "YOUR_API_KEY"},
      )
      print(response.json())
      ```

      ```javascript Node.js theme={"theme":{"light":"github-light","dark":"github-dark"}}
      const response = await fetch("https://api.luminpdf.com/v1/user/info", {
        headers: { "X-API-KEY": "YOUR_API_KEY" },
      });
      const data = await response.json();
      console.log(data);
      ```
    </CodeGroup>

    A successful response returns your user details:

    ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
    {
      "user": {
        "id": "usr_a1b2c3d4",
        "email": "you@example.com",
        "name": "Your Name"
      }
    }
    ```

    If you receive a `401` or `403`, double-check that your API key was copied correctly and that you are passing it in the `X-API-KEY` header.
  </Step>

  <Step title="Send a signature request">
    Use `POST /signature_request/send` to send a document to one or more signers.

    The example below sends a PDF from a public URL to a single signer:

    <CodeGroup>
      ```bash curl theme={"theme":{"light":"github-light","dark":"github-dark"}}
      curl -X POST "https://api.luminpdf.com/v1/signature_request/send" \
        -H "X-API-KEY: YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "title": "Financial Year-End Report Authorization",
          "file_url": "https://example.com/path/to/document.pdf",
          "signers": [
            {
              "email_address": "john.doe@example.com",
              "name": "John Doe"
            }
          ],
          "expires_at": 1927510980694
        }'
      ```

      ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
      import requests

      payload = {
          "title": "Financial Year-End Report Authorization",
          "file_url": "https://example.com/path/to/document.pdf",
          "signers": [
              {
                  "email_address": "john.doe@example.com",
                  "name": "John Doe",
              }
          ],
          "expires_at": 1927510980694,
      }

      response = requests.post(
          "https://api.luminpdf.com/v1/signature_request/send",
          headers={
              "X-API-KEY": "YOUR_API_KEY",
              "Content-Type": "application/json",
          },
          json=payload,
      )
      print(response.json())
      ```

      ```javascript Node.js theme={"theme":{"light":"github-light","dark":"github-dark"}}
      const response = await fetch(
        "https://api.luminpdf.com/v1/signature_request/send",
        {
          method: "POST",
          headers: {
            "X-API-KEY": "YOUR_API_KEY",
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            title: "Financial Year-End Report Authorization",
            file_url:
              "https://example.com/path/to/document.pdf",
            signers: [{ email_address: "john.doe@example.com", name: "John Doe" }],
            expires_at: 1927510980694,
          }),
        }
      );
      const data = await response.json();
      console.log(data);
      ```
    </CodeGroup>

    A `201 Created` response returns the new signature request:

    ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
    {
      "signature_request": {
        "signature_request_id": "sr_a1b2c3d4e5f6",
        "status": "WAITING_FOR_PROCESSING",
        "created_at": "2026-04-01T10:00:00Z"
      }
    }
    ```

    The signer receives an email with a link to review and sign the document. The `status` moves from `WAITING_FOR_PROCESSING` to `NEED_TO_SIGN` once the document is ready.

    <Tip>
      The `expires_at` field is a Unix timestamp in milliseconds. Set it to a date in the future. To send to multiple signers simultaneously, add more objects to the `signers` array and set `signing_type` to `SAME_TIME`. For sequential signing, set `signing_type` to `ORDER` and assign a `group` number to each signer.
    </Tip>
  </Step>
</Steps>

## Next steps

* [Authentication overview](/tabs/guides/authentication/overview) — learn about API Key and OAuth 2.0 options
* [API Reference](/tabs/api-reference/api/lumin-api-reference) — explore all available endpoints
* [Webhooks](/tabs/guides/webhooks/overview) — receive real-time event notifications when signers act
