REST API · OpenAPI 3.1

API Tier1.shop

Połącz swoją usługę lub agenta AI: rejestracja, stawki, zamówienia, linki i status płatności poprzez jedno API. Dane klientów są dostępne wyłącznie za pomocą ich odwoływalnego klucza.

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

Pierwsze kroki

Konto już istnieje

Utwórz klucz

Otwórz «API i połączenia» w panelu sterowania lub poproś o link do utworzenia klucza drogą mailową przez POST /api-key-requests.

Nowy Klient

Potwierdź e-mail

Agent wywołuje POST /registration-intents. Kliknij link w wiadomości e-mail, aby potwierdzić swój adres; dopiero wtedy konto i klucz zostaną utworzone. Telegram można dodać później.

Pierwsze zamówienie — pięć kroków

  1. Wybierz plan.GET /catalog/tariffs i GET /balances wyświetli aktualne ceny i dostępność.
  2. Potwierdź szczegóły.Przed utworzeniem zamówienia uzgodnij ilość, adresy URL, teksty anchor oraz walutę z agentem.
  3. Pobierz link do płatności.POST /checkout-intents zwróci jednorazowy adres URL; płatność jest przetwarzana wyłącznie na stronie internetowej.
  4. Zweryfikuj płatność.GET /checkout-intents/{id} wyświetli status i numer zamówienia WooCommerce.
  5. Otwórz linki.GET /orders/by-wc/{id} znajdzie zamówienia wewnętrzne; placement_progress wyświetli status realizacji.
Ważne: numer zakupu z e-maila i identyfikator zamówienia na koncie to różne wartości. W przypadku numeru e-mail użyj /orders/by-wc/{id}, dla wewnętrznego ID użyj /orders/{id}.

Autoryzacja

Prześlij klucz w nagłówku HTTPS. Nie wstawiaj go do adresu URL, publicznych promptów ani logów. Klucz można cofnąć w koncie; jego pełna treść jest wyświetlana tylko podczas tworzenia.

Authorization: Bearer t1c_sk_YOUR_KEY
Kluczowe uprawnienia (zakresy)8
profile:readProfil i status połączenia
balance:readSaldo usług i portfela
orders:readWyświetl zamówienia
links:readWyświetl linki
catalog:readKatalogi i stawki
orders:writeMasowe wypełnianie i wysyłanie zamówień
links:writeURL-e, kotwice, tekst otaczający i zgłoszenie
checkout:createTwórz bezpieczne linki płatności

Klucz nie pozwala agentowi na bezpośrednie pobieranie środków z portfela. W przypadku żądań mutujących, losowy Idempotency-Key od 8 do 128 znaków jest wymagane. Jeśli odpowiedź zostanie utracona, powtórz to samo zapytanie z tym samym kluczem; w przypadku nowej akcji utwórz nowy klucz.

Metody API

Metody są podzielone na 9 grupy. Otwórz odpowiednią w celu sprawdzenia parametrów i przykładu odpowiedzi; pełna umowa maszynowa znajduje się w OpenAPI JSON.

20 metody

Discovery 2

GET/capabilitiesMożliwości API i aktualne linki połączeń.
Dostęp: NieScope: —

Przykład odpowiedzi

{
    "name": "Tier1.shop API",
    "api_enabled": true,
    "public_registration": true
}
GET/openapi.jsonPełna specyfikacja OpenAPI 3.1.
Dostęp: NieScope: —

Przykład odpowiedzi

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

Zarejestruj się 3

POST/registration-intentsRozpocznij rejestrację nowego klienta z obowiązkowym potwierdzeniem e-mail.
Dostęp: NieScope: —

Pobierz JSON

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

Przykład odpowiedzi

{
    "accepted": true,
    "request_id": "…",
    "status_token": "…",
    "status": "pending_email",
    "expires_in": 86400
}
GET/registration-intents/{id}?status_token={token}Sprawdź status konkretnej rejestracji.
Dostęp: Status tokenScope: —

Przykład odpowiedzi

{
    "status": "pending_email|email_verified|expired",
    "email_verified": false,
    "telegram_status": "not_requested|pending_bot_message|verified"
}
POST/api-key-requestsPoproś o link do jednorazowego utworzenia klucza dla istniejącego konta.
Dostęp: NieScope: —

Pobierz JSON

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

Przykład odpowiedzi

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

Konto 2

GET/profileProfil, potwierdzenie e-mail i wszystkie kanały Telegram.
Dostęp: BearerScope: profile:read

Przykład odpowiedzi

{
    "account": {
        "email": "client@example.com",
        "email_verified": true,
        "telegram_username": "@client",
        "telegram_usernames": [
            "@client",
            "@manager"
        ]
    }
}
GET/balances?geo=allportfele RUB/$ oraz nieużywane usługi RU/międzynarodowe.
Dostęp: BearerScope: balance:read

