API Tier1.shop
Collega il tuo servizio o agente AI: registrazioni, tariffe, ordini, link e stato dei pagamenti tramite un'unica API. I dati dei clienti sono accessibili solo tramite la loro chiave revocabile.
https://tier1.shop/wp-json/tier1-api/v1Guida rapida
Crea una chiave
Apri «API e Connessioni» nella tua dashboard o richiedi un link per la creazione della chiave via email tramite POST /api-key-requests.
Conferma email
L'agente chiama POST /registration-intents. Segui il link nell'email per confermare il tuo indirizzo; solo allora l'account e la chiave verranno creati. Telegram può essere aggiunto in seguito.
Primo ordine — cinque passaggi
- Scegli un piano.
GET /catalog/tariffseGET /balancesmostrerà i prezzi attuali e la disponibilità. - Conferma i dettagli.Concorda la quantità, gli URL, i testi anchor e la valuta con l'agente prima di creare il checkout.
- Ottieni il link di pagamento.
POST /checkout-intentsrestituirà un URL monouso; il pagamento viene elaborato solo sul sito web. - Verifica pagamento.
GET /checkout-intents/{id}mostrerà lo stato e il numero d'ordine WooCommerce. - Apri i link.
GET /orders/by-wc/{id}troverà gli ordini interni;placement_progressmostrerà lo stato di esecuzione.
/orders/by-wc/{id}, per l'ID interno usa /orders/{id}.Autorizzazione
Passa la chiave nell'intestazione HTTPS. Non inserirla nell'URL, in prompt pubblici o nei log. La chiave può essere revocata nell'account; il testo completo è mostrato solo durante la creazione.
Authorization: Bearer t1c_sk_YOUR_KEYPermessi chiave (scope)8
profile:readStato del Profilo e della Connessionebalance:readSaldo Servizi e Portafoglioorders:readVisualizza Ordinilinks:readVisualizza Linkcatalog:readCataloghi e Tariffeorders:writeCompila e invia ordini in bloccolinks:writeURL, Anchor, Testo circostante e Inviocheckout:createCrea Link di Pagamento SicuriLa chiave non consente all'agente di detrarre fondi direttamente dal wallet. Per le richieste di mutazione, un valore casuale Idempotency-Key di 8–128 caratteri è richiesto. Se la risposta viene persa, ripeti la stessa richiesta con la stessa chiave; per una nuova azione, creane una nuova.
Metodi API
I metodi sono organizzati in 10 gruppi. Apri quello richiesto per i parametri e un esempio di risposta; il contratto macchina completo si trova in OpenAPI JSON.
Замены URL/анкора 3
GET/links/{id}/replacementУсловия платной замены размещённой ссылки: доступность, остаток замен, текущие данные и актуальные товары. Денежных списаний нет. При нехватке купите замены через checkout и дождитесь replacement_credits_fulfilled=true.
Esempio di risposta
{
"link_id": 456,
"eligible": true,
"credits_available": 1,
"pending_replacement": false,
"purchase_offers": []
}POST/links/{id}/replacementПосле согласия клиента сохранить новые URL/анкор. Резервирует одну замену, но ещё не отправляет её в работу. expected_* берутся точно из свежих current_*; кошелёк не списывается.
Richiedi JSON
{
"confirmed": true,
"expected_url": "https://example.com/old",
"expected_anchor": "старый анкор",
"url": "https://example.com/new",
"anchor": "новый анкор"
}Esempio di risposta
{
"saved": true,
"link": {
"id": 456
},
"wallet_was_charged": false
}POST/links/{id}/replacement/submitОтправить только эту сохранённую замену. expected_* — уже новые данные. Проверяйте submission.submitted, submission.errors и статус; HTTP 200 сам по себе не означает принятия задачи. Это не замена донора.
Richiedi JSON
{
"confirmed": true,
"expected_url": "https://example.com/new",
"expected_anchor": "новый анкор"
}Esempio di risposta
{
"submission": {
"submitted": 1,
"errors": []
},
"link": {
"id": 456,
"status": "revision"
}
}Discovery 2
GET/capabilitiesFunzionalità API e link di connessione attuali.
Esempio di risposta
{
"name": "Tier1.shop API",
"api_enabled": true,
"public_registration": true
}GET/openapi.jsonSpecifica completa OpenAPI 3.1.
Esempio di risposta
{
"openapi": "3.1.0",
"info": {
"title": "Tier1.shop Client API"
}
}Registrati 3
POST/registration-intentsAvvia la registrazione per un nuovo cliente con conferma email obbligatoria.
Richiedi JSON
{
"email": "client@example.com",
"telegram_username": "@client",
"locale": "ru",
"issue_api_key": true
}Esempio di risposta
{
"accepted": true,
"request_id": "…",
"status_token": "…",
"status": "pending_email",
"expires_in": 86400
}GET/registration-intents/{id}?status_token={token}Verifica lo stato di una registrazione specifica.
Esempio di risposta
{
"status": "pending_email|email_verified|expired",
"email_verified": false,
"telegram_status": "not_requested|pending_bot_message|verified"
}POST/api-key-requestsRichiedi un link di creazione chiave monouso per un account esistente.
Richiedi JSON
{
"email": "client@example.com",
"name": "Мой агент"
}Esempio di risposta
{
"accepted": true,
"next_action": "…"
}Account 2
GET/profileProfilo, conferma email e tutti i canali Telegram.
Esempio di risposta
{
"account": {
"email": "client@example.com",
"email_verified": true,
"telegram_username": "@client",
"telegram_usernames": [
"@client",
"@manager"
]
}
}GET/balances?geo=allportafogli RUB/$ e servizi RU/internazionali non utilizzati.
Esempio di risposta
{
"wallets": {
"rub": {
"currency": "RUB",
"amount_minor": 0
},
"usd": {
"currency": "USD",
"amount_minor": 0
}
},
"service_balances": []
}Ordini 3
GET/orders?geo=all&page=1&per_page=20Elenco paginato degli ordini dell'account. per_page è limitato a 50: continua tramite next_page.
Esempio di risposta
{
"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}Un singolo ordine e i link per cabinet_order_id, non per il numero WooCommerce dell'email.
Esempio di risposta
{
"order": {
"cabinet_order_id": 123,
"wc_order_id": 456,
"geo": "ru"
},
"links": []
}GET/orders/by-wc/{id}Tutti gli ordini interni e i link tramite il numero WooCommerce del cliente.
Esempio di risposta
{
"wc_order_id": 456,
"count": 2,
"orders": [
{
"order": {
"cabinet_order_id": 123
},
"links": []
}
]
}Link 1
GET/links?geo=all&page=1&per_page=20Link con filtri per geo, stato e link_type; continua tramite next_page.
Esempio di risposta
{
"links": [],
"page": 1,
"per_page": 20,
"total": 0,
"has_more": false,
"next_page": null
}Catalogo 2
GET/catalog/tariffs?geo=ruProdotti, prezzi, valute e composizione esatta degli slot attuali.
Esempio di risposta
{
"geo": "ru",
"currency": "RUB",
"tariffs": [
{
"product_id": 3708,
"name": "…",
"price": {
"amount_minor": 200000
}
}
]
}GET/catalog/burzh-igamingSiti donatori iGaming anonimizzati, metriche, prezzo e slot disponibili.
Esempio di risposta
{
"donors": [],
"count": 0,
"price": {
"currency": "USD",
"amount_minor": 9400
}
}Bozze 3
PATCH/links/{id}Cambia URL, anchor text, testo circostante o programmazione senza inviare il link per l'elaborazione.
Richiedi JSON
{
"url": "https://example.com/page",
"anchor": "пример",
"context_text": "Окружающий текст с анкором пример.",
"scheduled_at": "2026-09-01T09:00:00Z"
}Esempio di risposta
{
"link": {
"id": 456,
"status": "awaiting_confirmation"
}
}PUT/links/{id}Alias PATCH per i clienti che inviano un set parziale di campi modificabili.
Richiedi JSON
{
"anchor": "новый анкор"
}Esempio di risposta
{
"link": {
"id": 456,
"status": "awaiting_confirmation"
}
}POST/orders/{id}/bulk-updateCompilazione massiva delle righe d'ordine senza invio in produzione.
Richiedi JSON
{
"links": [
{
"url": "https://example.com/a",
"anchor": "ключ"
},
{
"url": "https://example.com/b",
"anchor": "другой ключ"
}
]
}Esempio di risposta
{
"updated": 2,
"errors": []
}Invia 2
POST/links/{id}/submitInvia un singolo link pronto in produzione dopo la conferma del cliente.
Richiedi JSON
[]Esempio di risposta
{
"link": {
"id": 456,
"status": "in_progress"
}
}POST/orders/{id}/submit-allInvia tutte le righe degli ordini pronti dopo la conferma del cliente.
Richiedi JSON
[]Esempio di risposta
{
"submitted": 2,
"skipped": 0
}Pagamento 2
POST/checkout-intentsCrea un link sicuro monouso per il checkout standard; non vengono addebitati fondi.
Richiedi JSON
{
"geo": "ru",
"items": [
{
"product_id": 3708,
"quantity": 1
}
],
"links": [
{
"type": "yearly",
"url": "https://example.com/page",
"anchor": "пример"
}
]
}Esempio di risposta
{
"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}Verifica la comparsa del pagamento e dell'ordine nell'account tramite intent_id senza riaprire il link monouso.
Esempio di risposta
{
"intent_id": "…",
"state": "paid",
"wc_order_id": 456,
"cabinet_order_ids": [
123
],
"fulfilment_pending": false
}Se la richiesta è fallita
Le liste restituiscono un massimo di 50 righe per pagina. Se has_more=true, vai a next_page. L'importo preliminare nell'API non sostituisce l'importo finale e i metodi di pagamento disponibili al checkout.
Hai bisogno di MCP invece di REST API?
La stessa chiave revocabile funziona per il client MCP con header HTTP. Puoi anche connetterti via OAuth se l'applicazione lo supporta.
Apri istruzioni MCP



