REST API · OpenAPI 3.1

API Tier1.shop

Verbinden Sie Ihren Service oder KI-Agenten: Registrierung, Tarife, Bestellungen, Links und Zahlungsstatus über eine einzige API. Kundendaten sind nur über deren widerrufbaren Schlüssel zugänglich.

API Basis-URL
https://tier1.shop/wp-json/tier1-api/v1

Erste Schritte

Konto existiert bereits

Schlüssel erstellen

Öffnen «API und Verbindungen» in Ihrem Dashboard oder fordern Sie einen Link zur Schlüsselerstellung per E-Mail über POST /api-key-requests.

Neuer Kunde

E-Mail bestätigen

Der Agent ruft auf POST /registration-intents. Folgen Sie dem Link in der E-Mail, um Ihre Adresse zu bestätigen; erst dann werden das Konto und der Schlüssel erstellt. Telegram kann später hinzugefügt werden.

Erste Bestellung — fünf Schritte

  1. Wählen Sie einen Plan aus.GET /catalog/tariffs und GET /balances zeigt aktuelle Preise und Verfügbarkeit an.
  2. Details bestätigenStimmen Sie sich vor der Erstellung des Checkouts mit dem Agenten über die Menge, URLs, Ankertexte und die Währung ab.
  3. Zahlungslink abrufenPOST /checkout-intents gibt eine einmalige URL zurück; die Zahlung wird nur auf der Website verarbeitet.
  4. Zahlung verifizieren.GET /checkout-intents/{id} zeigt den Status und die WooCommerce-Bestellnummer an.
  5. Links öffnen.GET /orders/by-wc/{id} finden Sie interne Bestellungen; placement_progress zeigt den Ausführungsstatus an.
Wichtig: die Kaufnummer aus der E-Mail und die Kontobestell-ID sind unterschiedliche Werte. Für die E-Mail-Nummer verwenden Sie /orders/by-wc/{id}, für die interne ID verwenden Sie /orders/{id}.

Autorisierung

Übergeben Sie den Schlüssel im HTTPS-Header. Fügen Sie ihn nicht in die URL, öffentliche Prompts oder Logs ein. Der Schlüssel kann im Konto widerrufen werden; sein vollständiger Text wird nur während der Erstellung angezeigt.

Authorization: Bearer t1c_sk_YOUR_KEY
Wichtige Berechtigungen (Scopes)8
profile:readProfil- und Verbindungsstatus
balance:readService- und Wallet-Guthaben
orders:readBestellungen anzeigen
links:readLinks anzeigen
catalog:readKataloge und Tarife
orders:writeBestellungen massenhaft ausfüllen und absenden
links:writeURLs, Anker, umgebender Text und Einreichung
checkout:createSichere Zahlungslinks erstellen

Der Schlüssel erlaubt es dem Agenten nicht, Gelder direkt vom Wallet abzuziehen. Für Mutierungsanfragen ein zufälliger Idempotency-Key von 8–128 Zeichen ist erforderlich. Falls die Antwort verloren geht, wiederholen Sie dieselbe Anfrage mit demselben Schlüssel; für eine neue Aktion erstellen Sie einen neuen.

API-Methoden

Methoden sind unterteilt in 9 Gruppen. Öffnen Sie die entsprechende Gruppe für Parameter und ein Antwortbeispiel; der vollständige Maschinenvertrag befindet sich in OpenAPI JSON.

20 Methoden

Discovery 2

GET/capabilitiesAPI-Funktionen und aktuelle Verbindungslinks.
Zugriff: NeinScope: —

Antwortbeispiel

{
    "name": "Tier1.shop API",
    "api_enabled": true,
    "public_registration": true
}
GET/openapi.jsonVollständige OpenAPI 3.1 Spezifikation.
Zugriff: NeinScope: —

Antwortbeispiel

{
    "openapi": "3.1.0",
    "info": {
        "title": "Tier1.shop Client API"
    }
}

Registrieren 3

POST/registration-intentsRegistrierung für einen neuen Kunden mit obligatorischer E-Mail-Bestätigung starten.
Zugriff: NeinScope: —

JSON anfordern

{
    "email": "client@example.com",
    "telegram_username": "@client",
    "locale": "ru",
    "issue_api_key": true
}