Przykład odpowiedzi

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

Zamówienia 3

GET/orders?geo=all&page=1&per_page=20Pagnowana lista zamówień konta. per_page jest ograniczone do 50: kontynuuj przez next_page.
Dostęp: BearerScope: orders:read

Przykład odpowiedzi

{
    "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}Pojedyncze zamówienie i linki według cabinet_order_id, a nie numeru WooCommerce z e-maila.
Dostęp: BearerScope: orders:read

Przykład odpowiedzi

{
    "order": {
        "cabinet_order_id": 123,
        "wc_order_id": 456,
        "geo": "ru"
    },
    "links": []
}
GET/orders/by-wc/{id}Wszystkie zamówienia wewnętrzne i linki według numeru WooCommerce klienta.
Dostęp: BearerScope: orders:read

Przykład odpowiedzi

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

Linki 1

GET/links?geo=all&page=1&per_page=20Linki z filtrami geo, statusu i typu linku; kontynuuj przez next_page.
Dostęp: BearerScope: links:read

Przykład odpowiedzi

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

Katalog 2

GET/catalog/tariffs?geo=ruAktualne produkty, ceny, waluty i dokładny skład slotów.
Dostęp: BearerScope: catalog:read

Przykład odpowiedzi

{
    "geo": "ru",
    "currency": "RUB",
    "tariffs": [
        {
            "product_id": 3708,
            "name": "…",
            "price": {
                "amount_minor": 200000
            }
        }
    ]
}
GET/catalog/burzh-igamingZanonimizowane strony donora iGaming, metryki, cena i dostępne sloty.
Dostęp: BearerScope: catalog:read

Przykład odpowiedzi

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

Szkice 3

PATCH/links/{id}Zmień URL, tekst kotwicy, tekst otaczający lub harmonogram bez przesyłania linku do przetworzenia.
Dostęp: Bearer + Idempotency-KeyScope: links:write

Pobierz JSON

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

Przykład odpowiedzi

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
PUT/links/{id}Alias PATCH dla klientów przesyłających częściowy zestaw modyfikowalnych pól.
Dostęp: Bearer + Idempotency-KeyScope: links:write

Pobierz JSON

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

Przykład odpowiedzi

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
POST/orders/{id}/bulk-updateMasowe wypełnianie wierszy zamówień bez wysyłania do produkcji.
Dostęp: Bearer + Idempotency-KeyScope: orders:write

Pobierz JSON

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

Przykład odpowiedzi

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

Wyślij 2

POST/links/{id}/submitWyślij jeden gotowy link do produkcji po potwierdzeniu klienta.
Dostęp: Bearer + Idempotency-KeyScope: links:write

Pobierz JSON

[]

Przykład odpowiedzi

{
    "link": {
        "id": 456,
        "status": "in_progress"
    }
}
POST/orders/{id}/submit-allWyślij wszystkie gotowe wiersze zamówienia po potwierdzeniu klienta.
Dostęp: Bearer + Idempotency-KeyScope: orders:write

Pobierz JSON

[]

Przykład odpowiedzi

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

Płatność 2

POST/checkout-intentsUtwórz bezpieczny jednorazowy link do standardowego procesu zamówienia; żadne środki nie zostaną pobrane.
Dostęp: Bearer + Idempotency-KeyScope: checkout:create

Pobierz JSON

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

Przykład odpowiedzi

{
    "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}Sprawdź pojawienie się płatności i zamówienia na koncie za pomocą intent_id bez ponownego otwierania jednorazowego linku.
Dostęp: BearerScope: checkout:create

Przykład odpowiedzi

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

Jeśli żądanie nie powiodło się

400 / 422Popraw parametry. Nie powtarzaj tego samego błędnego żądania.
401 / 403Sprawdź klucz i jego uprawnienia; w razie potrzeby utwórz nowy.
404Sprawdź numer i typ identyfikatora. Zamówienia stron trzecich nie są ujawniane.
409Zaktualizuj status zamówienia lub użyj nowego klucza do nowej akcji.
429 / 5xxZaczekaj i spróbuj ponownie. W przypadku żądania mutującego zachowaj ten sam Idempotency-Key i JSON.

Listy zwracają maksymalnie 50 wierszy na stronę. Jeśli has_more=true, przejdź do next_page. Wstępna kwota w API nie zastępuje kwoty końcowej ani dostępnych metod płatności w koszyku.

Potrzebujesz MCP zamiast REST API?

Ten sam odwołalny klucz działa dla klienta MCP z nagłówkami HTTP. Możesz również połączyć się poprzez OAuth, jeśli aplikacja go obsługuje.

Otwórz instrukcje MCP