Referencia API

API de OAuth

Inicio de sesión OAuth, tokens y revocación

Referencia HTTP. Generada a partir del contrato backend. Explore los endpoints abajo o descargue OpenAPI.

Este grupo tiene 10 operaciones, generadas a partir de api/openapi.yaml. Filtre por ruta, acción o autenticación. Cada endpoint indica sus entradas; despliéguelo para ver una plantilla de solicitud y los códigos de respuesta. Las plantillas necesitan sus propios valores y un cuerpo válido según el esquema.

Reemplace los marcadores en mayúsculas con sus valores. Para una solicitud JSON, guarde un cuerpo que coincida con el esquema en request.json. Los ejemplos de cookies usan un frasco de cookies local de una sesión autenticada.

Inicio de sesión OAuth, tokens y revocación

POST/oauth/token

Token Oauth

Punto de token OAuth 2.0 (RFC 6749 §3.2) para JWTs de agentes. grant_type refresh_token rota una credencial opaca de actualización (RFC 9700): cada uso devuelve un nuevo par; un request_id (16 a 200 caracteres) hace que un reintento exacto devuelva la misma respuesta mientras su credencial y concesión estén vigentes y el sucesor aún sea actual, sin un plazo de reintento por tiempo transcurrido.

Cualquier otro uso de un token de actualización reemplazado revoca toda la familia (invalid_grant). Una membresía o proyecto seleccionado eliminado devuelve invalid_scope con error_description que comienza con "project_selection_inactive:"; la credencial de actualización no se consume.

Descubra membresías activas con GET /api/projects, crúcelas con la selección previamente consentida y reintente con projects= y un nuevo request_id. Nunca termine la familia de actualizaciones por este error de selección.

La restricción del ámbito solicitado se aplica independientemente a cada proyecto y a la autoridad de identidad; un ámbito explícito sin identidad excluye la autoridad de identidad. grant_type urn:ietf:params:oauth:grant-type:token-exchange (RFC 8693) con subject_token_type urn:screenrig:token-type:identity-credential o urn:screenrig:token-type:project-token responde unsupported_token_type: las credenciales heredadas están retiradas, y la instalación inicia sesión de nuevo con screenrig login. resource (RFC 8707) es https://api.<domain>/api o está ausente; projects selecciona hasta 64 IDs de proyectos consentidos.

La omisión selecciona todo solo cuando el conjunto cabe; de lo contrario el cliente debe elegir un subconjunto. project_id selecciona uno durante la versión de compatibilidad. La concesión de una app conectada tiene el único recurso https://api.<domain>/mcp, que una actualización puede omitir.

