---
title: "Launch a landing hypothesis — 990 ₽"
method: POST
path: "/landings"
tags: ["Landings"]
---

# Launch a landing hypothesis — 990 ₽

`POST /landings`

## Request

- Base URL: `https://vibemarketolog.ru/api/agent`
- URL: `https://vibemarketolog.ru/api/agent/landings`
- Auth: HTTP bearer

Hosts your HTML at /w/{slug}: forms deliver leads to the owner (cabinet, Telegram, email), html_b turns on a 50/50 A/B test on one URL with a significance verdict, a test lead is sent through the real receiver. Passport must pass or nothing is charged. dry_run=true returns passport and price. Same idempotency_key (or same HTML) replays without a second charge. Failure after charge → refund to the original transaction. MCP twin: landing_launch.

## Request body

- object
  - `title` string, required
  - `html` string, required
  - `html_b` string
  - `hypothesis` string
  - `slug` string
  - `assets` object[]
    - `path` string, required
    - `content_base64` string, required
  - `metrika_counter_id` string
  - `idempotency_key` string
  - `dry_run` boolean

## Response `200`

OK

## Other responses

- `402`: insufficient_balance / email_confirmation_required
- `403`: sandbox_not_allowed
- `422`: passport_failed / bad_input / variant_b_identical
- `429`: rate_limited / daily_spend_limit_exceeded / already_running

---

[API](https://skmtc.dev/vibemarketolog/apis/agent-api.md) · [All operations](https://skmtc.dev/vibemarketolog/apis/agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vibemarketolog/apis/agent-api/revisions/6a74f8ad5d58?raw)