Antwortbeispiel

{
    "accepted": true,
    "request_id": "…",
    "status_token": "…",
    "status": "pending_email",
    "expires_in": 86400
}
GET/registration-intents/{id}?status_token={token}Status einer spezifischen Registrierung prüfen.
Zugriff: Status tokenScope: —

Antwortbeispiel

{
    "status": "pending_email|email_verified|expired",
    "email_verified": false,
    "telegram_status": "not_requested|pending_bot_message|verified"
}
POST/api-key-requestsEinmaligen Link zur Schlüsselerstellung für ein bestehendes Konto anfordern.
Zugriff: NeinScope: —

JSON anfordern

{
    "email": "client@example.com",
    "name": "Мой агент"
}

Antwortbeispiel

{
    "accepted": true,
    "next_action": "…"
}

Konto 2

GET/profileProfil, E-Mail-Bestätigung und alle Telegram-Kanäle.
Zugriff: BearerScope: profile:read

Antwortbeispiel

{
    "account": {
        "email": "client@example.com",
        "email_verified": true,
        "telegram_username": "@client",
        "telegram_usernames": [
            "@client",
            "@manager"
        ]
    }
}
GET/balances?geo=allRUB/$ Geldbörsen und ungenutzte RU/internationale Dienste.
Zugriff: BearerScope: balance:read

Antwortbeispiel

{
    "wallets": {
        "rub": {
            "currency": "RUB",
            "amount_minor": 0
        },
        "usd": {
            "currency": "USD",
            "amount_minor": 0
        }
    },
    "service_balances": []
}

Bestellungen 3

GET/orders?geo=all&page=1&per_page=20Paginiertes Verzeichnis der Kontobestellungen. per_page ist auf 50 begrenzt: fortfahren über next_page.
Zugriff: BearerScope: orders:read

Antwortbeispiel

{
    "orders": [
        {
            "cabinet_order_id": 123,
            "wc_order_id": 456,
            "placement_progress": {
                "completed": 2,
                "total": 3,
                "fully_placed": false
            }
        }
    ],
    "page": 1,
    "per_page": 20,
    "has_more": false,
    "next_page": null
}
GET/orders/{id}Eine einzelne Bestellung und Links nach cabinet_order_id, nicht nach der WooCommerce-Nummer aus der E-Mail.
Zugriff: BearerScope: orders:read

Antwortbeispiel

{
    "order": {
        "cabinet_order_id": 123,
        "wc_order_id": 456,
        "geo": "ru"
    },
    "links": []
}
GET/orders/by-wc/{id}Alle internen Bestellungen und Links nach der WooCommerce-Nummer des Kunden.
Zugriff: BearerScope: orders:read

Antwortbeispiel

{
    "wc_order_id": 456,
    "count": 2,
    "orders": [
        {
            "order": {
                "cabinet_order_id": 123
            },
            "links": []
        }
    ]
}

Links 1

GET/links?geo=all&page=1&per_page=20Links mit Geo-, Status- und Linktyp-Filtern; fortfahren über next_page.
Zugriff: BearerScope: links:read

Antwortbeispiel

{
    "links": [],
    "page": 1,
    "per_page": 20,
    "total": 0,
    "has_more": false,
    "next_page": null
}

Katalog 2

GET/catalog/tariffs?geo=ruAktuelle Produkte, Preise, Währungen und genaue Slot-Zusammensetzung.
Zugriff: BearerScope: catalog:read

Antwortbeispiel

{
    "geo": "ru",
    "currency": "RUB",
    "tariffs": [
        {
            "product_id": 3708,
            "name": "…",
            "price": {
                "amount_minor": 200000
            }
        }
    ]
}
GET/catalog/burzh-igamingAnonymisierte iGaming-Donor-Seiten, Metriken, Preis und verfügbare Slots.
Zugriff: BearerScope: catalog:read

Antwortbeispiel

{
    "donors": [],
    "count": 0,
    "price": {
        "currency": "USD",
        "amount_minor": 9400
    }
}

Entwürfe 3

PATCH/links/{id}URL, Ankertext, umgebenden Text oder Zeitplan ändern, ohne den Link zur Bearbeitung einzureichen.
Zugriff: Bearer + Idempotency-KeyScope: links:write

