---
title: "Precheck Profiles"
method: POST
path: "/api/precheck"
---

# Precheck Profiles

`POST /api/precheck`

W-PAY: bounded per-profile privacy/empty probe (run BEFORE charge).
Returns per-profile {url, platform, private, reason}. private==True when the
account is private OR has zero public posts. Probe is cheap (~$0.002/profile
via SC, ~$0.005 for X) with a hard profile cap; transient failures never
flag a profile as private (happy path is protected).

Link gate (2026-08-11): a post/permalink/company link is caught HERE —
before the payment modal opens and before we spend a probe on it — so the
customer fixes the link instead of paying for a scan of a handle nobody
owns. It rides the existing per-profile {private, reason} contract, which
/api/checkout/create already turns into a pre-charge 400 and the form
already renders verbatim.

## Request body

- PrecheckRequest
  - `profiles` union, required
    - object
    - unknown[]
      - unknown
  - `spl_session_id` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/aipoweredsocialscan/apis/accountability.md) · [All operations](https://skmtc.dev/aipoweredsocialscan/apis/accountability/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/aipoweredsocialscan/accountability/revisions/6ce776993b65/schema)
