---
title: "Scan a URL"
method: POST
path: "/v1/scan"
tags: ["Scanner"]
---

# Scan a URL

`POST /v1/scan`

## Request

- Base URL: `https://app.getshareglow.com`
- URL: `https://app.getshareglow.com/v1/scan`
- Auth: HTTP bearer

Fetches the page through the SSRF-guarded scanner and returns the score, issues and every tag found.

## Request body

- object
  - `url` string, uri, required

## Response `200`

Scan result

- ScanResult
  - `url` string, uri, required
  - `score` integer, required
  - `errors` integer
  - `warnings` integer
  - `issues` object[], required
  - `tags` object[], required
    - `rule` string
    - `tag` string
    - `status` string
    - `message` string
    - `value` string, nullable
  - `preview` object, required
    - `title` string, nullable
    - `description` string, nullable
    - `image` string, nullable
    - `domain` string
  - `scannedAt` string, date-time
  - `cached` boolean

## Other responses

- `400`: Validation failed (`bad_request`, `invalid_url`, ...).
- `401`: Missing, unknown or revoked API key.
- `403`: The API key is valid but lacks the scope this endpoint needs (images, templates, scan, links, monitors or ai).
- `413`: The JSON body is over 1 MB (`payload_too_large`).
- `422`: The page cannot be scanned: robots.txt or the site refuses, the page is too large, or it redirects too many times (`robots_blocked`, `forbidden`, `too_large`, `too_many_redirects`).
- `429`: Daily call limit reached. Retry after the `Retry-After` seconds.
- `502`: The target site could not be reached (`unreachable`).
- `504`: The target site did not answer in time (`timeout`).

---

[API](https://skmtc.dev/getshareglow/apis/shareglow-api.md) · [All operations](https://skmtc.dev/getshareglow/apis/shareglow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getshareglow/apis/shareglow-api/revisions/3ea838c40d3c?raw)