JSON anfordern

{
    "url": "https://example.com/page",
    "anchor": "пример",
    "context_text": "Окружающий текст с анкором пример.",
    "scheduled_at": "2026-09-01T09:00:00Z"
}

Antwortbeispiel

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
PUT/links/{id}PATCH-Alias für Kunden, die einen teilweisen Satz modifizierbarer Felder senden.
Zugriff: Bearer + Idempotency-KeyScope: links:write

JSON anfordern

{
    "anchor": "новый анкор"
}

Antwortbeispiel

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
POST/orders/{id}/bulk-updateBestellzeilen massenhaft ausfüllen, ohne an die Produktion zu senden.
Zugriff: Bearer + Idempotency-KeyScope: orders:write

JSON anfordern

{
    "links": [
        {
            "url": "https://example.com/a",
            "anchor": "ключ"
        },
        {
            "url": "https://example.com/b",
            "anchor": "другой ключ"
        }
    ]
}

Antwortbeispiel

{
    "updated": 2,
    "errors": []
}

Senden 2

POST/links/{id}/submitEinen fertigen Link nach Kundenbestätigung in die Produktion senden.
Zugriff: Bearer + Idempotency-KeyScope: links:write

JSON anfordern

[]

Antwortbeispiel

{
    "link": {
        "id": 456,
        "status": "in_progress"
    }
}
POST/orders/{id}/submit-allAlle fertigen Bestellzeilen nach Kundenbestätigung senden.
Zugriff: Bearer + Idempotency-KeyScope: orders:write

JSON anfordern

[]

Antwortbeispiel

{
    "submitted": 2,
    "skipped": 0
}

Zahlung 2

POST/checkout-intentsErstellen Sie einen sicheren Einmal-Link zum Standard-Checkout; es werden keine Beträge berechnet.
Zugriff: Bearer + Idempotency-KeyScope: checkout:create

JSON anfordern

{
    "geo": "ru",
    "items": [
        {
            "product_id": 3708,
            "quantity": 1
        }
    ],
    "links": [
        {
            "type": "yearly",
            "url": "https://example.com/page",
            "anchor": "пример"
        }
    ]
}

Antwortbeispiel

{
    "intent_id": "32-символьный ID",
    "checkout_url": "https://tier1.shop/?t1c_agent_checkout=…",
    "expires_at": "…",
    "summary": {
        "currency": "RUB",
        "total_minor": 200000
    },
    "payment_preview": {
        "wallet_available_minor": 0,
        "nominal_wallet_gap_minor": 200000,
        "final_amount_at_checkout": true
    }
}
GET/checkout-intents/{id}Prüfen Sie den Zahlungseingang und die Bestellung im Konto über die intent_id, ohne den Einmallink erneut zu öffnen.
Zugriff: BearerScope: checkout:create

Antwortbeispiel

{
    "intent_id": "…",
    "state": "paid",
    "wc_order_id": 456,
    "cabinet_order_ids": [
        123
    ],
    "fulfilment_pending": false
}

Falls die Anfrage fehlgeschlagen ist

400 / 422Bitte korrigieren Sie die Parameter. Wiederholen Sie keine ungültigen Anfragen.
401 / 403Prüfen Sie den Schlüssel und dessen Berechtigungen; erstellen Sie gegebenenfalls einen neuen.
404Prüfen Sie die Nummer und den ID-Typ. Drittbestellungen werden nicht offengelegt.
409Aktualisieren Sie den Bestellstatus oder verwenden Sie einen neuen Schlüssel für eine neue Aktion.
429 / 5xxBitte warten und erneut versuchen. Verwenden Sie bei einer mutierenden Anfrage denselben Idempotency-Key und dasselbe JSON.

Listen geben maximal 50 Zeilen pro Seite zurück. Wenn has_more=true, gehen Sie zu next_page. Der vorläufige Betrag in der API ersetzt nicht den endgültigen Betrag und die verfügbaren Zahlungsmethoden beim Checkout.

Benötigen Sie MCP anstelle der REST-API?

Der gleiche widerrufliche Key funktioniert für den MCP-Client mit HTTP-Headern. Sie können sich auch via OAuth verbinden, sofern die Anwendung dies unterstützt.

MCP-Anleitungen öffnen