# GET /api/v1/logs

> Read the tail of one log

- Group: logs
- Tier: R
- Required scope: read:hosting
- Docs: https://api.inleed.com/reference/logs/read-logs

## Description

Returns `{target, kind, source, path, lines[], lineCount, truncated}`. `truncated` means the tail was capped at the requested `lines` (500 max), not that anything was lost. `kind=email` needs an email address as `input`; the other kinds take a domain.

## Query parameters

- `input` — string (required). A domain, email address, website URL, or Inleed service id — for example example.se, info@example.se or 42976. Resolved to the owning account automatically, and the resolved target is echoed back in the response.
- `kind` — enum (required). Which log: error (website errors), access (web requests), or email (mail logs — needs an email address as input). One of error, access, email.
- `contains` — string. Only return lines containing this substring (case-insensitive). Use it to find one request or error without pulling the whole log.
- `lines` — integer. How many of the most recent lines to return. Default 50, maximum 500. Range 1–500.

## Request

```bash
curl -X GET "https://mcp.inleed.com/api/v1/logs?input=example.se&kind=error&contains=example.se&lines=1" \
  -H "Authorization: Bearer inl_live_…"
```

## Errors

- **400**  — codes: invalid_request
- **401** No token was presented, or the token is revoked, expired or unknown. — codes: unauthorized, token_expired, token_revoked
- **403** The token lacks a required scope, or this account does not own the resource. — codes: insufficient_scope, domain_not_owned
- **404** No such resource for this account. — codes: not_found
- **422** Validation error — codes: validation_failed
- **429** The rate limit for this token is exhausted. See `Retry-After`. — codes: rate_limited
- **500** Something went wrong on our side. The failure is logged against `requestId`. — codes: internal_error

## Related

- GET /api/v1/logs/available — https://api.inleed.com/reference/logs/list-available-logs

