# Inline Endpoints

The **inline endpoints** deliver the same results as the site-based endpoints, just
**without creating a site first**. The configuration (coordinates, strings, config) is sent
directly in the request body.

```bash
POST /v2/forecast/inline
POST /v2/historical/inline
```

Ideal for one-off calculations, site comparisons, "what-if" scenarios and
bulk evaluations where persistently creating sites isn't worthwhile.

## Request

`latitude` and `longitude` are required. Without `strings`, a single default string
is used (10 kWp, 180° orientation, 30° tilt). `elevation` and `timezone` are determined at runtime
from the location.

```bash title="Forecast inline (curl)"
curl -X POST https://api.pvnode.com/v2/forecast/inline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "latitude": 48.8566,
    "longitude": 2.3522,
    "strings": [{"slope": 30, "orientation": 180, "power_kw": 10}],
    "config": {"modules": {"technology": "topcon"}}
  }'
```

Query parameters (`forecast_days`, `past_days`, `include` or `period`/`start_date`/`end_date`,
`include`) work as with the site endpoints — see [Forecasts](/en/v2/api/forecast)
and [Historical Data](/en/v2/api/historical).

## Response

The response structure is identical to the site endpoints (`values`, plus `daily` for forecast,
optionally the `strings` block, local timestamps by default — pass `?timezone=utc` for UTC).
Since no site exists, there is no `site_id`-bound management.

## Differences from site endpoints

| | Site endpoint | Inline |
|---|---|---|
| Configuration | From stored site | In the request body |
| **Caching** | Yes (fixed slots/day) | **No** — every request recomputes |
| Elevation/timezone | Stored | Determined at runtime |

:::note
Without a cache, **every** inline request computes fresh. For recurring queries of the same
site, a stored site is more efficient and conserves your request limit.
:::

## Limits & errors

The same plan gates and quotas apply as for the site endpoints:

- Forecast or historical API access → without access **403**.
- Monthly request limit → **429**.
- Strings per site limits the number of `strings` in the request → **422**.

You'll find your specific limits on the [Usage & Limits](https://pvnode.com/usage) page.