Los clientes son públicos (solo client_id), o una app conectada cuyo metadata declara que private_key_jwt se autentica con client_assertion_type urn:ietf:params:oauth:client-assertion-type:jwt-bearer y un client_assertion (iss y sub son su client_id, aud el emisor o este endpoint como una cadena, exp dentro de 5 minutos de iat, un jti usado una vez, kid nombrando una de sus claves; EdDSA, ES256 o RS256). grant_type authorization_code canjea el código de una app conectada en 60 segundos con el redirect_uri exacto y el PKCE code_verifier; resource debe estar ausente o ser el autorizado; un segundo canje revoca el permiso creado por el código. grant_type client_credentials es de un cliente de servicio: se autentica con una afirmación de cliente (una de sus claves registradas) o su secreto por HTTP Basic (client_secret_basic; un secreto en el cuerpo es rechazado) y recibe un token de servicio de 15 minutos para su proyecto, audiencia api o (resource https://api.<domain>/mcp) mcp, scope dentro de sus capacidades y nivel de acceso, y sin token de actualización; 600 por cliente por hora.

Los errores son JSON {error, error_description} según RFC 6749 con Cache-Control no-store; mientras el servidor no lo emite responde temporarily_unavailable (503).

Los límites de frecuencia responden 429 rate_limited con Retry-After: 1200 solicitudes por dirección cliente por hora en este y el endpoint de revocación, 60 actualizaciones por concesión por hora, 30 intercambios por credencial heredada por hora. grant_type urn:ietf:params:oauth:grant-type:device_code (RFC 8628 §3.4) consulta un inicio de sesión de dispositivo: authorization_pending hasta que una persona lo apruebe, slow_down si se consulta antes del intervalo (que luego crece 5 segundos), access_denied cuando se niega, expired_token tras 10 minutos, luego la respuesta del token.

Una nueva instalación recibe un par de tokens; un inicio de sesión iniciado con el token de acceso de una instalación existente añade el proyecto aprobado a esa concesión y recibe solo un token de acceso, sin rotar el token de actualización. Consultar el mismo device_code otra vez devuelve la misma respuesta hasta que la concesión rota primero o pasan 10 minutos, luego invalid_grant.

Solo POST, codificado en formulario, sin cadena de consulta.

Autenticación
ninguno
Cuerpo de la solicitud
object
ID de operación
oauthToken

Campos del cuerpo de la solicitud

CampoDescripción
grant_type (requerido, cadena)Permitido: "authorization_code", "client_credentials", "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange", "urn:ietf:params:oauth:grant-type:device_code"
client_id (opcional, cadena)
client_assertion_type (opcional, cadena)Permitido: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
client_assertion (opcional, cadena)
código (opcional, cadena)
redirect_uri (opcional, cadena)
code_verifier (opcional, cadena)minLength: 43 maxLength: 128
refresh_token (opcional, cadena)
device_code (opcional, cadena)
request_id (opcional, cadena)minLength: 16 maxLength: 200
subject_token (opcional, cadena)
subject_token_type (opcional, cadena)Permitido: "urn:screenrig:token-type:identity-credential", "urn:screenrig:token-type:project-token"
alcance (opcional, cadena)
recurso (opcional, cadena)formato: "uri"
projects (opcional, cadena)IDs de proyectos separados por espacios o comas; omita para todos los proyectos consentidos hasta el límite configurado (por defecto 64). No se puede combinar con project_id.
project_id (opcional, cadena)
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/token'

Respuestas

EstadoSignificadoCuerpo y encabezados
200La respuesta del token (RFC 6749 §5.1).OAuthTokenResponse (application/json)
predeterminadoUn error RFC 6749 §5.2.OAuthError (application/json)
POST/oauth/device_authorization

Autorización de dispositivo Oauth

Autorización de dispositivo RFC 8628 §3.1 para `screenrig login`. scope es access:manage (el predeterminado), access:propose o access:read; project_id sugiere el proyecto que la persona aprueba; name, agent_type, platform y version describen la instalación y se muestran al aprobador según lo reportado por el dispositivo; install_source (opcional) indica desde dónde se instaló y se conserva en el agente que crea la aprobación.

Sin Authorization inicia una nueva instalación. Con Authorization: Bearer y un token de acceso de agente que lleva el alcance de identidad, solicita añadir un proyecto a la concesión de esa instalación, o elevar un proyecto Solo lectura a Administrar.

La persona ingresa user_code en verification_uri (o sigue verification_uri_complete) y lo aprueba en el panel; el dispositivo consulta el endpoint token con device_code cada interval segundos.

Los límites de frecuencia responden 429 rate_limited con Retry-After: 10 por dirección cliente por hora y 600 por hora en toda la flota, detrás de los 1200 por dirección por hora de los endpoints. Los errores son JSON RFC 6749 con Cache-Control no-store; mientras el servidor no emita responde temporarily_unavailable (503). Solo POST, codificado en formulario, sin cadena de consulta.

Autenticación
ninguno
Cuerpo de la solicitud
object
ID de operación
oauthDeviceAuthorization

Campos del cuerpo de la solicitud

CampoDescripción
client_id (requerido, cadena)
alcance (opcional, cadena)Permitido: "access:manage", "access:propose", "access:read"
project_id (opcional, cadena)maxLength: 200
nombre (opcional, cadena)maxLength: 80
agent_type (opcional, cadena)maxLength: 32
plataforma (opcional, cadena)maxLength: 80
version (opcional, cadena)maxLength: 40
install_source (opcional, cadena)

Opcional, el lugar desde donde se instaló la integración: el host y, después de una barra, el marketplace (claude/screenrig, codex/screenrig, grok/screenrig), o un host solo, como npm. Un valor ausente o con forma incorrecta se ignora y nunca hace fallar la solicitud. pattern: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$"

Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/device_authorization'

Respuestas

EstadoSignificadoCuerpo y encabezados
200La respuesta de autorización del dispositivo (RFC 8628 §3.2).objeto (application/json)
predeterminadoUn error RFC 6749 §5.2.OAuthError (application/json)
GET/oauth/authorize

Autorizar Oauth

Punto de autorización OAuth 2.0 para apps conectadas (clientes MCP). client_id es una URL de documento de metadatos de ID de cliente (https, puerto 443, sin redirecciones, máximo 64 KiB y 5 segundos, solo direcciones públicas) o un id de cliente registrado.

La solicitud se valida en este orden: el cliente, el redirect_uri exacto (una redirección http de loopback a 127.0.0.1, [::1] o localhost coincide en cualquier puerto), response_type code, code_challenge con code_challenge_method S256, resource (https://api.<domain>/mcp, otro recurso MCP cuyos metadatos de recurso protegido nombran este servidor, o ausente) y luego scope (access:read, el predeterminado, access:propose, access:manage y nombres de capacidades).

Un cliente desconocido o redirect_uri responde con una página de error HTML y nunca redirige; cualquier error posterior redirige al redirect_uri con error, error_description, state e iss (RFC 9207).

El éxito responde con 303 a la página de consentimiento del panel, donde una persona elige el proyecto, el nivel de acceso (Solo lectura por defecto, Proponer o Administrar) y las capacidades; la aprobación redirige con código, estado e iss. 30 solicitudes por dirección cliente por minuto.

Autenticación
ninguno
Cuerpo de la solicitud
ninguno
ID de operación
oauthAuthorize

Parámetros

NombreEnviar¿Requerido?Descripción
client_idconsultarequerido
redirect_uriconsultarequerido
response_typeconsultarequerido
code_challengeconsultarequerido
code_challenge_methodconsultarequerido
estadoconsultaopcional
recursoconsultaopcional
alcanceconsultaopcional
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request GET 'https://api.screenrig.ai/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=RESPONSE_TYPE&code_challenge=CODE_CHALLENGE&code_challenge_method=CODE_CHALLENGE_METHOD'

Respuestas

EstadoSignificadoCuerpo y encabezados
303A la página de consentimiento, o de regreso al redirect_uri del cliente con error, estado e iss.sin cuerpo
400Una página de error HTML para un cliente desconocido o redirect_uri; nunca una redirección.cadena (text/html)
429Demasiadas solicitudes de autorización desde esta dirección.sin cuerpo
POST/oauth/revoke

Revocar Oauth

Revocación RFC 7009. Una credencial de actualización opaca (o un JWT de actualización de versión anterior), o un JWT de acceso de agente, emitidos al cliente revocan su concesión; los tokens de acceso de la concesión se rechazan en segundos. Un token desconocido, expirado o extranjero también responde 200. Solo POST, codificado en formulario.

Autenticación
ninguno
Cuerpo de la solicitud
object
ID de operación
oauthRevoke

Campos del cuerpo de la solicitud

CampoDescripción
client_id (opcional, cadena)
client_assertion_type (opcional, cadena)Permitido: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"
client_assertion (opcional, cadena)
token (requerido, cadena)
token_type_hint (opcional, cadena)
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/revoke'

Respuestas

EstadoSignificadoCuerpo y encabezados
200Revocado, o nada que revocar.sin cuerpo
predeterminadoUn error RFC 6749 §5.2.OAuthError (application/json)
GET/.well-known/oauth-authorization-server

Metadatos del servidor de autorización Oauth

Metadatos del servidor de autorización RFC 8414 para el servidor de autorización del agente.

Autenticación
ninguno
Cuerpo de la solicitud
ninguno
ID de operación
oauthAuthorizationServerMetadata
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-authorization-server'

Respuestas

EstadoSignificadoCuerpo y encabezados
200El documento de metadatos.objeto (application/json)
GET/.well-known/oauth-protected-resource/mcp

MCP de recurso protegido Oauth

Metadatos de recurso protegido RFC 9728 para /mcp, nombrados por resource_metadata de cada /mcp 401.

Autenticación
ninguno
Cuerpo de la solicitud
ninguno
ID de operación
oauthProtectedResourceMCP
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/mcp'

Respuestas

EstadoSignificadoCuerpo y encabezados
200El documento de metadatos.objeto (application/json)
GET/.well-known/oauth-protected-resource/api

API de recurso protegido Oauth

Metadatos de recurso protegido RFC 9728 para /api.

Autenticación
ninguno
Cuerpo de la solicitud
ninguno
ID de operación
oauthProtectedResourceAPI
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/api'

Respuestas

EstadoSignificadoCuerpo y encabezados
200El documento de metadatos.objeto (application/json)
GET/api/oauth/authorizations/{id}

Obtener autorización OAuth en dashboard

Una autorización pendiente de aplicación conectada para la página de consentimiento: el nombre y dominio del cliente según los declara su metadato (nunca se obtiene un logo), si es un cliente registrado, el host de redirección, y el nivel de acceso y capacidades solicitadas. Las autorizaciones desconocidas, expiradas o resueltas son not_found.

Autenticación
dashboardSession
Cuerpo de la solicitud
ninguno
ID de operación
getDashboardOAuthAuthorization

Parámetros

NombreEnviar¿Requerido?Descripción
idrutarequerido
Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID'

Respuestas

EstadoSignificadoCuerpo y encabezados
200La autorización.OAuthAuthorization (application/json)
predeterminado

Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico.

Problema (application/problem+json)
POST/api/oauth/authorizations/{id}/approve

Aprobar autorización OAuth en dashboard

Aprueba una aplicación conectada para uno de los proyectos de la persona tras una prueba reciente (tipo oauth_authorization_approval, sujeto el id de autorización): crea la identidad del agente de la aplicación (tipo agente mcp_client, la persona responsable), su membresía y su concesión con el acceso elegido (leer o administrar; omitido mantiene el nivel solicitado, que por defecto es leer) y capacidades (un subconjunto de lo solicitado), y responde con redirect_uri, que lleva código, estado e iss, a la que la página navega.

El código es válido durante 60 segundos. Un miembro limitado a pantallas no conecta agentes, no emite credenciales ni administra a las personas del proyecto: outside_screen_scope (pida al propietario del proyecto).

Autenticación
dashboardSession
Cuerpo de la solicitud
Acción del agente del panel
ID de operación
approveDashboardOAuthAuthorization

Parámetros

NombreEnviar¿Requerido?Descripción
idrutarequerido

Campos del cuerpo de la solicitud

CampoDescripción
project_id (requerido, cadena)minLength: 1
proof (opcional, DashboardProof)
capacidades (opcional, arreglo)

Solo opcional en conexión de agente y aprobación de app conectada. Omitido aprueba el conjunto completo solicitado; un subconjunto no vacío de las capacidades de la conexión restringe la credencial otorgada; cualquier otra cosa es invalid_request.

user_code (opcional, cadena)

Requerido al aprobar un inicio de sesión de dispositivo (flujo dispositivo): el código que la persona confirma coincide con el terminal. Una discrepancia es agent_connection_code_mismatch; el quinto expira el inicio de sesión (agent_connection_expired). Ignorado de otro modo. maxLength: 32

acceso (opcional, cadena)

El nivel de acceso con que se aprueba un inicio de sesión de dispositivo o una app conectada (Solo lectura, Proponer o Administrar); omitido mantiene el nivel solicitado. Ignorado para otras conexiones. Una persona que no puede aprobar revisiones no puede aprobar Administrar (403 approver_required). Permitido: "read", "propose", "manage"

Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/approve'

Respuestas

EstadoSignificadoCuerpo y encabezados
200La redirección de regreso a la aplicación.OAuthAuthorizationRedirect (application/json)
403

outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota.

Problema (application/problem+json)
predeterminado

Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico.

Problema (application/problem+json)
POST/api/oauth/authorizations/{id}/deny

Negar autorización OAuth del Dashboard

Deniega una app conectada tras una prueba reciente (kind oauth_authorization_denial) y responde el redirect_uri, con error=access_denied, state e iss, al que navega la página. Un miembro limitado a pantallas no conecta agentes, no emite credenciales ni administra a las personas del proyecto: outside_screen_scope (pida al propietario del proyecto).

Autenticación
dashboardSession
Cuerpo de la solicitud
Acción del agente del panel
ID de operación
denyDashboardOAuthAuthorization

Parámetros

NombreEnviar¿Requerido?Descripción
idrutarequerido

Campos del cuerpo de la solicitud

CampoDescripción
project_id (requerido, cadena)minLength: 1
proof (opcional, DashboardProof)
capacidades (opcional, arreglo)

Solo opcional en conexión de agente y aprobación de app conectada. Omitido aprueba el conjunto completo solicitado; un subconjunto no vacío de las capacidades de la conexión restringe la credencial otorgada; cualquier otra cosa es invalid_request.

user_code (opcional, cadena)

Requerido al aprobar un inicio de sesión de dispositivo (flujo dispositivo): el código que la persona confirma coincide con el terminal. Una discrepancia es agent_connection_code_mismatch; el quinto expira el inicio de sesión (agent_connection_expired). Ignorado de otro modo. maxLength: 32

acceso (opcional, cadena)

El nivel de acceso con que se aprueba un inicio de sesión de dispositivo o una app conectada (Solo lectura, Proponer o Administrar); omitido mantiene el nivel solicitado. Ignorado para otras conexiones. Una persona que no puede aprobar revisiones no puede aprobar Administrar (403 approver_required). Permitido: "read", "propose", "manage"

Plantilla y respuestas de solicitud
shell · plantilla de solicitud
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/deny'

Respuestas

EstadoSignificadoCuerpo y encabezados
200La redirección de regreso a la aplicación.OAuthAuthorizationRedirect (application/json)
403

outside_screen_scope - el llamador está limitado a pantallas y la pantalla, carpeta de pantallas, selector o audiencia que nombra o alcanza la solicitud está fuera de ellas (docs/screen-scope.md). Un id fuera del alcance y un id que no existe reciben la misma respuesta; errors[0].screen_scope lleva el alcance del llamador, y la escritura se rechaza por completo, nunca se acota.

Problema (application/problem+json)
predeterminado

Respuesta estable RFC 9457 a problemas. Un 421 server_draining lleva Retry-After de 1 segundo, un 500 not_ready o dependency_unavailable lleva 5, y un 500 manifest_degraded lleva 60, a menos que el manejador establezca un valor más específico.

Problema (application/problem+json)