REST API · OpenAPI 3.1

API Tier1.shop

Conecte su servicio o agente de IA: registros, tarifas, pedidos, enlaces y estado de pago a través de una única API. Los datos del cliente son accesibles únicamente mediante su clave revocable.

URL base de la API
https://tier1.shop/wp-json/tier1-api/v1

Primeros pasos

La cuenta ya existe

Crear una clave

Abrir «API y Conexiones» en su panel de control o solicite un enlace de creación de clave por correo electrónico a través de POST /api-key-requests.

Nuevo cliente

Confirmar correo electrónico

El agente llama a POST /registration-intents. Siga el enlace del correo electrónico para confirmar su dirección; solo entonces se crearán la cuenta y la clave. Telegram se puede añadir más tarde.

Primer pedido: cinco pasos

  1. Elija un plan.GET /catalog/tariffs y GET /balances mostrará los precios actuales y la disponibilidad.
  2. Confirmar los detalles.Acuerde la cantidad, las URLs, los textos de anclaje y la moneda con el agente antes de crear el proceso de pago.
  3. Obtener el enlace de pago.POST /checkout-intents devolverá una URL de un solo uso; el pago se procesa únicamente en el sitio web.
  4. Verificar pago.GET /checkout-intents/{id} mostrará el estado y el número de pedido de WooCommerce.
  5. Abrir enlaces.GET /orders/by-wc/{id} encontrará los pedidos internos; placement_progress mostrará el estado de ejecución.
Importante: el número de compra del correo electrónico y el ID del pedido de la cuenta son valores diferentes. Para el número de correo electrónico use /orders/by-wc/{id}, para el ID interno use /orders/{id}.

Autorización

Envía la clave en la cabecera HTTPS. No la insertes en la URL, en prompts públicos ni en registros. La clave puede ser revocada en la cuenta; su texto completo se muestra solo durante la creación.

Authorization: Bearer t1c_sk_YOUR_KEY
Permisos clave (scopes)8
profile:readEstado del perfil y de la conexión
balance:readSaldos de Servicio y Monedero
orders:readVer pedidos
links:readVer enlaces
catalog:readCatálogos y Tarifas
orders:writeRellenar y enviar pedidos en lote
links:writeURLs, anclas, texto circundante y envío
checkout:createCrear enlaces de pago seguros

La clave no permite que el agente deduzca fondos de la cartera directamente. Para solicitudes de mutación, un Idempotency-Key de 8–128 caracteres es obligatorio. Si la respuesta se pierde, repita la misma solicitud con la misma clave; para una acción nueva, cree una nueva.

Métodos de la API

Los métodos están organizados en 9 grupos. Abra el necesario para ver los parámetros y un ejemplo de respuesta; el contrato completo de la máquina está en OpenAPI JSON.

20 métodos

Discovery 2

GET/capabilitiesCapacidades de la API y enlaces de conexión actuales.
Acceso: NoScope: —

Ejemplo de respuesta

{
    "name": "Tier1.shop API",
    "api_enabled": true,
    "public_registration": true
}
GET/openapi.jsonEspecificación completa de OpenAPI 3.1.
Acceso: NoScope: —

Ejemplo de respuesta

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

Registrarse 3

POST/registration-intentsIniciar el registro de un nuevo cliente con confirmación de correo electrónico obligatoria.
Acceso: NoScope: —

Solicitar JSON

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

Ejemplo de respuesta

{
    "accepted": true,
    "request_id": "…",
    "status_token": "…",
    "status": "pending_email",
    "expires_in": 86400
}
GET/registration-intents/{id}?status_token={token}Comprobar el estado de un registro específico.
Acceso: Status tokenScope: —

Ejemplo de respuesta

{
    "status": "pending_email|email_verified|expired",
    "email_verified": false,
    "telegram_status": "not_requested|pending_bot_message|verified"
}
POST/api-key-requestsSolicite un enlace de creación de clave única para una cuenta existente.
Acceso: NoScope: —

Solicitar JSON

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

Ejemplo de respuesta

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

Cuenta 2

GET/profilePerfil, confirmación de correo electrónico y todos los canales de Telegram.
Acceso: BearerScope: profile:read

Ejemplo de respuesta

{
    "account": {
        "email": "client@example.com",
        "email_verified": true,
        "telegram_username": "@client",
        "telegram_usernames": [
            "@client",
            "@manager"
        ]
    }
}
GET/balances?geo=allmonederos RUB/$ y servicios RU/internacionales no utilizados.
Acceso: BearerScope: balance:read

