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

# Quickstart

> Sign up, grab a key, and pull your first land analysis report — five minutes end-to-end.

By the end of this page you'll have a `report_id` and a JSON report you can render however you want.

## 1. Create an account

Sign up at [acrelens.com/signup](https://acrelens.com/signup). You'll get **4 free reports** as soon as you add a card — no charge until your free reports are spent.

## 2. Grab your API key

In the dashboard, head to [Manage → API Keys](https://acrelens.com/dashboard/manage/api-keys) and click **+ New key**. Keys look like:

```
al_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
```

The full key is shown **exactly once**. Copy it now — AcreLens stores only a SHA-256 hash. If you lose it, [revoke and create a new one](/authentication#rotating-keys).

## 3. Make your first request

<Note>
  **Not a developer?** Skip the rest of this page. Open the
  [dashboard](https://acrelens.com/dashboard) — you'll land on Home with
  a gamified onboarding card to walk you through your first analysis. Or
  jump straight to [Reports → + New analysis](https://acrelens.com/dashboard/reports/new),
  fill in an address, pick a mode, and click **Run**. The report list
  updates live (60–120 seconds) and any completed row opens the same
  structured analysis the API returns. No code required.
</Note>

Analyze a 5-acre parcel in Taos, NM:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.acrelens.com/v1/analyze \
    -H "Authorization: Bearer al_live_..." \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: $(uuidgen)" \
    -d '{
      "address": "123 Canyon Rd, Taos, NM",
      "state": "NM",
      "mode": "off_grid",
      "county": "Taos",
      "acreage": 5.2,
      "asking_price": 65000
    }'
  ```

  ```javascript Node theme={null}
  const res = await fetch("https://api.acrelens.com/v1/analyze", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${process.env.ACRELENS_API_KEY}`,
      "Content-Type": "application/json",
      "Idempotency-Key": crypto.randomUUID(),
    },
    body: JSON.stringify({
      address: "123 Canyon Rd, Taos, NM",
      state: "NM",
      mode: "off_grid",
      county: "Taos",
      acreage: 5.2,
      asking_price: 65000,
    }),
  });
  const { report_id, poll_url } = await res.json();
  ```

  ```python Python theme={null}
  import os, uuid, requests

  res = requests.post(
      "https://api.acrelens.com/v1/analyze",
      headers={
          "Authorization": f"Bearer {os.environ['ACRELENS_API_KEY']}",
          "Idempotency-Key": str(uuid.uuid4()),
      },
      json={
          "address": "123 Canyon Rd, Taos, NM",
          "state": "NM",
          "mode": "off_grid",
          "county": "Taos",
          "acreage": 5.2,
          "asking_price": 65000,
      },
  )
  data = res.json()
  ```
</CodeGroup>

The API responds **immediately** with `202 Accepted` while the report runs in the background:

```json Response theme={null}
{
  "report_id": "rpt_01HY2Z...",
  "status": "processing",
  "mode": "off_grid",
  "estimated_completion_seconds": 90,
  "poll_url": "https://api.acrelens.com/v1/reports/rpt_01HY2Z..."
}
```

## 4. Receive the result

You have two options. **Pick webhooks for production** — polling burns rate-limit quota and adds latency.

### Option A — webhooks (recommended)

Set a `webhook_url` in your dashboard or per-request. AcreLens POSTs to it with HMAC-SHA256-signed bodies when the report finishes. See the [webhooks guide](/guides/webhooks) for the signature scheme and retry behavior.

### Option B — poll the `poll_url`

```bash theme={null}
curl https://api.acrelens.com/v1/reports/rpt_01HY2Z... \
  -H "Authorization: Bearer al_live_..."
```

Reports typically complete in **60–120 seconds**. While processing, you'll get back the basic envelope. Once `status` is `"completed"`, you'll see the full body:

```json Completed report (abridged) theme={null}
{
  "report_id": "rpt_01HY2Z...",
  "status": "completed",
  "mode": "off_grid",
  "property": {
    "address": "123 Canyon Rd, Taos, NM",
    "state": "NM",
    "county": "Taos",
    "acreage": 5.2,
    "lat": 36.4072,
    "lng": -105.5734,
    "asking_price": 65000
  },
  "scores": {
    "overall": 78,
    "sub_scores": { "solar": 92, "water": 64, "septic": 71, "building_codes": 80, "access": 83 }
  },
  "confidence": { "solar": "high", "water": "medium", "septic": "medium", "building_codes": "high", "access": "high" },
  "summary": "Strong off-grid fundamentals — top-tier solar, accessible groundwater. Material risk is county-level RV/septic rules pending verification.",
  "details": {
    "solar": { "score": 92, "summary": "...", "details": ["..."] },
    "water": { "score": 64, "summary": "...", "details": ["..."] },
    "buildability": { "score": 71, "summary": "...", "details": ["..."], "rv_living_allowed": "conditional", "composting_toilet_allowed": "conditional", "permit_difficulty": "moderate" },
    "access": { "score": 83, "summary": "...", "details": ["..."] }
  },
  "considerations": ["..."],
  "estimated_costs": { "solar": {...}, "well": {...}, "septic": {...}, "road": {...}, "permits": {...}, "total_low": 31500, "total_high": 83000 },
  "sources": [...],
  "generated_at": "2026-04-28T22:00:00.000Z"
}
```

See the [endpoint reference](/reference/endpoint-reference) for the
complete schema with all `details`, `considerations`, and
`estimated_costs` fields.

## 5. Render however you want

The API returns structured JSON — that's the deliverable. Pipe it into your
own UI, generate a PDF with your branding, ask Claude/GPT to summarize it,
push to a Notion page, drop in Slack. Bring your own format.

***

## Next steps

* **Match the right [analysis mode](/concepts/analysis-modes)** to what your users care about — sub-scores differ.
* **[Set up webhooks](/guides/webhooks)** so you're not polling.
* **[Use idempotency keys](/guides/idempotency)** on every POST so retries don't double-charge.
* **[Browse the full endpoint reference](/reference/endpoint-reference)** when you're ready to go beyond `/v1/analyze`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.