Automatiza OrbitPage sin compartir una sesión de panel.
Cree tokens con alcance y administre el panel de OrbitPage de un extremo a otro desde scripts, n8n, backends o CI.
Última revisión: 4 de agosto de 2026Gestiona tu espacio OrbitPage con tokens personales limitados: edita y publica páginas, y usa medios, dominios, analítica, IA, Shop, boletines y facturación.
Tres límites de credenciales cubren tres trabajos diferentes.
Esta página documenta el límite REST versionado. Un token de OrbitPage no es una clave de proveedor de OpenAI y nunca autentica puntos finales de paneles privados.
| Superficie | Credencial | Propósito y soporte |
|---|---|---|
| API REST de automatización | op_pat_... | API externa compatible con scripts, n8n, servidores backend y CI. Gestiona el espacio de trabajo vinculado a tokens a través de /api/v1. |
| OrbitPage AI | op_pat_... + ai:read/ai:write | El flujo de plan/compromiso público prepara y aplica propuestas de IA validadas. Cualquier credencial de proveedor de OpenAI sigue siendo una preocupación separada del lado del servidor y nunca es un token portador de OrbitPage. |
| API del panel | Sesión de Firebase en SaaS; sesión de administrador en OSS | Rutas privadas del navegador a la aplicación. No son un contrato de integración externo estable y no deben recibir tokens API personales. |
Los recursos versionados cubren el tablero; los puntos finales del enlace muestran el ciclo de actualización segura.
Cada solicitud está vinculada al espacio de trabajo seleccionado cuando se creó el token. Un token no puede elegir otro inquilino en la URL o el cuerpo de la solicitud, y los permisos actuales del espacio de trabajo se verifican nuevamente en cada llamada.
El contrato utiliza operaciones HTTPS JSON estándar (GET, POST, PUT, PATCH y DELETE) y admite curl, el nodo de solicitud HTTP de n8n y clientes OpenAPI generados.
GET/api/v1/linksLeer cada bloque de página
Devuelve la colección ordenada, la identidad del espacio de trabajo y la revisión actual.
Alcance:links:readPATCH/api/v1/links/{linkId}Cambiar un bloque existente
Fusiona campos editables, valida toda la página y publica la nueva revisión.
Alcance:links:writePUT/api/v1/linksReemplazar la colección completa
Use esto para agregar, eliminar o reordenar bloques después de leer y preservar la colección actual.
Alcance:links:write| Superficie del tablero | Rutas API | Alcances |
|---|---|---|
| Espacio de trabajo y borrador completo | /workspace · /draft | workspace:read |
| Perfil, tema y subpáginas | /profile · /theme · /pages | profile:* · theme:* · pages:* |
| Configuración general, privacidad y menú | /settings/* | settings:* |
| Publicación, versiones y respaldo | /publication · /versions · /backup | publication:* · backup:* |
| Medios y dominios personalizados | /media/* · /domains/* | media:* · domains:* |
| Análisis y cambios de IA revisados | /analytics · /ai/* | analytics:read · ai:* |
| Tienda y newsletter | /shop/* · /newsletter/* | shop:* · newsletter:* |
| Equipo y facturación | /team/* · /billing/* | team:* · billing:* |
Cada operación del tablero admitida, agrupada por la superficie que controla.
Las rutas a continuación son relativas a https://orbitpage.com/api/v1. Método, camino y alcance son el contrato de integración estable; Los esquemas de solicitud, formatos, valores de enumeración y modelos de respuesta se encuentran en el documento OpenAPI 3.1 vinculado. Las rutas desconocidas devuelven 404 y los métodos no compatibles nunca se convierten de forma silenciosa.
01Espacio de trabajo, contenido y aparienciaInspeccione el espacio de trabajo vinculado a tokens y administre su borrador completo, perfil, bloques, tema y subpáginas.11 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/workspace | Leer espacio de trabajo, plan, acceso, uso y revisión | workspace:read | — |
GET/draft | Lea el borrador completo de la página editable | workspace:read | — |
GET/links | Listar bloques de páginas y la revisión actual | links:read | — |
PUT/links | Reemplazar la colección completa de bloques ordenados | links:write | LinksReplaceRequest · If-Match |
PATCH/links/{linkId} | Actualizar campos editables en un bloque | links:write | LinkPatch · If-Match |
GET/profile | Leer la identidad del perfil y los metadatos | profile:read | — |
PATCH/profile | Actualizar campos de perfil | profile:write | JSON · If-Match · ?publish=1 |
GET/theme | Leer el borrador del tema activo | theme:read | — |
PUT/theme | Reemplazar el tema borrador | theme:write | JSON · If-Match · ?publish=1 |
GET/pages | Lista de subpáginas configuradas | pages:read | — |
PUT/pages | Reemplazar subpáginas configuradas | pages:write | array | { pages } · If-Match · ?publish=1 |
02Configuración y publicaciónMenús de control, privacidad, archivos públicos administrados, generación de mapas del sitio y ciclo de vida explícito de borrador a público.9 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/settings | Leer menú, configuración de privacidad, archivo de texto y mapa del sitio | settings:read | — |
PUT/settings/menu | Actualizar configuración del menú | settings:write | JSON · If-Match · ?publish=1 |
PUT/settings/privacy | Actualizar configuración de consentimiento y privacidad | settings:write | JSON · If-Match · ?publish=1 |
POST/settings/text-files | Crear un archivo de texto público administrado | settings:write | TextFileCreateRequest · If-Match |
PUT/settings/text-files/{key} | Actualizar un archivo de texto público administrado | settings:write | TextFileUpdateRequest · If-Match |
DELETE/settings/text-files/{key} | Eliminar un archivo de texto público administrado | settings:write | If-Match |
POST/settings/sitemap | Regenerar el mapa del sitio administrado | settings:write | If-Match |
GET/publication | Leer borrador y estado de publicación | publication:read | — |
POST/publication | Publicar el último borrador validado | publication:write | — |
03Versiones, copias de seguridad y mediosRestaure contenido revisado, exporte o importe datos del espacio de trabajo y ejecute el ciclo de vida de medios de reserva, carga y finalización.9 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/versions | Listar las versiones publicadas de la página que se pueden restaurar | backup:read | — |
POST/versions/{revision}/restore | Restaurar una versión histórica y publicarla inmediatamente | backup:write | If-Match |
GET/backup | Exportar una copia de seguridad del espacio de trabajo administrado | backup:read | ?sections=profile,links,… |
POST/backup/restore | Validar y restaurar una copia de seguridad administrada, y publicarla inmediatamente | backup:write | BackupRestoreRequest · If-Match |
GET/media | Listar metadatos y uso de medios del espacio de trabajo | media:read | — |
POST/media/cleanup | Vista previa o eliminación de medios sin referencia | media:write | MediaCleanupRequest |
POST/media/uploads/reserve | Reserva una carga multimedia directa | media:write | MediaUploadReserveRequest |
POST/media/uploads/finalize | Finalizar y registrar un objeto cargado | media:write | UploadTokenRequest |
DELETE/media/uploads | Cancelar una carga de medios reservados | media:write | UploadTokenRequest |
04Dominios, análisis e IAAdministre la activación de DNS, lea informes de rendimiento vinculados al plan y aplique cambios de IA solo después de una vista previa validada.8 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/domains | Leer el estado del dominio y los requisitos de DNS | domains:read | — |
POST/domains | Conectar un dominio personalizado | domains:write | DomainConnectRequest |
POST/domains/refresh | Actualizar verificación y activación | domains:write | — |
DELETE/domains | Desconectar el dominio personalizado | domains:write | — |
GET/analytics | Leer el informe de análisis del panel | analytics:read | ?days=7|30|90 |
GET/ai/allowance | Leer la asignación de IA y el uso actual | ai:read | — |
POST/ai/plan | Generar una vista previa de cambio de IA validada | ai:write | AiPlanRequest |
POST/ai/commit | Confirmar una vista previa de IA previamente validada | ai:write | AiCommitRequest |
05ShopConecte el comercio, administre productos y apariencia, cargue archivos protegidos y luego publique o cancele la publicación del bloque Tienda sincronizado.10 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/shop | Leer productos, pedidos, clientes y el estado de Shop; la operación puede inicializar datos privados de Shop y actualizar el estado de Stripe | shop:read | ?refresh=0|1 |
POST/shop/connect | Crear o continuar con la incorporación de Stripe Connect | shop:write | — |
POST/shop/products | Crear o actualizar un producto de la Tienda | shop:write | ShopProductRequest |
DELETE/shop/products/{productId} | Eliminar un producto de la Tienda | shop:write | — |
PUT/shop/appearance | Reemplazar toda la apariencia de la tienda | shop:write | ShopAppearanceRequest |
POST/shop/publish | Publicar Shop y su bloque de página sincronizado | shop:write | — |
POST/shop/unpublish | Despublicar Tienda | shop:write | — |
POST/shop/uploads/reserve | Reservar una carga de archivo de producto | shop:write | ShopFileUploadReserveRequest |
POST/shop/uploads/finalize | Finalizar la carga de un archivo de producto | shop:write | ShopUploadTokenRequest |
DELETE/shop/uploads | Cancelar la carga reservada de un archivo de producto | shop:write | ShopUploadTokenRequest |
06BoletínConfigure la entrega SMTP cifrada, administre suscriptores consentidos y controle el ciclo de vida completo de la campaña.9 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/newsletter | Leer suscriptores, campañas y estado SMTP | newsletter:read | — |
PUT/newsletter/settings | Actualizar la configuración de SMTP cifrado | newsletter:write | NewsletterSmtpRequest |
POST/newsletter/settings/test | Enviar una prueba de configuración | newsletter:write | EmailRecipientRequest |
POST/newsletter/subscribers | Agregar o actualizar un suscriptor consentido | newsletter:write | NewsletterSubscriberRequest |
DELETE/newsletter/subscribers/{subscriberId} | Eliminar un suscriptor | newsletter:write | — |
POST/newsletter/campaigns | Crear o actualizar una campaña | newsletter:write | NewsletterCampaignRequest |
DELETE/newsletter/campaigns/{campaignId} | Eliminar una campaña | newsletter:write | — |
POST/newsletter/campaigns/{campaignId}/send | Poner en cola o programar una campaña | newsletter:write | NewsletterSendRequest |
DELETE/newsletter/campaigns/{campaignId}/send | Cancelar una campaña en cola | newsletter:write | — |
07Equipo y facturaciónAdministre colaboradores e invitaciones, inspeccione suscripciones y abra sesiones de portal o pago de Stripe autenticadas.9 operaciones
| Método y ruta | Operación | Alcance requerido | Entradas y controles |
|---|---|---|---|
GET/team | Lista de miembros e invitaciones pendientes | team:read | — |
POST/team/invitations | Crear un enlace de invitación al espacio de trabajo sin enviar correo electrónico | team:write | TeamInvitationRequest |
PATCH/team/members/{memberUid} | Actualizar un rol de miembro | team:write | TeamRoleRequest |
DELETE/team/members/{memberUid} | Eliminar un miembro del espacio de trabajo | team:write | — |
DELETE/team/invitations/{invitationId} | Revocar una invitación pendiente | team:write | — |
GET/billing | Leer plan y estado de suscripción | billing:read | — |
POST/billing/checkout | Crear un pago del plan Stripe | billing:write | BillingCheckoutRequest |
POST/billing/portal | Crear una sesión en el portal de facturación de Stripe | billing:write | BillingPortalRequest |
POST/billing/promotion-code | Canjear un código promocional y sincronizar los derechos asociados al plan | billing:write | PromotionCodeRedeemRequest |
Cree un token para una automatización y un entorno.
Abra el Panel de control > Cuenta > Tokens de API personales. Asigne al token un nombre que identifique a su propietario y propósito, elija un espacio de trabajo completo, un espacio de trabajo de solo lectura, solo enlaces o alcances de recursos individuales, luego seleccione una caducidad de 30, 90 o 365 días, o ninguna caducidad cuando ya exista un proceso de rotación documentado.
Confirma tu identidad
La creación de tokens es una acción confidencial de la cuenta y requiere una autenticación reciente de Google o de contraseña.
Elija el alcance más pequeño
Los alcances de lectura y escritura están separados para cada recurso, por ejemplo theme:read, theme:write, shop:read y shop:write. Un alcance de escritura incluye automáticamente su alcance de lectura coincidente.
Copia el secreto una vez
OrbitPage almacena un hash SHA-256, no el secreto recuperable. Si se pierde, revocarlo y crear otro token.
Guárdalo fuera del código
Utilice una variable de entorno o un almacén secreto de CI. Nunca coloque el token en una URL, repositorio, captura de pantalla, paquete de navegador o registro de compilación.
export ORBITPAGE_TOKEN='op_pat_...'
curl --silent --show-error --include \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
https://orbitpage.com/api/v1/links$env:ORBITPAGE_TOKEN = 'op_pat_...'
$headers = @{ Authorization = "Bearer $env:ORBITPAGE_TOKEN" }
Invoke-RestMethod -Uri 'https://orbitpage.com/api/v1/links' -Headers $headersLee la colección y captura su revisión antes de cada cambio.
El cuerpo de la respuesta contiene los bloques ordenados en datos y la revisión numérica actual. La misma revisión aparece en X-OrbitPage-Revision y como una ETag débil. Guarde cualquiera de los valores para If-Match; no lo adivine ni lo almacene en caché en ejecuciones no relacionadas.
HTTP/2 200
etag: W/"42"
x-orbitpage-revision: 42
content-type: application/json; charset=utf-8
{
"object": "list",
"data": [
{
"id": "portfolio-main",
"type": "link",
"title": "Selected work",
"description": "Recent projects and case studies",
"url": "https://example.com/work",
"isActive": true,
"status": "live",
"availability": "available",
"clickCount": 18,
"position": 0
}
],
"revision": 42,
"workspace": {
"tenantId": "tenant_...",
"pageId": "page_...",
"username": "your-page"
}
}dataLa colección completa de bloques ordenados. El orden de la matriz es el orden visual de las páginas.revisionLa versión de simultaneidad optimista utilizada por cada escritura.workspaceEl inquilino, la página y el nombre de usuario vinculados permanentemente a este token.ETagEl valor más seguro para pasar directamente como el siguiente encabezado If-Match.Utilice PATCH para el cambio más pequeño en un bloque existente.
Codifica en URL el ID devuelto por GET y envía solo los campos que deben cambiar. OrbitPage fusiona el parche en el bloque existente, protege los campos de identidad y análisis, valida la página completa según su esquema y plan y luego la publica inmediatamente.
curl --request PATCH \
--url https://orbitpage.com/api/v1/links/portfolio-main \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
--header 'Content-Type: application/json' \
--header 'If-Match: W/"42"' \
--data '{
"title": "Book a consultation",
"url": "https://example.com/book",
"isActive": true
}'| Grupo de campos | Ejemplos | Comportamiento |
|---|---|---|
| Contenido | title, description, url, content, textItems | Editable cuando es válido para el tipo de bloque existente. |
| Visibilidad y sincronización | isActive, status, availability, startDate, endDate, timezone | Validado junto con reglas de programación y plan. |
| Apariencia y medios | icon, coverImage, backgroundColor, alignment, size | Se acepta solo cuando los valores coinciden con el esquema de la página. |
| Protegido | id, type, clickCount, ctaClicks, systemKey | Ignorado o rechazado. Los bloques administrados por el sistema no se pueden parchear. |
Utilice PUT solo cuando la colección misma deba cambiar.
PUT reemplaza la colección ordenada completa. Es la operación para agregar un bloque, eliminar un bloque o cambiar el orden de las páginas. No es un atajo para actualizar un título: omitir un bloque lo elimina de la página.
const token = process.env.ORBITPAGE_TOKEN;
if (!token) throw new Error("ORBITPAGE_TOKEN is missing");
const endpoint = "https://orbitpage.com/api/v1/links";
const authorization = { Authorization: `Bearer ${token}` };
const read = await fetch(endpoint, { headers: authorization });
if (!read.ok) throw new Error(`GET failed: ${read.status} ${await read.text()}`);
const current = await read.json();
const revision = read.headers.get("etag") ?? String(current.revision);
// Preserve the full collection and change only the intended block.
const links = current.data.map((block) =>
block.id === "portfolio-main"
? { ...block, title: "Work and case studies" }
: block
);
const write = await fetch(endpoint, {
method: "PUT",
headers: {
...authorization,
"Content-Type": "application/json",
"If-Match": revision
},
body: JSON.stringify({ links })
});
if (!write.ok) throw new Error(`PUT failed: ${write.status} ${await write.text()}`);
console.log(await write.json());Utilice el nodo n8n nativo o el mismo contrato de un cliente HTTP, cliente generado, backend o ejecutor de CI.
OrbitPage no requiere un SDK: cualquier cliente HTTPS que pueda enviar JSON, autenticación de portador y solicitudes estándar GET, POST, PUT, PATCH y DELETE es compatible. Los patrones siguientes cubren las partes con estado que una integración debe manejar explícitamente.
Nodo n8n nativo
Instala n8n-nodes-orbitpage y crea una credencial de OrbitPage API con el token personal y la Base URL. La prueba de conexión realiza una lectura segura del espacio de trabajo; después, las acciones guiadas gestionan rutas, permisos, enlaces entre elementos y escrituras con control de revisión sin guardar el secreto en el JSON del workflow.
Borrador y publicación
Las escrituras de perfiles, temas, páginas y configuraciones admitidas requieren If-Match y actualizan el borrador de forma predeterminada. Agregue ?publish=1 para una publicación inmediata elegible, o revise varios cambios diferidos y llame a POST /publication una vez. Enlace PATCH y PUT publicar inmediatamente.
Carga directa de medios
Reserve primero, cargue bytes en la URL de almacenamiento devuelta y luego finalice. Envíe el token de portador de OrbitPage únicamente a orbitpage.com; use solo el método y los encabezados temporales devueltos para la solicitud de almacenamiento.
Compromiso de IA revisado
Plan devuelve una vista previa validada sin modificar la página. Guarde y revise su previewToken y confirme exactamente esa propuesta. Establezca publish en el cuerpo de commit solo cuando la automatización esté autorizada para publicar el resultado.
Install community node: n8n-nodes-orbitpage
Credential: OrbitPage API
OrbitPage API Token: op_pat_...
OrbitPage Base URL: https://orbitpage.com
Connection test: GET /api/v1/workspace
First safe workflow step:
Node: OrbitPage
Resource: Workspace & Draft
Operation: Get Workspace Overview
First revision-controlled write:
Resource: Theme
Operation: Replace Entire Theme Draft
Revision Check: Use Latest Automatically (Recommended)# 1. Reserve an upload and receive uploadUrl, slot and uploadToken
POST /api/v1/media/uploads/reserve
{ "filename": "cover.jpg", "contentType": "image/jpeg", "sizeBytes": 245760 }
# 2. Upload the bytes directly using the returned URL, method and headers
# Do not forward the OrbitPage Authorization header to the storage URL.
# 3. Register the uploaded object in the workspace
POST /api/v1/media/uploads/finalize
{ "slot": "<slot>", "uploadToken": "<uploadToken>" }# 1. Generate a validated preview without changing the page
POST /api/v1/ai/plan
{ "message": "Make the primary CTA clearer" }
# 2. Review the returned operations and previewToken
# 3. Apply the exact reviewed preview; publishing remains explicit
POST /api/v1/ai/commit
{ "previewToken": "<previewToken>", "publish": false }Usa la Base URL https://orbitpage.com, sin /api/v1. Al guardar correctamente, se consulta /api/v1/workspace y se verifican el token, la asociación al espacio de trabajo y el permiso workspace:read sin modificar datos.
Un error 401 requiere un token de sustitución válido; un 403, el permiso que falta. Si las redirecciones se repiten, comprueba la Base URL o el proxy inverso. Comparte con soporte el estado y el código JSON, nunca el secreto.
Trate las credenciales de automatización como ciclos de vida cortos y observables.
Un espacio de trabajo admite hasta diez tokens personales activos por usuario. La lista de cuentas muestra el prefijo de cada token, sus alcances, sus fechas de creación y caducidad y su uso reciente. Las marcas de tiempo utilizadas por última vez se escriben intencionalmente como máximo una vez cada cinco minutos.
name: Update OrbitPage
on: workflow_dispatch
jobs:
update:
runs-on: ubuntu-latest
env:
ORBITPAGE_TOKEN: ${{ secrets.ORBITPAGE_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: node scripts/update-orbitpage.mjs- Nombre los tokens por sistema y entorno, por ejemplo, “GitHub Actions · producción”.
- Rotar creando el reemplazo, actualizando el almacén secreto, probando una lectura y luego revocando el token anterior.
- Revocar inmediatamente después de una sospecha de divulgación, cambio de propiedad o retiro del flujo de trabajo. La revocación entra en vigor en la siguiente solicitud.
- No cree un token compartido de larga duración. Las credenciales separadas hacen que los registros, la rotación y la respuesta a incidentes sean comprensibles.
Rama sobre el estado HTTP y el código legible por máquina.
Los errores utilizan JSON con error y código. No analice la oración humana para controlar un flujo de trabajo. La mayoría de las respuestas 4xx requieren cambiar la solicitud o credencial; sólo los conflictos de revisión y los límites de velocidad pertenecen a una ruta de reintento automático.
INVALID_JSON · LINKS_REQUIRED · LINK_PATCH_INVALIDCorrige el cuerpo de la solicitud o los campos rechazados por el esquema de la página.PERSONAL_TOKEN_*Reemplazar un token faltante, inválido, vencido o revocado. No vuelvas a intentarlo con el mismo secreto.PERSONAL_TOKEN_SCOPE_DENIED · SYSTEM_LINK_PROTECTEDUtilice el alcance requerido o deténgase: la identidad actual no puede realizar esta operación.LINK_NOT_FOUNDActualizar la colección; Es posible que la ID del bloque haya sido eliminada o reemplazada.revision_conflictEjecute GET de nuevo, vuelva a aplicar el cambio previsto al nuevo estado y reintente con la nueva revisión.REQUEST_TOO_LARGEMantenga el cuerpo JSON en 768 KiB o menos.UNSUPPORTED_CONTENT_ENCODINGEnvía un cuerpo de solicitud JSON sin comprimir.revision_requiredAgregue If-Match usando la revisión o ETag devuelta por el último GET.RATE_LIMITEDEspere el tiempo indicado por Retry-After y reintente con espera exponencial y una variación aleatoria.Los límites actuales permiten 120 solicitudes por minuto y 5000 al día por token. Pueden endurecerse durante la protección contra abusos; respete siempre Retry-After.
Una integración segura es estrecha, secreta y con reconocimiento de revisiones.
Mínimo privilegio
Use solo lectura a menos que el trabajo deba publicarse. Las capacidades del token nunca pueden exceder la función actual del espacio de trabajo del propietario.
Solo del lado del servidor
Llame a la API desde un script, backend o ejecutor de CI confiable. Un paquete de navegador, un cliente móvil o un repositorio público no pueden mantener en secreto a un portador.
Sin escrituras ciegas
Haz una solicitud GET justo antes de escribir y usa If-Match. Si un error 409 devuelve revision_conflict, vuelve a leer el recurso y aplica de nuevo el cambio previsto; para cualquier otro código, resuelve la condición de negocio documentada.
Validar resultados
Verificar estado de respuesta, revisión y datos devueltos. Para cambios importantes, abra la página pública después de la publicación y alerte sobre el error sin registrar el token.
La API REST de automatización de token personal es una capacidad SaaS administrada.
El repositorio de código abierto contiene una API Express utilizada por su panel de control incluido, pero esa API de sesión de administración interna no es el mismo contrato de automatización versionado. No envíe un token op_pat a un servidor autohospedado y no envíe un JWT de administrador autohospedado a orbitpage.com/api/v1.
Utilice esta guía, el contrato OpenAPI y los tokens personales creados en Cuenta.
Utilice el panel incluido en el mismo origen confiable. La documentación del repositorio explica los límites internos para contribuyentes y mantenedores.