Skip to content

Landings ​

Through the API landings can only be looked up: the list is there to get a landing's identifier and connect it to a PWA as a white page. Landings are uploaded and edited in the panel, see the "Landing pages" section.

MethodAddressWhat it does
GET/landingsList landings

Replace YOUR_KEY and panel.example.com with your own.

List landings ​

GET/landings

Landings of your teams, recently changed first. Archived ones are not shown.

ParameterWhat it filters
searchPart of the name
team_idTeam
group_idAccess group
archived1 - only archived
page, per_pagePage and its size (100 by default)
bash
curl "https://panel.example.com/api/landings?search=Promo" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Accept: application/json"
php
<?php
// composer require guzzlehttp/guzzle
require 'vendor/autoload.php';

$api = new GuzzleHttp\Client([
    'base_uri' => 'https://panel.example.com/api/',
    'headers' => ['Authorization' => 'Bearer YOUR_KEY', 'Accept' => 'application/json'],
    'timeout' => 30,
]);

$response = $api->get('landings', ['query' => ['search' => 'Promo']]);
$landings = json_decode($response->getBody(), true)['data']['landings'];

foreach ($landings as $landing) {
    echo "{$landing['id']} {$landing['name']}" . PHP_EOL;
}
python
# pip install requests
import requests

API = "https://panel.example.com/api"
HEADERS = {"Authorization": "Bearer YOUR_KEY", "Accept": "application/json"}

response = requests.get(f"{API}/landings", headers=HEADERS, params={"search": "Promo"}, timeout=30)
landings = response.json()["data"]["landings"]

for landing in landings:
    print(landing["id"], landing["name"])
js
// Node.js 18+, no dependencies; save as script.mjs
const API = 'https://panel.example.com/api';
const headers = { Authorization: 'Bearer YOUR_KEY', Accept: 'application/json', 'Content-Type': 'application/json' };

const response = await fetch(`${API}/landings?search=Promo`, { headers, signal: AbortSignal.timeout(30000) });
const { data } = await response.json();

for (const landing of data.landings) {
  console.log(landing.id, landing.name);
}
Response
json
{
  "data": {
    "meta": { "current_page": 1, "per_page": 100, "last_page": 1, "total": 1 },
    "landings": [
      {
        "id": "WZAX",
        "name": "Promo LP",
        "type": "prelanding",
        "archived": false,
        "created_at": "05 Oct 2026 14:23",
        "updated_at": "05 Oct 2026 14:23",
        "team": { "id": "WQby", "name": "Team A" },
        "user": { "id": "WZAX", "name": "Buyer", "email": "[email protected]" },
        "groups": []
      }
    ]
  }
}

type is the kind of page: white_page (a white page) or prelanding (a pre-landing).

Only the common errors - see "API introduction".

Connect a landing to a PWA ​

A landing is connected in the PWA settings: in config.general.white set type: "load" and the landing's identifier in value. The landing must be in one of your teams.

json
{
  "config": {
    "general": {
      "white": { "type": "load", "value": "WZAX" }
    }
  }
}

For how to send the changed settings, see "Updating, turning on and off" in the API section "PWA": config is replaced as a whole, so get the current one first.

Errors
CodemessageWhen
422The selected white page landing is invalid.value is a landing that doesn't exist
422You do not have access to this resourceThe landing belongs to another team