Ejemplo de respuesta

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

Pedidos 3

GET/orders?geo=all&page=1&per_page=20Lista paginada de pedidos de la cuenta. per_page está limitado a 50: continúe a través de next_page.
Acceso: BearerScope: orders:read

Ejemplo de respuesta

{
    "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 único pedido y enlaces por cabinet_order_id, no por el número de WooCommerce del correo electrónico.
Acceso: BearerScope: orders:read

Ejemplo de respuesta

{
    "order": {
        "cabinet_order_id": 123,
        "wc_order_id": 456,
        "geo": "ru"
    },
    "links": []
}
GET/orders/by-wc/{id}Todos los pedidos internos y enlaces por el número de WooCommerce del cliente.
Acceso: BearerScope: orders:read

Ejemplo de respuesta

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

Enlaces 1

GET/links?geo=all&page=1&per_page=20Enlaces con filtros de geo, estado y tipo de enlace; continúe a través de next_page.
Acceso: BearerScope: links:read

Ejemplo de respuesta

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

Catálogo 2

GET/catalog/tariffs?geo=ruProductos, precios, monedas y composición exacta de slots actuales.
Acceso: BearerScope: catalog:read

Ejemplo de respuesta

{
    "geo": "ru",
    "currency": "RUB",
    "tariffs": [
        {
            "product_id": 3708,
            "name": "…",
            "price": {
                "amount_minor": 200000
            }
        }
    ]
}
GET/catalog/burzh-igamingSitios de donantes de iGaming anonimizados, métricas, precio y huecos disponibles.
Acceso: BearerScope: catalog:read

Ejemplo de respuesta

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

Borradores 3

PATCH/links/{id}Cambie la URL, el texto del ancla, el texto circundante o la programación sin enviar el enlace para su procesamiento.
Acceso: Bearer + Idempotency-KeyScope: links:write

Solicitar JSON

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

Ejemplo de respuesta

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
PUT/links/{id}Alias PATCH para clientes que envían un conjunto parcial de campos modificables.
Acceso: Bearer + Idempotency-KeyScope: links:write

Solicitar JSON

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

Ejemplo de respuesta

{
    "link": {
        "id": 456,
        "status": "awaiting_confirmation"
    }
}
POST/orders/{id}/bulk-updateRellenar filas de pedido en lote sin enviar a producción.
Acceso: Bearer + Idempotency-KeyScope: orders:write

Solicitar JSON

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

Ejemplo de respuesta

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

Enviar 2

POST/links/{id}/submitEnviar un enlace listo a producción tras la confirmación del cliente.
Acceso: Bearer + Idempotency-KeyScope: links:write

Solicitar JSON

[]

Ejemplo de respuesta

{
    "link": {
        "id": 456,
        "status": "in_progress"
    }
}
POST/orders/{id}/submit-allEnviar todas las filas de pedidos listos tras la confirmación del cliente.
Acceso: Bearer + Idempotency-KeyScope: orders:write

Solicitar JSON

[]

Ejemplo de respuesta

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

Pago 2

POST/checkout-intentsCree un enlace seguro de un solo uso para el proceso de pago estándar; no se realizará ningún cargo.
Acceso: Bearer + Idempotency-KeyScope: checkout:create

Solicitar JSON

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

Ejemplo de respuesta

{
    "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}Comprobar la aparición del pago y del pedido en la cuenta mediante el intent_id sin volver a abrir el enlace de un solo uso.
Acceso: BearerScope: checkout:create

Ejemplo de respuesta

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

Si la solicitud falló

400 / 422Corrija los parámetros. No repita la misma solicitud no válida.
401 / 403Comprobar la clave y sus permisos; crear una nueva si es necesario.
404Comprobar el número y el tipo de ID. Los pedidos de terceros no se revelan.
409Actualice el estado del pedido o utilice una clave nueva para una acción nueva.
429 / 5xxEspere e inténtelo de nuevo. Para una solicitud mutante, mantenga la misma Idempotency-Key y el mismo JSON.

Las listas devuelven un máximo de 50 filas por página. Si has_more=true, vaya a next_page. El importe preliminar en la API no sustituye al importe final ni a los métodos de pago disponibles al finalizar la compra.

¿Necesitas MCP en lugar de REST API?

La misma clave revocable funciona para el cliente MCP con encabezados HTTP. También puedes conectarte vía OAuth si la aplicación lo admite.

Abrir instrucciones de MCP