Referência da API

API de Projetos

Projetos, convites e login

Referência HTTP. Gerada a partir do contrato backend. Navegue pelos endpoints abaixo ou baixe o OpenAPI.

Este grupo tem 147 operações, geradas a partir de api/openapi.yaml. Filtre por caminho, ação ou autenticação. Cada endpoint lista suas entradas; expanda-o para ver um modelo de solicitação e os códigos de resposta. Os modelos precisam de seus próprios valores e de um corpo válido conforme o esquema.

Substitua os espaços reservados em maiúsculas pelos seus valores. Para uma solicitação JSON, salve um corpo que corresponda ao esquema em request.json. Exemplos de cookies usam um jar local de cookies de uma sessão autenticada.

Projetos, convites e login

GET/api/project/deletion-preview

Visualizar agente de exclusão de projeto

Retorna detalhes atuais de confirmação, bloqueadores de exclusão e dispositivos arquivados que serão desconectados. allowed é falso, com um motivo, quando o solicitante não pode excluir o projeto (apenas seu proprietário ou um administrador da organização pode; para um agente, sua pessoa responsável) ou um bloqueador permanece.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
previewProjectDeletionAgent

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
project_idconsultaopcionalID de projeto esperado; uma seleção alterada é recusada.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/deletion-preview'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectDeletionPreview (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PUT/api/project/owner

Transferir agente proprietário do projeto

O proprietário transfere a propriedade para um membro existente verificado do projeto; isso não concede nenhuma nova associação. A associação do novo proprietário deixa de ter qualquer screen_scope e upload_scope, então o novo proprietário alcança o projeto inteiro.

Uma sessão do dashboard de um administrador da organização do projeto que é membro transfere a propriedade da mesma forma, de quem for o proprietário do projeto; um administrador da organização que não é membro usa PUT /api/organizations/{org_id}/projects/{project_id}/owner.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ProjectOwnerTransfer
ID da operação
transferProjectOwnerAgent

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
user_id (obrigatório, string)minLength: 1 maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/owner'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectContext (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/project/move

Mover agente do projeto

Movimentação autorizada pelo proprietário transfere a ocupação da tela e o novo uso para o pagador de destino atomicamente; cobranças históricas mantêm seu pagador. Um destino que já tem tantos projetos ativos quanto o plano permite é project_limit_reached, cujo required_plan nomeia o plano com espaço, ausente em Enterprise.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ProjectMove
ID da operação
moveProjectAgent

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
organization_id (obrigatório, string)minLength: 1 maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/move'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectContext (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/project/moves

Projeto permitido move agente

Lista destinos que o proprietário administra ou cujo domínio verificado corresponde ao seu e-mail verificado.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
allowedProjectMovesAgent

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
project_idconsultaopcionalID de projeto esperado; uma seleção alterada é recusada.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/moves'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectMoveDestinations (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects

Listar projetos de agentes

Lista todas as associações ativas da identidade, com contexto de organização e proprietário, incluindo associações omitidas deste token ou do consentimento da concessão. Cada entrada marca in_token; a descoberta não adiciona autoridade e não tem limite de 64 projetos.

Autenticação
agentIdentityBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
listAgentProjects

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectContextList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects

Criar projeto de agente

Cria um projeto nomeado pertencente à pessoa responsável verificada. Sem uma organização nomeada, vai para a organização do domínio verificado da pessoa, senão para a organização do projeto atual, senão para a organização que a pessoa usou mais recentemente entre as que administra ou possui como gratuita, senão uma nova organização.

Um nome de organização seleciona exatamente uma correspondência visível, caso contrário cria uma nova organização. Uma pessoa possui uma organização Standard gratuita; uma nova organização além disso é free_organization_limit, nomeando a que ela possui.

Uma organização tem no máximo tantos projetos ativos quanto o plano permite (Standard 1, Plus 3, Premium 10, Education 50, Enterprise 100, ampliado por seus featuresets); um a mais é project_limit_reached, cujo required_plan nomeia o plano com espaço, ausente em Enterprise (fale com o suporte).

Uma repetição idempotente exata reenvia sua credencial de associação selada por dez minutos. O registro está isento do limite.

Sob um JWT de acesso de agente (escopo de identidade, acesso:gerenciar, uma concessão com acesso de identidade Gerenciar) nenhum token de projeto é entregue; o projeto se junta à concessão com Gerenciar e todas as capacidades, e uma atualização com seu project_id retorna um token para ele.

Autenticação
agentIdentityBearer OU dashboardSession
Corpo da solicitação
ProjectCreate
ID da operação
createAgentProject

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
organization_id (opcional, string)minLength: 1 maxLength: 200
organization_name (opcional, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/projects'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Resultado do ciclo de vida do projetoProjetoCriado (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/invitations

Listar convites

Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. Endereços dos destinatários são visíveis para o projeto proprietário, que os forneceu. Tokens e URLs de credenciais nunca são listados.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
listInvitations

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
kindconsultaopcional
statusconsultaopcional
cursorconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login.InvitationList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/invitations

Criar convites

Cria convites para membros ou compradores de anúncios. Entrega por e-mail nunca retorna uma credencial. Entrega por link é apenas para membros e retorna uma URL, inclusive em replays idempotentes exatos dentro de 24 horas. Convites por e-mail expiram após sete dias; links expiram após 24 horas. Convites por e-mail pendentes do mesmo tipo, endereço e projeto são reutilizados.

Um membro limitado a telas não convida pessoas (outside_screen_scope).

Um convite por e-mail project_member a uma pessoa que seria um convidado externo da organização do projeto (essa não é a organização principal dela) está sujeito à política de convidados dessa organização, e guest_not_allowed (403) responde quando a política (allow, domains ou none) não admite o endereço. Aceitar o convite verifica novamente.

A equipe e os próprios administradores da organização estão isentos. Um screen_scope no convite é o recurso de escopo de telas, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
InvitationCreate
ID da operação
createInvitations

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
kind (obrigatório, string)Permitido: "project_member", "ad_buyer"
entrega (opcional, string)Permitido: "email", "link" padrão: "email"
e-mails (opcional, array)
advertising (opcional, InvitationAdvertising)Escopo de propriedade do vendedor: pelo menos uma tela ou slot. Aceita apenas telas, apenas slots ou ambos.
upload_scope (opcional, UploadScope)

O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada.

O escopo é lido a cada requisição, então uma mudança vale para a próxima.

screen_scope (opcional, ScreenScope)

Sobre o que um membro ou agente com escopo pode agir (docs/screen-scope.md): as telas nas pastas de telas listadas e em todas as pastas dentro delas, e as telas listadas. Pelo menos um id no total. Um id que não nomeia nenhuma pasta ou tela existente do projeto quando gravado é invalid_request na sua posição; uma exclusão posterior deixa um id morto, que não concede nada.

O escopo é lido a cada requisição, então uma alteração vale já na próxima. Tags nunca são escopo.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/invitations'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Cria convites para membros ou compradores de anúncios.InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit
402

feature_not_in_plan — um escopo de telas exige Enterprise, e um escopo de upload (um uploader) exige Plus; o problema nomeia o recurso, o plano em que a conta está e required_plan. Restringir um escopo de upload e remover qualquer um dos escopos são sempre permitidos.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
POST/api/invitations/{id}/revoke

Revogar convite

Revoga um convite pendente. Um convite aceito retorna invitation_consumed. Um membro limitado a telas não revoga convites (outside_screen_scope).

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
revokeInvitation

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/invitations/RESOURCE_ID/revoke'

Respostas

StatusSignificadoCorpo e cabeçalhos
204Revoga um convite pendente.sem corpo
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/sign-in-resets

Solicitar redefinição de login

Aceita uma solicitação de reset de login sem revelar se uma pessoa possui o endereço.

Uma pessoa cujo endereço não foi verificado, como um cadastro de autoatendimento, também é encontrada, e concluir esse reset, que seu titular deve confirmar com replace_unverified_account, dá ao titular da caixa de entrada uma nova conta (uma nova pessoa com a credencial do reset, uma nova organização e um novo projeto) e exclui a pessoa não verificada, sem que ninguém tivesse demonstrado que o endereço lhe pertencia.

Um link de redefinição expira uma hora depois da última solicitação. Enquanto o link de uma pessoa estiver ativo e tiver menos de um dia, outra solicitação reenvia esse mesmo link (no máximo uma vez a cada dez minutos) e adia a expiração para uma hora após a solicitação, de modo que uma solicitação nunca invalida o link que já está na caixa de entrada; caso contrário, um novo link o substitui. Não há limite por endereço.

Concluir uma redefinição remove as outras chaves de acesso da pessoa (todas as chaves de acesso em uma redefinição de senha), remove a senha quando a nova credencial é uma chave de acesso, descarta uma alteração de e-mail pendente e encerra todas as sessões. Com ou sem pessoa, a solicitação também reenvia no máximo dez convites endereçados ao e-mail, e cada convite no máximo uma vez por hora.

Dos dez projetos não excluídos mais recentes com endereço de contato correspondente, cada projeto ativo com um plano do catálogo e cuja titularidade ainda esteja pendente desde o cadastro recebe novamente seu convite de cadastro, mesmo que ele tenha expirado ou que o destinatário já tenha entrado como membro comum.

Aceitar esse convite de cadastro com o acesso existente conclui a reivindicação de titularidade; somente solicitar a recuperação não altera a titularidade nem as credenciais. Convites por email pendentes para membros e compradores de anúncios de projetos ativos com um plano do catálogo, e convites pendentes para administradores de organizações ativas, ocupam as vagas restantes, dos mais recentes para os mais antigos.

Um convite reenviado mantém seu ID e recebe um novo link e uma nova validade; o link antigo deixa de funcionar e o número de convites pendentes do projeto não muda. Um convite de cadastro expirado volta como um novo convite e ocupa novamente uma vaga, aumentando o contador em um; ele é ignorado se o projeto estiver cheio.

Outros convites expirados, revogados, aceitos ou compartilhados por link não são reenviados.

Autenticação
nenhum
Corpo da solicitação
SignInResetRequest
ID da operação
requestSignInReset

Parâmetros

NomeEnviarObrigatório?Descrição
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
email (obrigatório, string)minLength: 3 maxLength: 254 formato: "email"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/sign-in-resets'

Respostas

StatusSignificadoCorpo e cabeçalhos
202Aceita uma solicitação de reset de login sem revelar se uma pessoa possui o endereço.SignInResetAccepted (application/json); cabeçalhos: RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
POST/api/enrollments

Registrar CLI

Cria um novo projeto e seu primeiro agente por meio de inscrição explícita via CLI agrupada, mesmo quando o endereço de contato já pertence a uma pessoa ou projeto. O e-mail de contato permanece não verificado e não concede autoridade; endereços malformados retornam invalid_request.

Enfileira um convite de inscrição na mesma transação. project_name é opcional; a omissão usa um nome legível de duas palavras. A repetição idempotente exata precede os limites de taxa. Persista a credencial permanente antes de relatar sucesso; seu envelope de repetição expira em issuance_expires_at e tentativas posteriores retornam credential_issuance_expired.

O registro de idempotência dura 24 horas.

Autenticação
nenhum
Corpo da solicitação
CLIEnrollmentRequest
ID da operação
enrollCLI

Parâmetros

NomeEnviarObrigatório?Descrição
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
credential_format (opcional, string)

Deve ser oauth, que responde ao par JWT do agente (CLIEnrollmentOAuth). legacy, ou omitir, responde 410 client_update_required, porque os portadores permanentes legados foram aposentados. Um servidor que não emite JWTs de agente responde not_ready. Permitidos: "oauth", "legacy"

intent (opcional, string)

Propósito opcional de inscrição. Omitir ou signage mantém screens=true, advertiser=false. advertising define advertiser=true, screens=false e nunca altera a atribuição do plano de cobrança. Permitidos: "signage", "advertising"

client_id (obrigatório, string)Identidade anônima estável de instalação gerada a partir de 32 bytes CSPRNG e persistida antes da primeira requisição. É material para limite de taxa, não credencial de projeto. padrão: "^cli_[A-Za-z0-9_-]{43}$"
email (opcional, string)

Endereço de contato do projeto não verificado. Exatamente um entre email ou agentid_claim é obrigatório. A inscrição sempre cria um novo projeto e enfileira seu convite; um endereço sozinho não concede autoridade. minLength: 3 maxLength: 254 formato: "email"

agentid_claim (opcional, string)

Código de reivindicação AgentID de uso único da página de login AgentID. Exatamente um de email ou agentid_claim é obrigatório. O endereço do proprietário AgentID verificado torna-se o contato do projeto e destinatário do convite. padrão: "^agid_[A-Za-z0-9_-]{43}$"

beta_key (opcional, string)Obrigatório quando o servidor tem uma chave beta de inscrição configurada. Omitir quando o servidor não restringe a inscrição.
nome (opcional, string)padrão: "Agente" minLength: 1 maxLength: 80
agent_type (opcional, string)padrão: "cli" padrão: "^[A-Za-z0-9][A-Za-z0-9._-]{0,31}$"
plataforma (opcional, string)maxLength: 80
version (opcional, string)maxLength: 40
install_source (opcional, string)

Opcional. De onde a integração foi instalada: o host e, depois de uma barra, o marketplace (claude/screenrig, codex/screenrig, grok/screenrig), ou apenas um host como npm. Quem informa é o software, não uma pessoa, então um valor ausente ou com formato incorreto é ignorado e nunca faz a inscrição falhar.

Apenas conta de onde vieram as instalações e não concede nada. padrão: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$"

project_name (opcional, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
setup_code (opcional, string)

Código de configuração opcional que a pessoa copiou do site com o prompt de configuração (dois grupos de quatro letras e dígitos, maiúsculas e hífen ignorados). Vincula o novo projeto a essa visita ao site; um código desconhecido ou expirado é ignorado e nunca faz a inscrição falhar. Não concede nada. pattern: "^[0-9A-Za-z]{4}-?[0-9A-Za-z]{4}$"

organização (opcional, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/enrollments'

Respostas

StatusSignificadoCorpo e cabeçalhos
201

Novo projeto e credencial bearer permanente. O projeto carrega o endereço de contato não verificado em sua forma fornecida e aparada. Persista e verifique o token antes de relatar sucesso na inscrição. A credencial não tem expiração programada, mas seu envelope de entrega de retry exato criptografado existe apenas até issuance_expires_at.

CLIEnrollmentOAuth (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
410

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
500

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/agentid/start

Iniciar ID de agente Entrar

Inicia um login no navegador AgentID (OIDC) no host da API derivado da origem pública em tempo de execução (https://play.<domain> -> https://api.<domain>). Define um cookie de vínculo de uso único e redireciona para o endpoint de autorização AgentID com PKCE S256. Responde apenas no host da API.

Enquanto a parte confiável não tem id e segredo de cliente, a rota exibe uma página simples indisponível com 503.

Autenticação
nenhum
Corpo da solicitação
nenhum
ID da operação
startAgentIDSignIn
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET 'https://api.screenrig.ai/agentid/start'

Respostas

StatusSignificadoCorpo e cabeçalhos
302Redirecionar para o endpoint de autorização AgentID.sem corpo
503Login AgentID indisponível.string (text/html)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/agentid/callback

Concluir login Agent ID

Conclui um login AgentID no navegador no host da API. Requer iss igual ao emissor configurado, cookie de vinculação e uma transação de uso único não expirada.

Troca o código com client_secret_basic e PKCE, verifica o id_token ES256 (iss, aud, exp com desvio de 60 s, nonce) contra o JWKS em cache, chama userinfo e aplica as regras do proprietário, então renderiza uma página de código de reivindicação de uso único. Um sujeito já vinculado a um agente renderiza a página já inscrita.

Esta rota nunca cria um projeto, identidade ou convite.

Autenticação
nenhum
Corpo da solicitação
nenhum
ID da operação
completeAgentIDSignIn

Parâmetros

NomeEnviarObrigatório?Descrição
códigoconsultaopcional
estadoconsultaopcional
issconsultaopcional
erroconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET 'https://api.screenrig.ai/agentid/callback'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Página de código de reivindicação AgentID de uso único com etapas de instalação do plugin.string (text/html)
409O sujeito AgentID já está registrado.string (text/html)
503Login AgentID indisponível.string (text/html)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/project

Obter projeto

O projeto chamador. Não debita o medidor de API de 1 crédito, então um projeto com saldo zero ainda pode ler o restante e se recuperar. Após um principal de projeto bem-sucedido, respostas JSON autenticadas /api e de problema incluem ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included como créditos inteiros.

SSE, runtime, conteúdo e respostas não autenticadas os omitem.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
getProject

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200ProjetoProjeto (application/json); cabeçalhos: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PATCH/api/project

Atualizar projeto

Renomeia o projeto atual. Os nomes contêm de 1 a 60 caracteres imprimíveis e nenhum texto com aparência de URL.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ProjectPatch
ID da operação
updateProject

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Renomeia o projeto atual.Projeto (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
EXCLUIR/api/project

Excluir agente do projeto

Só o proprietário do projeto ou um administrador de sua organização pode excluí-lo; qualquer outro chamador é recusado com forbidden. Uma pessoa também deve ser membro do projeto.

Um agente precisa da capacidade de projeto de associação alvo e exclui para sua pessoa responsável, que deve ser o proprietário ou um administrador da organização; um agente sem pessoa responsável não pode excluir, exceto o agente que inscreveu o projeto enquanto nenhuma pessoa aceitou sua inscrição.

Também requer o nome e revisão atuais, zero telas não arquivadas, sem crédito, reservas ou dívida em sua própria carteira e sem publicidade ao vivo. Um saldo negativo acumulado sob termos gratuitos ou de lançamento não bloqueia; a exclusão o compensa com uma entrada de razão project_delete_writeoff. Enfileira avisos para membros e usa a lápide irreversível.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
ProjectDeleteConfirmation
ID da operação
deleteProjectAgent

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
empty_only (opcional, boolean)

Exigir um projeto Screens vazio na transação de exclusão, incluindo conteúdo, outros agentes ou membros, trabalho e correspondência. O CLI também exige sua proveniência de inscrição salva antes de usar esta proteção de limpeza. A omissão mantém a exclusão explícita de membros.

nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
revisão (obrigatório, inteiro)mínimo: 1
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjetoExcluído (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/project/capabilities

Obter capacidades do projeto

O plano do projeto chamador, flags independentes de anunciante/telas com sua revisão, o conjunto derivado de capacidades efetivas, os recursos do plano que ele tem (plan_features) e seus limites (limits). Nunca reflete uma reivindicação do cliente; um plano desconhecido falha fechado como proibido.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
getProjectCapabilities

Parâmetros

NomeEnviarObrigatório?Descrição
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/project/capabilities'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Capacidades do projeto.ProjectCapabilities (application/json); cabeçalhos: Cache-Control
403proibido - o plano do projeto não está no catálogo.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/audit

Listar a auditoria da organização

O registro de auditoria próprio da organização: alterações em seus administradores, domínios e configurações de cobrança, com as mesmas entradas, filtros e formatos de GET /api/audit. Exige um administrador da organização. Faz parte do registro de auditoria, que o plano Enterprise inclui; uma organização cujo plano não o inclui é recusada com feature_not_in_plan (402).

Todo plano registra as suas alterações.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
listOrganizationAudit

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
atorconsultaopcional
actor_kindconsultaopcional
origemconsultaopcional
açãoconsultaopcional
desdeconsultaopcional
atéconsultaopcional
cursorconsultaopcional
limiteconsultaopcional
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/audit'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de entradas ou o registro filtrado como arquivo.AuditList (application/json), string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), string (application/pdf)
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
402feature_not_in_plan — O registro de auditoria faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan.Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/notifications

Listar notificações da organização

As notificações da organização, de todos os canais, mais antigas primeiro (no máximo 50).

Uma notificação pertence à organização e cobre todos os projetos dela, inclusive os adicionados depois (project_ids ausente), ou os projetos escolhidos (project_ids); ela age sobre as telas, fontes, campanhas e cartões desses projetos exatamente como uma notificação de projeto. status é failing enquanto as entregas de qualquer projeto coberto estiverem, e failing_since, last_success_at e last_failure_at reúnem as dos projetos cobertos (o início de falha mais antigo, o último sucesso e a última falha).

O segredo de assinatura de um webhook nunca é retornado aqui. Exige um administrador da organização; qualquer outra pessoa recebe not_found.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
listOrganizationNotifications

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As notificações da organização.OrganizationNotificationList (application/json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/organizations/{org_id}/notifications

Criar notificação da organização

Cria uma notificação da organização, com os campos de POST /api/notifications e os projetos que ela cobre: project_ids ausente ou null cobre todos os projetos da organização (os que ela tem e os que vier a ter), uma lista cobre exatamente esses, cada um um projeto ativo desta organização (invalid_request caso contrário).

Os destinatários de uma notificação por e-mail são owner (o proprietário de cada projeto coberto) ou user_ids de pessoas da organização (seus administradores e membros da organização) ou membros de um projeto coberto; cada projeto ainda envia e-mail apenas às pessoas que são membros dele.

Uma organização tem no máximo 50 notificações, sem contar as padrão que o sistema cria (notification_limit_reached). Os mesmos recursos do plano restringem os canais, regras e condições como nas rotas de projeto, avaliados no plano da organização. Cada projeto coberto recebe notification.created, e a mudança é registrada no registro de auditoria da organização.

O segredo de assinatura de um webhook é retornado apenas nesta resposta e em rotate-secret; um único segredo assina as entregas de todos os projetos cobertos. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas.

Autenticação
dashboardSession
Corpo da solicitação
OrganizationNotificationWrite
ID da operação
createOrganizationNotification

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
channel (obrigatório, string)Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram"
descrição (opcional, string)Um nome para pessoas. maxLength: 200
conditions (opcional, NotificationConditions)
screen_tags (opcional, ScreenTags)

Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto.

Tags nunca estão no manifesto de tempo de execução e nunca na autorização.

audience (opcional, CampaignAudience)

Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir).

As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra.

min_severity (opcional, NotificationSeverity)

A severidade de um aviso, da menos severa para a mais severa. Um aviso aberto tem a severidade de sua condição: error para screen_offline e warning para toda outra condição, a menos que a severidade da notificação diga o contrário. Um aviso de resolvido e um teste são info. Permitidos: "info", "warning", "error"

severity (opcional, NotificationSeverityOverrides)

Condição para severidade nesta notificação, como {"not_playing": "error"}. Conta para min_severity e é a severidade que Teams e PagerDuty mostram para a condição. Uma condição não listada mantém seu padrão. Em um patch, um objeto vazio, como null, limpa todas as sobrescritas.

active_hours (opcional, NotificationActiveHours)

Quando os avisos abertos são enviados: as janelas (screenrig.schedule/v1), lidas em timezone. Um aviso que vence enquanto elas estão fechadas espera a próxima abertura (outside hold, o padrão) e é enviado então se sua condição ainda se mantiver, de modo que uma condição que termina antes não envia nada, ou é ignorado (outside drop; last_error outside_hours).

Um aviso de resolvido para um aviso aberto que foi enviado sempre é enviado, dentro do horário ou não, e um teste o ignora. crashing é retido ou descartado como qualquer outra condição. O horário julga um aviso quando ele sai pela primeira vez; um que falhou é repetido no cronograma habitual, qualquer que seja o horário.

Adicionar, alterar ou remover o horário faz com que os avisos retidos pelo antigo sejam julgados de novo na hora.

reach_drop (opcional, NotificationReachDrop)

A menor queda no alcance de uma campanha para a qual um aviso reach_dropped é enviado: screens é o menor número de telas perdidas (padrão 1) e percent, quando definido, a menor parcela das telas que a campanha alcançava quando foi publicada; uma queda precisa atender aos dois.

Uma queda menor não enfileira aviso, e um aviso enfileirado cuja queda diminuiu abaixo do limite até a hora do envio é ignorado (condition_cleared). Somente com a condição reach_dropped; em uma notificação sem ela, invalid_request.

hold_minutes (opcional, integer)Por quanto tempo uma condição precisa durar antes de notificar. crashing nunca é retido. default: 10 minimum: 0 maximum: 1440
recipients (opcional, NotificationRecipients)

Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado.

url (opcional, string)Somente webhook: URL https em um host público da internet, porta 443 (o padrão) ou 8443. Sem userinfo nem fragmento. maxLength: 2048 format: "uri"
event_types (opcional, NotificationEventTypes)

Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído.

destination (opcional, NotificationDestination)

Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot.

Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048

telegram_chat_id (opcional, NotificationTelegramChat)Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$"
habilitado (opcional, boolean)padrão: true
project_ids (opcional, em linha)Os projetos que a notificação cobre; null ou ausente cobre todos os projetos da organização.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada. O segredo de um webhook é mostrado apenas aqui e em rotate-secret.Notification (application/json); cabeçalhos: Cache-Control
400invalid_request, webhook_url_rejected ou notification_destination_rejected.Problema (application/problem+json)
402feature_not_in_plan — como em POST /api/notifications, para o plano da organização.Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409notification_limit_reached ou idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/notifications/{id}

Obter notificação da organização

Uma notificação da organização, como GET /api/organizations/{org_id}/notifications a mostra.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
getOrganizationNotification

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma notificação.Notification (application/json); cabeçalhos: ETag
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PATCH/api/organizations/{org_id}/notifications/{id}

Atualizar notificação da organização

Altera qualquer campo que PATCH /api/notifications/{id} altera, na notificação e em todos os projetos cobertos, e project_ids: ausente mantém os projetos, null cobre todos os projetos, uma lista cobre exatamente esses. Um projeto que ganha a notificação começa no evento atual (nada anterior é enviado); um que a perde tem a notificação excluída.

Cada projeto coberto recebe notification.updated, e a mudança é registrada no registro de auditoria da organização.

Uma mudança que faz a notificação cobrir um projeto que ela não cobre hoje é restringida pelo plano como a criação da notificação tal como ficará (seu canal, suas regras e condições de tela, no plano da organização); cobrir menos projetos nunca é restringido, e passar de uma lista para todos os projetos sempre cobre mais. If-Match protege a revisão.

Autenticação
dashboardSession
Corpo da solicitação
OrganizationNotificationPatch
ID da operação
updateOrganizationNotification

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
descrição (opcional, string)Uma string vazia limpa a descrição. maxLength: 200
conditions (opcional, NotificationConditions)
screen_tags (opcional, ScreenTags)

Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto.

Tags nunca estão no manifesto de tempo de execução e nunca na autorização.

audience (opcional, inline)Como em NotificationPatch.
min_severity (opcional, inline)Como em NotificationPatch.
severity (opcional, inline)Substitui todas as sobrescritas; null ou um objeto vazio as limpa.
active_hours (opcional, inline)Substitui o horário; null o limpa.
reach_drop (opcional, inline)Substitui o limite; null limpa.
hold_minutes (opcional, integer)minimum: 0 maximum: 1440
recipients (opcional, NotificationRecipients)

Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado.

url (opcional, string)maxLength: 2048 format: "uri"
event_types (opcional, NotificationEventTypes)

Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído.

destination (opcional, NotificationDestination)

Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot.

Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048

telegram_chat_id (opcional, NotificationTelegramChat)Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$"
habilitado (opcional, boolean)
snoozed_until (opcional, inline)Não envia nada até este instante, no máximo 30 dias à frente; null encerra o silenciamento.
project_ids (opcional, em linha)Ausente mantém os projetos que a notificação cobre, null cobre todos os projetos da organização, uma lista cobre exatamente esses projetos.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Notificação atualizada.Notification (application/json); cabeçalhos: ETag
400invalid_request, webhook_url_rejected ou notification_destination_rejected.Problema (application/problem+json)
402feature_not_in_plan — como em PATCH /api/notifications/{id}, para o plano da organização.Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
412revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
EXCLUIR/api/organizations/{org_id}/notifications/{id}

Excluir notificação da organização

Exclui a notificação de todos os projetos que ela cobre, com notification.deleted em cada um, e a registra no registro de auditoria da organização. Os avisos pendentes são marcados como falhos com webhook_deleted.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
deleteOrganizationNotification

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
204Excluído.sem corpo; cabeçalhos: Cache-Control
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
412revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/organizations/{org_id}/notifications/{id}/rotate-secret

Rotacionar segredo da notificação da organização

Somente notificações de webhook (qualquer outro canal é invalid_request). Substitui o segredo de assinatura em todos os projetos cobertos de uma vez, para que um receptor continue verificando um único segredo, e retorna a notificação com o novo em secret.

Como em POST /api/notifications/{id}/rotate-secret, no máximo uma tentativa por projeto já em andamento ainda pode chegar assinada com o segredo antigo. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna o mesmo novo segredo por vinte e quatro horas.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
rotateOrganizationNotificationSecret

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/rotate-secret'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A notificação e seu novo segredo.Notification (application/json); cabeçalhos: Cache-Control
400invalid_request: a notificação não é um webhook.Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
412revision_conflict — If-Match está desatualizado; a current_revision do erro contém a revisão atual.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/organizations/{org_id}/notifications/{id}/test

Testar notificação da organização

Envia um notification.test pelo primeiro projeto que a notificação cobre (por id de projeto), como POST /api/notifications/{id}/test envia um pelo seu projeto: uma entrega, cujo resultado a lista de entregas mostra, tentada uma única vez.

Todos os projetos cobertos têm o mesmo receptor, destino e segredo, então um teste comprova o canal; o e-mail de um teste vai para os destinatários desse projeto. Uma notificação que não cobre nenhum projeto é invalid_request.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
testOrganizationNotification

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/test'

Respostas

StatusSignificadoCorpo e cabeçalhos
202A entrega de teste na fila.NotificationDelivery (application/json); cabeçalhos: RateLimit-Policy, RateLimit
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/notifications/{id}/deliveries

Listar entregas da notificação da organização

Os registros de entregas de todos os projetos que a notificação cobre, em uma única lista, mais recentes primeiro pelo momento em que cada linha entrou na fila. Cada linha nomeia seu projeto (project_id), e seu id abre GET .../deliveries/{delivery_id}/attempts. Devolva next_cursor como antes para a próxima página.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
listOrganizationNotificationDeliveries

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
beforeconsultaopcionalnext_cursor da página anterior de entregas.
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de entregas.NotificationDeliveryList (application/json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/notifications/{id}/deliveries/{delivery_id}/attempts

Listar tentativas de entrega da notificação da organização

As tentativas de uma entrega, mais recentes primeiro, as 20 mais recentes. Uma entrega que não é desta notificação é not_found.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
listOrganizationNotificationDeliveryAttempts

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
delivery_idcaminhoobrigatórioO id de uma das entregas do webhook.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/deliveries/DELIVERY_ID/attempts'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As tentativas mantidas da entrega.NotificationDeliveryAttemptList (application/json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
EXCLUIR/api/organizations/{org_id}/notifications/{id}/unsubscribed/{user_id}

Reinscrever uma pessoa em uma notificação da organização

Volta a enviar os e-mails de uma notificação a uma pessoa que os interrompeu com o link de cancelamento do e-mail, em todos os projetos que a notificação cobre (o link os interrompe em todos eles). Idempotente: uma pessoa que não está interrompida não altera nada, e a resposta é a notificação como está.

Uma mudança aumenta a revisão e adiciona notification.updated com os detalhes change resubscribed, user_id e via api a cada projeto coberto.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
resubscribeOrganizationNotificationUser

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
idcaminhoobrigatório
user_idcaminhoobrigatórioO user_id de uma pessoa na lista unsubscribed da notificação.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request DELETE --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/notifications/RESOURCE_ID/unsubscribed/USER_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A notificação, sem a pessoa em unsubscribed.Notification (application/json); cabeçalhos: ETag
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/reports

Listar os tipos de relatório em um projeto

Lista os tipos de relatório que GET /api/reports/{kind} gera, com os filtros de cada um, e os formatos em que um relatório é gravado. Requer a capacidade de relatórios.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listReportKindsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reports'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Os tipos de relatório.ReportCatalog (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/report-subscriptions

Listar as assinaturas de relatórios em um projeto

Lista os relatórios programados do projeto, do mais antigo ao mais recente (no máximo 50), cada um com seu próximo envio e o resultado do último. Requer a capacidade do projeto.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listReportSubscriptionsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As assinaturas de relatórios do projeto.ReportSubscriptionList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/report-subscriptions

Criar assinatura de relatório em um projeto

Programa o envio de um relatório por e-mail, como anexo PDF, XLSX ou CSV, todos os dias, semanas ou meses em um horário em um fuso horário.

Cada envio cobre o período anterior, em dias UTC: o dia anterior, os sete dias anteriores ou o mês passado. recipients são membros do projeto, indicados por user_id ou pelo endereço de e-mail do membro; qualquer outra pessoa é recusada, então uma assinatura nunca é um meio de escrever a um estranho, e um membro que sai deixa de recebê-la.

Uma execução que falha é repetida e aparece com last_status failed e last_error. No máximo 50 por organização em todos os seus projetos (report_subscription_limit_reached).

Autenticação
projectBearer
Corpo da solicitação
ReportSubscriptionWrite
ID da operação
createReportSubscriptionInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)minLength: 1 maxLength: 100
kind (obrigatório, string)Valores permitidos: "fleet_health", "uptime", "publishing", "alerts", "alert_log", "proof_of_play"
filters (opcional, objeto)Os filtros do relatório além dos dias (GET /api/reports os lista).
schedule (obrigatório, ReportSchedule)
format (obrigatório, string)Valores permitidos: "pdf", "xlsx", "csv"
recipients (obrigatório, array)user_id ou endereço de e-mail de membros do projeto.
habilitado (opcional, boolean)padrão: true
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/report-subscriptions'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada.ReportSubscription (application/json); cabeçalhos: ETag
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
402feature_not_in_plan — Os relatórios fazem parte do Plus. O problema nomeia o recurso, o plano do projeto e required_plan.Problema (application/problem+json)
409report_subscription_limit_reached.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/cards

Listar cartões no projeto

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listCardsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
projetoconsultaopcional
depoisconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Recurso do cartãoobjeto (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/cards

Criar cartão de projeto

Autenticação
projectBearer
Corpo da solicitação
CardCreate
ID da operação
createProjectCard

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
tipo (obrigatório, string)
major (opcional, inteiro)mínimo: 1
params (obrigatório, objeto)
dados (opcional, objeto)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/cards'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Recurso do cartãoCardInstance (application/json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/organizations/{org_id}/billing/portal-sessions

Criar portal da organização

Exige um administrador designado de uma organização ativa, autenticação por cookie da mesma origem exata e CSRF por JWT. O ator e a URL de retorno são controlados pelo servidor. A resposta é privada e no-store. Também está aberto a uma organização delegada a um revendedor, para o seu cartão de pagamento e as faturas anteriores.

Autenticação
dashboardSession
Corpo da solicitação
EmptyPaymentRequest
ID da operação
createOrganizationPortal

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/portal-sessions'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Resultado do gerenciamento de cobrança.BillingPortalSession (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PUT/api/organizations/{org_id}/billing/auto-top-up

Definir recarga automática da organização

Exige um administrador designado de uma organização ativa, autenticação por cookie da mesma origem exata e CSRF por JWT. O ator é controlado pelo servidor. Desativar preserva os valores salvos e o gasto mensal; os campos de valor são ignorados ao desativar. A resposta é privada e no-store. Alterar as configurações remove uma pausa recuperável somente depois que qualquer fatura em aberto com falha de pagamento for anulada com segurança.

Ativá-lo para uma organização delegada a um revendedor responde 409 billed_by_reseller; desativar continua permitido.

Autenticação
dashboardSession
Corpo da solicitação
AutoTopUpSettings
ID da operação
setOrganizationAutoTopUp

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/auto-top-up'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do gerenciamento de cobrança.AutoTopUpView (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/billing/payments

Obter os pagamentos de uma organização

Visões de pagamentos de uma organização ativa. Exige o cookie do administrador designado; a visibilidade da equipe, por si só, não concede acesso a compras. Pagamentos não configurados retornam available false. O retorno do navegador nunca concede créditos.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
getOrganizationPayments

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/payments'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Disponibilidade de pagamentos e compras recentes.OrganizationPayments (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/organizations/{org_id}/billing/credit-checkouts

Criar um pagamento para uma organização

Iniciar uma compra pré-paga para o administrador designado de uma organização ativa. Exige autenticação por cookie da mesma origem e, para sessões JWT, um cabeçalho CSRF correspondente. O servidor controla a organização, o cliente, o responsável e as URLs de retorno. Os créditos são aplicados somente após o serviço de cobrança confirmar o pagamento. Em caso de respostas ambíguas, tente novamente com a mesma Idempotency-Key e o mesmo valor.

Uma organização delegada a um revendedor responde 409 billed_by_reseller.

Autenticação
dashboardSession
Corpo da solicitação
object
ID da operação
createOrganizationCheckout

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
amount_cents (obrigatório, inteiro)mínimo: 10000 máximo: 1000000 formato: "int64"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/organizations/ORG_ID/billing/credit-checkouts'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Compra criada ou repetida. A URL de pagamento fica ausente após a conclusão. As respostas são privadas e no-store.CreditPurchase (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/billing/balance

Obter saldo de cobrança da organização

A carteira da organização. Exige um admin designado da organização, um admin do revendedor ao qual a organização está delegada ou uma sessão da equipe. Não concede associação a nenhum projeto.

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
getOrganizationBillingBalance

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/balance'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Saldo de cobrança da organização.Saldo de cobrança (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/billing/statement

Obter extrato de cobrança da organização

Entradas de diário atribuídas a esta organização no momento da cobrança, com identidades de projeto e pagador. Movimentações não transferem acesso histórico. Entradas anteriores ao contexto registrado da organização permanecem em seus extratos de projeto. Lido pelas mesmas pessoas que o saldo (getOrganizationBillingBalance).

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
getOrganizationBillingStatement

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
cursorconsultaopcional
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/statement'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Extrato de cobrança da organização.Extrato de cobrança (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations/{org_id}/billing/usage

Obter uso de cobrança da organização

O pool de uso da organização e a participação de cada projeto em um mês UTC. Cobre o uso pago por esta organização; os demais custos do pagador estão no extrato da organização. Lido pelas mesmas pessoas que o saldo (getOrganizationBillingBalance).

Autenticação
dashboardSession
Corpo da solicitação
nenhum
ID da operação
getOrganizationBillingUsage

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório
cursorconsultaopcional
limiteconsultaopcional
períodoconsultaopcionalMês UTC no formato YYYY-MM; padrão para o mês atual.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/organizations/ORG_ID/billing/usage'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uso de cobrança da organização.OrganizationBillingUsage (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/organizations

Lista de organizações do agente

Organizações visíveis, incluindo organizações vazias para seus administradores. Nomes não são únicos.

Autenticação
agentIdentityBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
agentOrganizationsList
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://api.screenrig.ai/api/organizations'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado da organização.OrganizationList (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PATCH/api/organizations/{org_id}

Renomear organizações do agente

Admins designados e agentes cujo responsável verificado é um admin podem renomear uma organização. Nenhuma permissão ou associação de projeto é concedida.

Autenticação
agentIdentityBearer OU dashboardSession
Corpo da solicitação
Renomear organização
ID da operação
agentOrganizationsRename

Parâmetros

NomeEnviarObrigatório?Descrição
org_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PATCH --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/organizations/ORG_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado da organização.OrganizationView (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PUT/api/project/review-policy

Definir política de revisão do projeto

Ativa ou desativa Exigir revisão para alterações do agente. Enquanto ativado, todo agente e cliente de serviço no projeto tem acesso Propor em cada solicitação, independentemente das credenciais. Somente o proprietário do projeto ou um administrador da organização do projeto podem alterar (proibido para outros); sessões de sombra da equipe não podem alterar.

If-Match carrega review_policy_revision (0 permitido) e é obrigatório; um valor obsoleto é revision_conflict. Desativá-lo requer prova, a prova de passkey fresca ou senha que a aprovação de conexão do agente usa; ativá-lo não. Revisões abertas permanecem decidíveis de qualquer forma. Anexa project.review_policy_changed.

Autenticação
dashboardSession
Corpo da solicitação
ReviewPolicyUpdate
ID da operação
setProjectReviewPolicy

Parâmetros

NomeEnviarObrigatório?Descrição
If-Matchcabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
agent_changes_require_review (obrigatório, booleano)
proof (opcional, DashboardProof)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PUT --cookie cookies.txt --cookie-jar cookies.txt --header 'If-Match: "REVISION"' --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/project/review-policy'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A política atualmente em vigor.ReviewPolicy (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/project/deletion-preview

Visualizar agente de exclusão de projeto no projeto

Retorna detalhes atuais de confirmação, bloqueadores de exclusão e dispositivos arquivados que serão desconectados. allowed é falso, com um motivo, quando o solicitante não pode excluir o projeto (apenas seu proprietário ou um administrador da organização pode; para um agente, sua pessoa responsável) ou um bloqueador permanece.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
previewProjectDeletionAgentInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
project_idconsultaopcionalID de projeto esperado; uma seleção alterada é recusada.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/deletion-preview'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectDeletionPreview (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PUT/api/projects/{project_id}/project/owner

Transferir agente proprietário do projeto no projeto

O proprietário transfere a propriedade para um membro existente verificado do projeto; isso não concede nenhuma nova associação. A associação do novo proprietário deixa de ter qualquer screen_scope e upload_scope, então o novo proprietário alcança o projeto inteiro.

Autenticação
projectBearer
Corpo da solicitação
ProjectOwnerTransfer
ID da operação
transferProjectOwnerAgentInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
user_id (obrigatório, string)minLength: 1 maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/owner'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectContext (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/project/move

Mover agente do projeto no projeto

Movimentação autorizada pelo proprietário transfere a ocupação da tela e o novo uso para o pagador de destino atomicamente; cobranças históricas mantêm seu pagador.

Autenticação
projectBearer
Corpo da solicitação
ProjectMove
ID da operação
moveProjectAgentInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
organization_id (obrigatório, string)minLength: 1 maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/move'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectContext (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/project/moves

Projeto permitido move agente no projeto

Lista destinos que o proprietário administra ou cujo domínio verificado corresponde ao seu e-mail verificado.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
allowedProjectMovesAgentInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
project_idconsultaopcionalID de projeto esperado; uma seleção alterada é recusada.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/moves'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjectMoveDestinations (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/invitations

Listar convites no projeto

Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login. Endereços dos destinatários são visíveis para o projeto proprietário, que os forneceu. Tokens e URLs de credenciais nunca são listados.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listInvitationsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
kindconsultaopcional
statusconsultaopcional
cursorconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Lista registros do ciclo de vida do convite para o projeto atual, excluindo reinicializações de login.InvitationList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/invitations

Criar convites no projeto

Cria convites para membros ou compradores de anúncios. Entrega por e-mail nunca retorna uma credencial. Entrega por link é apenas para membros e retorna uma URL, inclusive em replays idempotentes exatos dentro de 24 horas. Convites por e-mail expiram após sete dias; links expiram após 24 horas. Convites por e-mail pendentes do mesmo tipo, endereço e projeto são reutilizados.

Um membro limitado a telas não convida pessoas (outside_screen_scope).

Um convite por e-mail project_member a uma pessoa que seria um convidado externo da organização do projeto (essa não é a organização principal dela) está sujeito à política de convidados dessa organização, e guest_not_allowed (403) responde quando a política (allow, domains ou none) não admite o endereço. Aceitar o convite verifica novamente.

A equipe e os próprios administradores da organização estão isentos. Um screen_scope no convite é o recurso de escopo de telas, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).

Autenticação
projectBearer
Corpo da solicitação
InvitationCreate
ID da operação
createInvitationsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
kind (obrigatório, string)Permitido: "project_member", "ad_buyer"
entrega (opcional, string)Permitido: "email", "link" padrão: "email"
e-mails (opcional, array)
advertising (opcional, InvitationAdvertising)Escopo de propriedade do vendedor: pelo menos uma tela ou slot. Aceita apenas telas, apenas slots ou ambos.
upload_scope (opcional, UploadScope)

O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada.

O escopo é lido a cada requisição, então uma mudança vale para a próxima.

screen_scope (opcional, ScreenScope)

Sobre o que um membro ou agente com escopo pode agir (docs/screen-scope.md): as telas nas pastas de telas listadas e em todas as pastas dentro delas, e as telas listadas. Pelo menos um id no total. Um id que não nomeia nenhuma pasta ou tela existente do projeto quando gravado é invalid_request na sua posição; uma exclusão posterior deixa um id morto, que não concede nada.

O escopo é lido a cada requisição, então uma alteração vale já na próxima. Tags nunca são escopo.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/invitations'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Cria convites para membros ou compradores de anúncios.InvitationCreated (application/json); headers: RateLimit-Policy, RateLimit
402

feature_not_in_plan — um escopo de telas exige Enterprise, e um escopo de upload (um uploader) exige Plus; o problema nomeia o recurso, o plano em que a conta está e required_plan. Restringir um escopo de upload e remover qualquer um dos escopos são sempre permitidos.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
GET/api/projects/{project_id}/project

Obter projeto no projeto

O projeto chamador. Não debita o medidor de API de 1 crédito, então um projeto com saldo zero ainda pode ler o restante e se recuperar. Após um principal de projeto bem-sucedido, respostas JSON autenticadas /api e de problema incluem ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset e ScreenRig-Credits-Included como créditos inteiros.

SSE, runtime, conteúdo e respostas não autenticadas os omitem.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getProjectInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200ProjetoProjeto (application/json); cabeçalhos: ScreenRig-Credits-Remaining, ScreenRig-Credits-Reset, ScreenRig-Credits-Included, ScreenRig-Credits-Low
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PATCH/api/projects/{project_id}/project

Atualizar projeto dentro do projeto

Renomeia o projeto atual. Os nomes contêm de 1 a 60 caracteres imprimíveis e nenhum texto com aparência de URL.

Autenticação
projectBearer
Corpo da solicitação
ProjectPatch
ID da operação
updateProjectInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Renomeia o projeto atual.Projeto (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
EXCLUIR/api/projects/{project_id}/project

Excluir agente do projeto no projeto

Só o proprietário do projeto ou um administrador de sua organização pode excluí-lo; qualquer outro chamador é recusado com forbidden. Uma pessoa também deve ser membro do projeto.

Um agente precisa da capacidade de projeto de associação alvo e exclui para sua pessoa responsável, que deve ser o proprietário ou um administrador da organização; um agente sem pessoa responsável não pode excluir, exceto o agente que inscreveu o projeto enquanto nenhuma pessoa aceitou sua inscrição.

Também requer o nome e revisão atuais, zero telas não arquivadas, sem crédito, reservas ou dívida em sua própria carteira e sem publicidade ao vivo. Um saldo negativo acumulado sob termos gratuitos ou de lançamento não bloqueia; a exclusão o compensa com uma entrada de razão project_delete_writeoff. Enfileira avisos para membros e usa a lápide irreversível.

Autenticação
projectBearer
Corpo da solicitação
ProjectDeleteConfirmation
ID da operação
deleteProjectAgentInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)ID de projeto esperado. O servidor recusa a ação se a credencial atual ou sessão de cookie tiver como alvo outro projeto; clientes de navegador enviam o ID do projeto da página. minLength: 1 maxLength: 200
empty_only (opcional, boolean)

Exigir um projeto Screens vazio na transação de exclusão, incluindo conteúdo, outros agentes ou membros, trabalho e correspondência. O CLI também exige sua proveniência de inscrição salva antes de usar esta proteção de limpeza. A omissão mantém a exclusão explícita de membros.

nome (obrigatório, ProjectName)Nome de projeto imprimível aparado. Rejeita controles, texto com aparência de URL, @, www. e ://. minLength: 1 maxLength: 60
revisão (obrigatório, inteiro)mínimo: 1
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do ciclo de vida do projetoProjetoExcluído (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/applications

Listar aplicativos no projeto

Lista aplicativos do mais novo para o mais antigo, no máximo 500 por página. Nomes são rótulos e não precisam ser únicos; enderece um aplicativo pelo ID. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o de volta como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listApplicationsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
depoisconsultaopcionalnext_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'

Respostas

StatusSignificadoCorpo e cabeçalhos
200AplicativosApplicationList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/applications

Enviar aplicativo dentro do projeto

Transmite um tar.gz produzido por CLI diretamente para staging durável limitado. Metadados são carregados nos cabeçalhos para que o arquivo nunca seja codificado em base64 ou materializado como JSON pelo servidor.

O proxy na frente da API encerra uma solicitação que não respondeu em cerca de 100 s, portanto um arquivo grande em um uplink lento falha aqui; POST /api/applications/uploads envia o arquivo diretamente para o armazenamento de objetos.

Autenticação
projectBearer
Corpo da solicitação
string
ID da operação
uploadApplicationInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório
ScreenRig-Archive-SHA256cabeçalhoobrigatório
ScreenRig-Expanded-Bytescabeçalhoobrigatório
ScreenRig-File-Countcabeçalhoobrigatório
ScreenRig-SDK-Versioncabeçalhoopcional
ScreenRig-Application-Namecabeçalhoopcional

Nome do aplicativo ASCII; mutuamente exclusivo com ScreenRig-Application-Name*. Espaços em branco no início e fim são removidos. Controles e valores duplicados no cabeçalho são rejeitados. O nome decodificado é limitado a 120 valores escalares Unicode.

ScreenRig-Application-Name*cabeçalhoopcional

Nome de aplicativo Unicode codificado como RFC 8187 UTF-8'' seguido por bytes UTF-8 codificados em porcentagem (idioma vazio, charset UTF-8 exato). Mutuamente exclusivo com ScreenRig-Application-Name. Escapes inválidos, UTF-8 inválido, controles e valores duplicados no cabeçalho são rejeitados.

Espaços em branco no início e no fim são removidos; o nome decodificado é limitado a 120 valores escalares Unicode. Nenhum cabeçalho de nome pode renomear uma atualização de lançamento. Isso evita Unicode bruto em valores de cabeçalho HTTP.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'ScreenRig-Archive-SHA256: VALUE' --header 'ScreenRig-Expanded-Bytes: VALUE' --header 'ScreenRig-File-Count: VALUE' --header 'Content-Type: application/gzip' --data-binary '@request.bin' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications'

Respostas

StatusSignificadoCorpo e cabeçalhos
202Upload aceitoOperationAccepted (application/json); cabeçalhos: RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/applications/uploads

Criar upload de aplicativo no projeto

Declara um upload direto de um tar.gz produzido pela CLI que cria um novo aplicativo. A resposta é uma autorização assinada para exatamente um PUT de objeto do arquivo, portanto os bytes vão diretamente para o armazenamento de objetos e nunca pela API, cujo proxy encerra uma solicitação que não respondeu em cerca de 100 s.

Envie o arquivo com PUT para upload_url, depois confirme com POST /api/applications/uploads/{id}/commit e aguarde a operação. O aplicativo, sua versão e a operação receptora existem a partir desta resposta, como após POST /api/applications. Um upload não confirmado em 24 horas falha, e um aplicativo que nunca publicou uma versão é removido.

A mesma Idempotency-Key e o mesmo corpo retornam o mesmo upload com uma URL recém-assinada. GET /api/capabilities define features.application_direct_uploads onde essas rotas são servidas.

Autenticação
projectBearer
Corpo da solicitação
ApplicationUploadDeclaration
ID da operação
createApplicationUploadInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (opcional, string)

Nome de um novo aplicativo, cortado; no máximo 120 caracteres Unicode e nenhum controle. Omitido ou vazio seleciona um nome gerado. Uma declaração de versão (POST /api/applications/{id}/uploads) não deve carregar um. maxLength: 120

sha256 (obrigatório, string)SHA-256 dos bytes do arquivo. pattern: "^[0-9a-f]{64}$"
compressed_bytes (obrigatório, inteiro)Tamanho do arquivo em bytes. mínimo: 1 máximo: 104857600
expanded_bytes (obrigatório, inteiro)mínimo: 1 máximo: 262144000
file_count (obrigatório, inteiro)mínimo: 1 máximo: 5000
sdk_version (opcional, string)maxLength: 64
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/applications/uploads'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Autorização assinada para exatamente um PUT de objeto do arquivo. Envie o método retornado e cada cabeçalho retornado literalmente; o PUT deve começar antes de expires_at, duas horas após a declaração.ApplicationUploadSession (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/playlists

Listar playlists V2 no projeto

Lista de playlists versionadas que pode expor páginas de adslot. A lista v1 recusa uma página que contém um documento com anúncios com version_required em vez de filtrá-la.

Páginas como listPlaylists, mais recentes primeiro, no máximo 200 por página e menos quando uma página contém 8 MiB de playlists armazenadas. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página. library=true lista, em vez disso, as playlists da Biblioteca da organização (somente leitura; programe-as ou crie a partir dos modelos delas).

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listPlaylistsV2InProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
libraryconsultaopcional

true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true.

depoisconsultaopcionalnext_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Playlists com a união da página de adslot.PlaylistV2List (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/playlists

Criar playlist V2 no projeto

Entrada de criação para a união de páginas de adslot. No máximo 16 páginas de adslot, pelo menos uma página comum sem visibilidade, e o reuso de uma definição de slot em páginas diferentes permanecem verificações do servidor. Resolução de referência e DNS continuam verificações do servidor.

Uma gravação que contém uma página iframe que o Player web não consegue enquadrar é salva mesmo assim; a resposta traz avisos (PlaylistWarning) e o registro do projeto recebe um evento playlist.iframe_framing_refused por página.

Uma escrita cujo src de iframe, fallback_src ou params de aplicativo leem um token de tela ({screen.field.NAME} e os outros dos esquemas de primitiva) que uma tela que mostra a playlist não tem também responde com um aviso screen_fact_missing nomeando as primeiras 20 telas assim; os manifestos dessas telas deixam essa primitiva de fora.

Um src ou fallback_src de iframe que seja um link do Google Apresentações, Docs ou Planilhas (compartilhar, publicar na web ou incorporar) ou um link de incorporação do Microsoft 365 OneDrive ou SharePoint é armazenado reconstruído para a tela, onde as apresentações repetem e avançam com o delayms do link limitado à duração da página, e Docs, Planilhas, Word e Excel recarregam a cada 5 minutos.

Um código de incorporação <iframe> colado em src ou fallback_src é lido pelo seu src. Um arquivo que pede login aos espectadores é recusado com document_not_shared (400), cujo errors[0].field é esse src ou fallback_src e cujo detalhe nomeia a configuração de compartilhamento a mudar.

Autenticação
projectBearer
Corpo da solicitação
PlaylistCreateRequest
ID da operação
createPlaylistV2InProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Screenrig-Review-Notecabeçalhoopcional

Nota opcional do proponente em uma escrita de classe revisão, enviada como UTF-8 codificado em porcentagem (o que encodeURIComponent do JavaScript escreve). O servidor decodifica a porcentagem (uma escape inválida é 400 invalid_request); a nota decodificada é texto simples, no máximo 280 caracteres após o corte, sem caracteres de controle (caso contrário 400 invalid_request).

Armazenado na revisão quando a gravação se torna uma; ignorado quando aplica ao vivo.

Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playlists'

Respostas

StatusSignificadoCorpo e cabeçalhos
202

A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url.

Uma repetição com Idempotency-Key responde com o mesmo corpo.

ReviewPending (application/json)
201Playlist com suas páginas de adslot.PlaylistV2 (application/json)
402

feature_not_in_plan — Declarar campos, bloquear uma primitiva ou alterar uma playlist que declara campos é o recurso de modelos de playlist, e o plano do projeto não o inclui; required_plan nomeia o plano que o inclui. Criar uma playlist a partir de um modelo é sempre permitido.

Um formato de 2 ou mais displays (um video wall) faz parte do Plus; um formato de região e uma playlist sem formato estão em todos os planos. O problema nomeia o recurso, o plano do projeto e required_plan.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/screens

Listar telas no projeto

A lista padrão retorna telas pairing_pending e ativas. Passe state=archived para listar apenas telas arquivadas. Passe tag para listar apenas telas cujas tags contenham exatamente essa tag; telas sem tag são omitidas quando o filtro está presente.

Passe field, uma vez por campo, como NAME:VALUE para listar apenas as telas cujos campos têm todos os valores, e near como LAT,LON,KM para listar apenas as telas localizadas a até KM quilômetros do ponto; telas sem localização são omitidas, e todo filtro se combina com state e tag.

Passe folder como um ID de pasta de telas para listar apenas as telas diretamente dentro dela (não as de suas subpastas), ou root para as telas fora de qualquer pasta.

As telas vêm das mais novas para as mais antigas, no máximo 500 por página. next_cursor é a posição da última linha retornada enquanto restam mais linhas; passe-o de volta como after, com os mesmos filtros, para a página seguinte. next_cursor é null na última página. Um chamador limitado a telas (docs/screen-scope.md) lista apenas as telas do seu escopo.

Uma requisição que não nomeia um projeto deixa de fora cada projeto em que o chamador é limitado a telas; nomeie o projeto para listá-lo.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listScreensInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
estadoconsultaopcionalOmitir para pairing_pending e ativo. Passe archived para listar somente telas arquivadas.
tagconsultaopcionalTag exata da tela. Telas sem tag são omitidas quando este filtro está presente.
fieldconsultaopcional

NAME:VALUE, separado no primeiro dois-pontos: apenas telas cujo campo NAME contém exatamente VALUE. Repita o parâmetro para vários campos; todos precisam corresponder, e cada nome pode ser informado uma única vez. Um valor malformado ou repetido retorna invalid_request citando field.

nearconsultaopcional

LAT,LON,KM em graus decimais e quilômetros, por exemplo 47.6062,-122.3321,25: apenas telas cuja localização fica a até KM quilômetros do ponto. A latitude vai de -90 a 90, a longitude de -180 a 180 e KM é maior que 0 e no máximo 20038. Telas sem localização são omitidas. Um valor malformado retorna invalid_request citando near.

pastaconsultaopcionalUm ID de pasta de telas mantém apenas as telas diretamente dentro dessa pasta, não as de suas subpastas; root mantém apenas as telas fora de qualquer pasta. Omitir lista todas as telas.
depoisconsultaopcionalnext_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens'

Respostas

StatusSignificadoCorpo e cabeçalhos
200TelasScreenList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/screen-folders

Listar pastas de telas no projeto

Lista todas as pastas de telas do projeto, no máximo 1000, ordenadas por nome.

Pastas organizam telas e as segmentam: uma folha de público-alvo de campanha {"folder": ID} corresponde às telas dessa pasta e de toda pasta dentro dela, um seletor de ação de frota by:folder atua sobre as mesmas telas, e o default_playlist_id de uma pasta é o que suas telas sem playlist própria exibem. parent_id é nulo na raiz do projeto; construa a árvore a partir de parent_id. screens conta as telas ativas diretamente dentro de cada pasta.

A pasta de uma tela é Screen.folder_id. Um chamador limitado a telas (docs/screen-scope.md) lista as pastas dentro do seu escopo e as pastas acima delas, que são somente leitura para que a sua árvore tenha uma raiz; as pastas acima não trazem contagem de telas e as pastas irmãs ficam ocultas. Uma requisição que não nomeia um projeto deixa de fora cada projeto em que o chamador é limitado a telas.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listScreenFoldersInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Pastas de telasScreenFolderList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/screen-folders

Criar pasta de telas no projeto

Cria uma pasta de telas na raiz do projeto (parent_id nulo ou ausente) ou dentro de parent_id. Nomes são aparados, têm de 1 a 100 caracteres Unicode sem controles, não são "." nem "..", e são únicos entre seus irmãos (resource_conflict).

Uma organização tem no máximo 1000 pastas em todos os seus projetos (quota_exceeded) aninhadas no máximo 10 níveis (invalid_request). default_playlist_id, quando definido, deve nomear uma playlist aprovada (playlist_not_approved). Emite screen.folder_created.

Um chamador limitado a telas (docs/screen-scope.md) só cria uma pasta dentro de uma pasta do seu escopo; a raiz do projeto ou qualquer outro pai é outside_screen_scope. Criar uma pasta dentro de uma pasta protegida é uma revisão protected_change (202 pending_review) decidida por um segundo aprovador.

Autenticação
projectBearer
Corpo da solicitação
ScreenFolderCreate
ID da operação
createScreenFolderInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)Aparado; 1 a 100 caracteres Unicode, sem controles, não . nem .., único entre seus irmãos. minLength: 1 maxLength: 100
parent_id (opcional, embutido)A pasta para criá-la; null ou ausente para a raiz do projeto.
default_playlist_id (opcional, string)Uma playlist aprovada para as telas da pasta que não têm uma própria. minLength: 1
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screen-folders'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Pasta criada.ScreenFolder (application/json); cabeçalhos: ETag
202

A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url.

Uma repetição com Idempotency-Key responde com o mesmo corpo.

ReviewPending (application/json)
403outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md).Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/screens/move

Mover telas no projeto

Move telas (screen_ids) e pastas (folder_ids) para uma pasta (folder_id), ou para a raiz do projeto quando folder_id é null, em uma única solicitação tudo ou nada de no máximo 1000 ids. Todo id deve existir (not_found). Uma pasta não pode se mover para dentro de si mesma ou de uma pasta dentro dela, e a movimentação deve manter todas as pastas dentro de 10 níveis (invalid_request).

Itens já no destino permanecem como estão; cada tela e cada pasta movida avança sua revisão. As telas movidas resolvem novamente a playlist em cerca de 15 segundos: levels nomeia as campanhas cujo público-alvo de pasta elas entram ou deixam e as playlists padrão de pasta que ganham ou perdem. Emite screen.moved.

Um chamador limitado a telas (docs/screen-scope.md) move telas e pastas dentro do seu escopo para uma pasta do seu escopo; qualquer id ou destino fora dele, e a raiz do projeto, recusam a movimentação inteira (outside_screen_scope), inclusive quando uma tela sai do escopo entre a verificação e a gravação.

Mover para dentro ou para fora de uma pasta protegida é uma revisão protected_change (202 pending_review) decidida por um segundo aprovador.

Autenticação
projectBearer
Corpo da solicitação
ScreenMove
ID da operação
moveScreensInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
folder_id (obrigatório, inline)Pasta de destino; nulo para a raiz do projeto.
screen_ids (opcional, array)
folder_ids (opcional, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/move'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Quantas telas e pastas foram movidas, e os levels que as telas movidas ganham ou perdem.ScreenMoveResult (application/json)
202

A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url.

Uma repetição com Idempotency-Key responde com o mesmo corpo.

ReviewPending (application/json)
403outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md).Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/schedule/calendar

Obter calendário de programação no projeto

Responde o que as telas de um assunto reproduzem em [from, to) e por quê, para o calendário de programação do painel: exatamente um entre screen_id, folder_id (as telas da pasta e de todas as pastas dentro dela), tag ou campaign_id (as telas do seu público-alvo).

Telas cujas pilhas têm entradas idênticas (os mesmos níveis, playlist padrão, fuso horário e número de displays) compartilham um grupo com uma linha do tempo, então um assunto grande custa dezenas de linhas do tempo; um grupo lista até 500 de suas telas e uma resposta no máximo 200 grupos (truncated).

Cada grupo traz sua pilha, da mais alta para a mais baixa (takeover, campanhas que alcançam as telas, suas próprias entradas de programação, depois a playlist padrão ou a da pasta mais próxima), os spans de cada nível (plays em todo display que ele alcança, partial com os displays em que é reproduzido, outranked, ou conditional enquanto aguarda interação ou uma condição de dados que só um Player observa), o que cada display mostra (on_screen; a região main de uma página inteira) e conflicts (duas campanhas de mesma prioridade vigorando ao mesmo tempo; um nível que vigora mas nunca é reproduzido). from e to são instantes RFC 3339, com to depois de from, no máximo 93 dias de distância; são truncados ao minuto.

As regras são lidas no fuso horário de cada grupo, como a varredura e todo Player as leem; todo nível é considerado reproduzível. Um chamador limitado a telas (docs/screen-scope.md) deve enviar um screen_id ou um folder_id dentro do seu escopo; uma tag, um campaign_id ou nenhum alvo é outside_screen_scope.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getScheduleCalendarInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
deconsultaobrigatório
atéconsultaobrigatório
screen_idconsultaopcional
folder_idconsultaopcional
tagconsultaopcional
campaign_idconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/calendar?from=FROM&to=TO'

Respostas

StatusSignificadoCorpo e cabeçalhos
200O calendário do assunto.ScheduleCalendar (application/json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/schedule/imports/template

Obter modelo de importação de programação no projeto

Responde com uma planilha com as colunas que uma importação de programação lê e três linhas de exemplo (um código de tela, uma pasta de telas e uma tag), em CSV ou, com format=xlsx, em uma pasta de trabalho XLSX.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getScheduleImportTemplateInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/template'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A planilha de modelo.string (text/csv), string (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/schedule/imports/preview

Pré-visualizar importação de programação no projeto

Lê uma planilha de linhas de programação contra o projeto e responde o que o commit faria, sem gravar nada.

Cada linha indica um alvo (uma tela por id, pelo valor de um campo da tela como um código de sala, ou por nome; folder:NAME; tag:NAME; vários separados por ; ou |), o conteúdo (um nome de arquivo de mídia, ou playlist:NAME ou o id de uma playlist), um início e um fim (uma data sozinha como fim encerra esse dia) e, opcionalmente, timezone, days (Mon-Fri), uma janela diária (daily_start, daily_end), priority de 0 a 100, um nome e números de display.

Os horários são lidos no relógio próprio de cada tela; uma coluna timezone os converte de outro fuso.

Cada linha é verificada e informa seus erros por coluna: tela, pasta ou tag desconhecida ou ambígua, arquivo ausente ou ambíguo, arquivo que não consegue preencher uma tela, horários inválidos ou invertidos, um fim no passado, nenhuma informação de horário, uma tela sem fuso horário ou sem playlist padrão, duas linhas vigentes ao mesmo tempo em uma tela com a mesma prioridade, e mais níveis do que uma tela comporta (32), ou mais campanhas do que sua organização comporta em todos os seus projetos (100; cada nível compartilhado é uma delas).

Linhas que coincidem em conteúdo, horários, prioridade e nome viram um nível: uma tela é uma entrada da programação própria dessa tela; várias telas, uma pasta ou uma tag são um nível compartilhado (uma campanha), que prevalece sobre os níveis próprios de uma tela.

A resposta lista os níveis com o que um commit faz em cada um (create, update, unchanged), os níveis que uma execução anterior da mesma importação criou e que a planilha não tem mais (removals), as pilhas das telas como ficariam (calendar) e uma fingerprint para enviar ao commit. A planilha é composta por linhas JSON, CSV ou XLSX, com no máximo 5.000 linhas.

Não disponível para um chamador limitado a telas (outside_screen_scope). A importação de programação faz parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402). O modelo está disponível em todos os planos.

Autenticação
projectBearer
Corpo da solicitação
ScheduleImportRequest
ID da operação
previewScheduleImportInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
nameconsultaopcionalO nome da importação; importar de novo com o mesmo nome atualiza os níveis que ela criou (default import). Enviado com um corpo de arquivo.
fuso horárioconsultaopcionalO fuso IANA em que os horários são escritos quando uma linha não tem timezone. Sem um fuso, os horários são lidos no relógio próprio de cada tela.
origemconsultaopcionalO nome do arquivo, registrado com a importação.
code_fieldconsultaopcionalLer um código de tela somente deste campo da tela (por exemplo code ou room_id); caso contrário, um código corresponde a qualquer campo.

Campos do corpo da solicitação

CampoDescrição
nome (opcional, string)Identifica a importação; o mesmo nome atualiza os níveis que ela criou (default import). minLength: 1 maxLength: 80
source (opcional, string)O arquivo de onde vieram as linhas. maxLength: 200
fuso horário (opcional, string)O fuso IANA em que os horários são escritos quando uma linha não tem timezone.
code_field (opcional, string)Ler um código de tela somente deste campo da tela.
fingerprint (opcional, string)A fingerprint da prévia; exigida pelo commit.
rows (obrigatório, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports/preview'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A prévia. valid é false enquanto qualquer linha tiver um erro.ScheduleImportPreview (application/json)
402feature_not_in_plan — A importação de programação faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan.Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/schedule/imports

Confirmar importação de programação no projeto

Confirma uma importação já pré-visualizada: a mesma planilha e a fingerprint que a prévia respondeu. Cada nível é criado, atualizado ou removido, as programações das telas e os níveis compartilhados são gravados em uma única transação e o evento de importação schedule.imported é registrado: todas as linhas são aplicadas ou nenhuma é.

As playlists de um arquivo de que os arquivos da planilha precisam são criadas primeiro (elas não alteram nada em nenhuma tela). Uma planilha cujas linhas têm erros é recusada (schedule_import_invalid); um projeto que mudou desde a prévia, ou linhas que são lidas de outra forma, é recusado (schedule_import_stale), e o cliente pré-visualiza de novo.

Importar a mesma planilha de novo com o mesmo nome não altera nada; uma linha alterada atualiza seu nível e uma linha removida remove seu nível. Exige uma pessoa que possa aprovar no dashboard e, para um agente, uma credencial com acesso de escrita.

Um commit que atualizaria ou excluiria uma campanha reservada responde reserved_item (403) e não grava nada, a menos que seja feito por uma pessoa que pode aprovar.

Um commit que alcança uma tela protegida é recusado por inteiro com protected_target, inclusive quando a importação não tem níveis, mas remove entradas de importação de uma tela protegida ou exclui uma campanha de importação cujo público alcança uma.

Em um projeto com pastas de telas protegidas, um commit cuja prévia falha em um serviço, e não na planilha, responde dependency_unavailable e não grava nada: envie a mesma requisição de novo após uma breve espera. Um erro de validação de planilha, campanha ou tela responde como o commit responderia (invalid_request e os outros problemas acima).

Não disponível para um chamador limitado a telas. A importação de programação faz parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402). O modelo está disponível em todos os planos.

Autenticação
projectBearer
Corpo da solicitação
ScheduleImportRequest
ID da operação
commitScheduleImportInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
fingerprintconsultaopcionalA fingerprint da prévia, para um corpo CSV ou XLSX; um corpo JSON a traz como membro.
nameconsultaopcionalO nome da importação; importar de novo com o mesmo nome atualiza os níveis que ela criou (default import). Enviado com um corpo de arquivo.
fuso horárioconsultaopcionalO fuso IANA em que os horários são escritos quando uma linha não tem timezone. Sem um fuso, os horários são lidos no relógio próprio de cada tela.
origemconsultaopcionalO nome do arquivo, registrado com a importação.
code_fieldconsultaopcionalLer um código de tela somente deste campo da tela (por exemplo code ou room_id); caso contrário, um código corresponde a qualquer campo.

Campos do corpo da solicitação

CampoDescrição
nome (opcional, string)Identifica a importação; o mesmo nome atualiza os níveis que ela criou (default import). minLength: 1 maxLength: 80
source (opcional, string)O arquivo de onde vieram as linhas. maxLength: 200
fuso horário (opcional, string)O fuso IANA em que os horários são escritos quando uma linha não tem timezone.
code_field (opcional, string)Ler um código de tela somente deste campo da tela.
fingerprint (opcional, string)A fingerprint da prévia; exigida pelo commit.
rows (obrigatório, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/schedule/imports'

Respostas

StatusSignificadoCorpo e cabeçalhos
200O que o commit aplicou.ScheduleImportCommitted (application/json)
402feature_not_in_plan — A importação de programação faz parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan.Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
409

protected_target - a alteração alcança uma tela em uma pasta de telas protegida e não tem forma de revisão (docs/screen-scope.md). Remova a proteção da pasta por meio de uma revisão, faça a alteração e proteja a pasta de novo.

Problema (application/problem+json)
500dependency_unavailable - a verificação de pastas de telas protegidas não pôde ser executada; envie a mesma requisição de novo após uma breve espera.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/project/browser-links/claim

Reivindicar link do navegador no projeto

Reivindica um código de link do navegador para o projeto autenticado e cria atomicamente exatamente uma tela pairing_pending inicial mais sua concessão de provisionamento de navegador existente. A inscrição permanece apenas para o projeto. A resposta é apenas metadados seguros e nunca contém token de provisionamento, URL fragmentado, cookie ou prova.

Autenticação
projectBearer
Corpo da solicitação
BrowserLinkClaimRequest
ID da operação
claimBrowserLinkInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
código (obrigatório, string)padrão: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}-?[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{3}$"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/browser-links/claim'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Reivindicação exata de link de navegador sem fragmento segura para reprodução.BrowserLinkClaim (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
410

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
500

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/screens/pair

Parear tela no projeto

Reivindica uma sessão de pareamento Player global de frota com seis caracteres. Retentativas com a mesma Idempotency-Key retornam o resultado original durável sem consumir cota novamente.

A sessão de dashboard resgata o código no seu projeto atual com o mesmo corpo, Idempotency-Key, orçamentos e problemas, exceto que o seu not_found para um código desconhecido ou já resgatado não nomeia nenhum comando do CLI; é uma mudança de estado, então segue as regras de mutação do dashboard, uma sessão shadow sem modo de escrita de staff é recusada, e os eventos que o resgate acrescenta nomeiam o usuário do dashboard. folder_id nomeia a pasta em que a tela entra.

Um chamador limitado a telas (docs/screen-scope.md) deve enviar uma pasta dentro do seu escopo e emparelha somente como uma pessoa que pode aprovar (outside_screen_scope, approver_required).

Autenticação
projectBearer
Corpo da solicitação
Tela de emparelhamento
ID da operação
pairScreenInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
código (obrigatório, string)padrão: "^[23456789ABCDEFGHJKMNPQRSTUVWXYZ]{6}$"
label (opcional, string)minLength: 1 maxLength: 120
folder_id (opcional, string)

A pasta de telas em que a tela entra; se omitida, a tela entra na raiz do projeto. Um chamador limitado a telas deve enviar uma pasta dentro do seu escopo (caso contrário, outside_screen_scope). Uma pasta que o projeto não tem é invalid_request para um chamador do projeto inteiro.

Parte da requisição idempotente: outro folder_id sob a mesma Idempotency-Key é idempotency_mismatch. minLength: 1

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/pair'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Reivindicação durável de tela pairing_pending.PairingClaim (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
413

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
500

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md).Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/screens/provision

Provisionar tela no projeto

Provisionamento opcional de nova tela, somente pelo navegador. Sempre cria uma nova tela em pairing_pending; no máximo cinco aguardam pareamento ao mesmo tempo (quota_exceeded). Novas tentativas exatas reenviam o mesmo token de fragmento por dez minutos. O emparelhamento de seis caracteres continua sendo o padrão e o único fluxo de recuperação. folder_id nomeia a pasta em que a tela entra.

Um chamador limitado a telas (docs/screen-scope.md) deve enviar uma pasta dentro do seu escopo (caso contrário, outside_screen_scope).

Autenticação
projectBearer
Corpo da solicitação
ProvisionScreen
ID da operação
provisionScreenInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
label (opcional, string)minLength: 1 maxLength: 120
folder_id (opcional, string)A pasta de telas em que a tela entra, como em PairScreen. minLength: 1
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/provision'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Novo link de provisionamento para navegador.ScreenProvisioning (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
410

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
413

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
500

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md).Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/screens/actions

Aplicar ações na tela no projeto

Aplica uma ação a uma frota selecionada sem limite de contagem de telas. Selecione screen_ids únicos ou uma tag que corresponda a telas ativas na ordem de criação. A seleção resolvida é fixada antes de qualquer mutação, armazenada em blocos limitados e mantida por vinte e quatro horas sob Idempotency-Key.

Cada etapa usa seu caminho de mutação de tela única, preservando revisões, eventos, sinais de tempo de execução e limites por tela. Uma resposta contém uma página limitada de resultados; correspondidos, bem-sucedidos e falhos descrevem essa página. HTTP 202 inclui total, offset e next_cursor. Continue com o mesmo seletor, ação e Idempotency-Key, passando next_cursor como after.

Respeite Retry-After quando presente, incluindo uma página com zero resultados. A resposta ecoa Idempotency-Key, incluindo uma chave gerada quando o chamador a omitiu; mantenha essa chave para continuações. HTTP 200 finaliza a seleção. Páginas respondidas reproduzem exatamente, incluindo falhas por tela; etapas interrompidas reproduzem sem repetir seus efeitos.

Grandes ações são controladas contra os orçamentos existentes de 600 por minuto da organização para recarregar, toast, takeover, programações de playlist, reinicialização, tela e programações de tela; exaustão do orçamento da organização pausa a ação em vez de recusar a frota. Exaustão por tela falha apenas naquela tela.

Uma atribuição, takeover ou etapa set_playlist_schedule que vincula uma playlist com um formato a uma tela cuja parede tem outra forma falha somente para essa tela com 409 playlist_format_mismatch. Mudanças de atribuição e de tag não têm orçamento de mensagens.

Uma atribuição cuja playlist tem um src de iframe ou params de aplicativo que leem um token de tela que alguma tela da página não tem adiciona um aviso screen_fact_missing a essa página (warnings, PlaylistWarning). Falha parcial é um resultado normal. Todas as páginas e novas tentativas sob uma chave são uma única ação medida.

As requisições usam uma carga de bytes limitada; use uma tag para uma seleção maior que a carga do transporte. Um seletor ou uma ação malformada é recusada antes que qualquer tela seja tocada. selector ou action é recusado antes que qualquer tela seja tocada.

Um chamador limitado a telas (docs/screen-scope.md) seleciona por screen_ids ou por pasta, todas as telas dentro do seu escopo; um seletor de tag, uma tela fora do escopo ou uma desconhecida recusa a ação inteira (outside_screen_scope) antes que qualquer coisa seja fixada ou proposta.

Assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule que alcançam uma tela protegida viram uma revisão decidida por um segundo aprovador (202 pending_review) em todo nível de acesso; set_tags, add_tags e remove_tags em uma tela protegida são protected_target (409).

Uma ação set_playlist_schedule com uma entrada em pausa (um rascunho) é o recurso de controle de alterações da programação, que o plano Enterprise inclui; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).

Autenticação
projectBearer
Corpo da solicitação
ScreenActionRequest
ID da operação
applyScreenActionsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Screenrig-Review-Notecabeçalhoopcional

Nota opcional do proponente em uma escrita de classe revisão, enviada como UTF-8 codificado em porcentagem (o que encodeURIComponent do JavaScript escreve). O servidor decodifica a porcentagem (uma escape inválida é 400 invalid_request); a nota decodificada é texto simples, no máximo 280 caracteres após o corte, sem caracteres de controle (caso contrário 400 invalid_request).

Armazenado na revisão quando a gravação se torna uma; ignorado quando aplica ao vivo.

Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
depoisconsultaopcionalnext_cursor da página de resultado anterior. Reutilize o Idempotency-Key original e o corpo da requisição.

Campos do corpo da solicitação

CampoDescrição
selector (obrigatório, ScreenActionSelector)
ação (obrigatório, ScreenAction)Uma ação de frota, discriminada por tipo. Cada membro carrega apenas seus próprios parâmetros; um membro de outro tipo é um campo desconhecido e invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/screens/actions'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultados por tela. Sucesso parcial é uma resposta normal.ScreenActionResult (application/json); cabeçalhos: Idempotency-Key, Cache-Control, RateLimit-Policy, RateLimit
202

Restam mais telas (continue com next_cursor e a mesma Idempotency-Key e o mesmo corpo, respeitando Retry-After), ou, com status pending_review, a ação virou uma revisão sob acesso Propor (docs/reviews.md), ou em qualquer nível de acesso porque alcança uma tela em uma pasta de telas protegida (docs/screen-scope.md).

Só assign, takeover, takeover_clear, set_playlist_schedule e clear_playlist_schedule viram revisões; toda outra ação é insufficient_access para Propose.

inline (application/json); cabeçalhos: Idempotency-Key, Retry-After, Cache-Control, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
402

feature_not_in_plan — set_reboot_schedule com enabled true (reinícios programados) e set_playlist_schedule com um bloqueio de displays (video walls) fazem parte do Plus; as ações de limpeza e os comandos avulsos estão disponíveis. payment_required — o projeto não tem crédito restante. O problema nomeia o recurso, o plano do projeto e required_plan.

Problema (application/problem+json)
403insufficient_access, outside_screen_scope quando um chamador limitado a telas seleciona fora do seu escopo, ou approver_required para um membro limitado a telas que não pode aprovar.Problema (application/problem+json)
409

playlist_format_mismatch e os outros conflitos da ação, ou protected_target quando set_tags, add_tags, remove_tags, toast, display, display_clear, set_display_schedule ou clear_display_schedule alcança uma tela em uma pasta de telas protegida.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/tab-shares

Iniciar compartilhamento de abas no projeto

Exibe abas do navegador em telas do projeto indicado; solicitação, resposta, acesso e limites são os de POST /api/tab-shares.

Autenticação
projectBearer
Corpo da solicitação
TabShareWrite
ID da operação
startTabShareInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
screen_ids (opcional, array)Telas por id. Duplicatas são unificadas.
folder_ids (opcional, array)Pastas de telas; cada uma inclui todas as subpastas.
tags (opcional, array)Uma tela com qualquer uma das tags.
tabs (obrigatório, array)
cookies (opcional, array)Cookies do remetente para as páginas, no máximo 64 KiB codificados. Secretos; veja POST /api/tab-shares.
reload_s (opcional, integer)0 (nunca, o padrão) ou de 60 a 86400: frequência de recarga do iframe de cada página.
until (opcional, string)Estritamente no futuro e no máximo 24 horas à frente; 24 horas a partir de agora quando omitido. Término do controle em cada destino e expiração da playlist temporária. format: "date-time"
qr (opcional, boolean)Quando true, cada página exibe um código QR do seu endereço no canto inferior direito. Padrão false.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/tab-shares'

Respostas

StatusSignificadoCorpo e cabeçalhos
200O compartilhamento. Pelo menos uma tela foi assumida.TabShare (application/json); cabeçalhos: RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
403outside_screen_scope como em OutsideScreenScope, ou approver_required - um membro limitado a telas que não pode aprovar revisões não altera o que uma tela reproduz nem quando (docs/screen-scope.md).Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/campaigns

Listar campanhas no projeto

Lista as campanhas do projeto em ordem de precedência (no máximo 100), a ordem em que a resolução as lê. reserved está presente em toda campanha.

Um chamador limitado a telas (docs/screen-scope.md) vê todas as campanhas, com editable true somente quando todo o público está dentro do seu escopo (uma folha de tag e a regra de todas as telas na raiz nunca estão; uma regra all precisa de um filho contido, uma regra any de todos os filhos) e o chamador pode alterar o que é reproduzido.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listCampaignsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As campanhas do projeto.CampaignList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/campaigns

Criar campanha no projeto

createCampaign para o projeto nomeado no caminho. reserved true reserva a campanha, e somente uma pessoa que pode aprovar o define (reserved_item para um agente, um cliente de serviço ou qualquer outro), acrescentando campaign.reserved_changed.

Um chamador limitado a telas (docs/screen-scope.md) só cria uma campanha para um público dentro do seu escopo (folhas folder e screen_id; nenhuma tag, nem todas as telas), caso contrário outside_screen_scope, e somente como uma pessoa que pode aprovar (approver_required).

Uma campanha cujo público alcança uma tela protegida é uma revisão protected_change decidida por um segundo aprovador (202 pending_review) em todo nível de acesso. reserved true é o recurso de pastas protegidas e paused true em uma nova campanha (um rascunho) é o recurso de controle de alterações da programação, e ambos fazem parte do plano Enterprise; um projeto cujo plano não o inclui é recusado com feature_not_in_plan (402).

Autenticação
projectBearer
Corpo da solicitação
CampaignWrite
ID da operação
createCampaignInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)minLength: 1 maxLength: 120
playlist_id (obrigatório, string)minLength: 1
audience (obrigatório, CampaignAudience)

Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir).

As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra.

from (opcional, string)padrão: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$"
until (opcional, string)Posterior a from. padrão: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T([01][0-9]|2[0-3]):[0-5][0-9]$"
windows (opcional, array)
monthly (opcional, array)
dates (opcional, array)
except (opcional, array)Datas civis, armazenadas em ordem crescente e uma vez cada. Uma exceção remove todas as ocorrências que sua data inicia, inclusive as caudas noturnas; ela fica entre from e until.
data (opcional, PageDataCondition)

Um predicado card-data, avaliado antes do tempo civil. Dados faltantes ou expirados nunca correspondem. A página também respeita seus limites de tempo ordinários. Requer capacidade host page.conditions; hosts mais antigos recebem a página desativada.

interaction (opcional, LevelInteraction)

O nível vigora enquanto alguém usa a tela: de um toque, clique ou tecla até passarem idle_s segundos sem entrada. Uso típico: uma página interativa acima de um loop de atração. idle_s é armazenado e retornado (60 quando omitido).

covers (opcional, string)

Onde o nível é reproduzido: a página inteira (default, armazenado ausente) ou main, a própria página, para uma playlist comum; header, footer ou side, uma faixa desenhada sobre a página, apenas para uma playlist de região dessa região (PlaylistRegionFormat). Uma playlist de região é recusada com full ou main, e uma faixa exige uma playlist de região organizada em um display de destino.

Permitidos: "full", "main", "header", "footer", "side"

displays (opcional, array)As saídas de um video wall em que ele é reproduzido; ausente reproduz em todas as saídas.
start (opcional, string)on_time troca na borda, interrompendo o item atual; next_item (padrão, armazenado ausente) espera o fim dele. Permitidos: "next_item", "on_time"
priority (opcional, integer)padrão: 0 mínimo: 0 máximo: 100
paused (opcional, boolean)padrão: false
reserved (opcional, boolean)Somente uma pessoa que pode aprovar reserva uma campanha (caso contrário, reserved_item). default: false
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/campaigns'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada.Campaign (application/json); cabeçalhos: ETag
202

A escrita virou uma revisão e aguarda a aprovação de uma pessoa (docs/reviews.md), sob acesso Propor, ou em qualquer nível de acesso quando alcança uma tela em uma pasta de telas protegida, em que um segundo aprovador a decide (docs/screen-scope.md). Uma pessoa aprova, rejeita ou pede alterações no dashboard em review.url.

Uma repetição com Idempotency-Key responde com o mesmo corpo.

ReviewPending (application/json)
402

feature_not_in_plan — As pastas protegidas e o controle de alterações da programação fazem parte do plano Enterprise; o problema nomeia o recurso, o plano em que a conta está e required_plan. Uma campanha que bloqueia uma playlist no display 2 ou além de um video wall (displays) faz parte do Plus. O problema nomeia o recurso, o plano do projeto e required_plan.

Problema (application/problem+json)
403

outside_screen_scope ou approver_required como em ScreenScopePlays, ou reserved_item - uma campanha reservada só é alterada, pausada, excluída ou deixa de ser reservada por uma pessoa que pode aprovar revisões, nunca por um agente ou cliente de serviço (docs/screen-scope.md).

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/connections

Listar conexões de um projeto

Lista as conexões do projeto, as mais recentes primeiro, no máximo 200 por página; devolva next_cursor como after para a próxima. Um segredo, uma chave ou um token de atualização nunca é devolvido: secret mostra se há um guardado e uma dica que não é secreta. Uma leitura nunca traz um link de consentimento.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listConnectionsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
depoisconsultaopcionalnext_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de conexões.ConnectionList (application/json); cabeçalhos: Cache-Control
400invalid_request, inclusive um cursor malformado.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/connections

Criar uma conexão em um projeto

Cria neste projeto uma conexão com a Microsoft ou o Google: modo own_app com as credenciais próprias do cliente, ou modo screenrig_app, que responde consent_url, um link de uso único para a pessoa que o conclui (veja createConnection). Adiciona connection.created. Uma nova tentativa exata com a mesma Idempotency-Key devolve a mesma conexão.

Autenticação
projectBearer
Corpo da solicitação
ConnectionWrite
ID da operação
createConnectionInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
provider (obrigatório, string)Permitido: "microsoft", "google"
mode (obrigatório, string)Permitido: "own_app", "screenrig_app"
nome (obrigatório, string)minLength: 1 maxLength: 80
config (opcional, ConnectionConfigWrite)Microsoft, modo own_app: os dois membros. Não aceito para uma conexão do Google nem para o modo screenrig_app.
secret (opcional, string)

Modo own_app. Microsoft: o valor de um dos segredos de cliente do aplicativo (não o ID; no máximo 1024 caracteres), com config.tenant_id e config.client_id. Google: o arquivo de chave JSON da conta de serviço, inteiro (no máximo 16384 bytes). Selado na chegada e nunca devolvido; a CLI o lê de um arquivo ou da entrada padrão, nunca de um argumento.

Não aceito no modo screenrig_app. minLength: 1 maxLength: 16384

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada. Uma conexão no modo screenrig_app traz consent_url e consent_expires_at.ConnectionConsent (application/json); cabeçalhos: ETag, Location, Cache-Control
400invalid_request, nomeando o campo que não é válido.Problema (application/problem+json)
409connection_app_not_configured, connection_limit_reached ou idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/bi-connections

Listar conexões BI no projeto

Lista as conexões de BI do projeto, da mais antiga para a mais recente, 200 por página; passe next_cursor de volta como cursor para a próxima. Um segredo nunca é retornado: secret mostra se está definido e seus últimos 4 caracteres.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listBIConnectionsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
cursorconsultaopcionalnext_cursor da página anterior.
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de conexões.BIConnectionList (application/json); cabeçalhos: Cache-Control
400invalid_request, inclusive um cursor malformado.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/bi-connections

Criar conexão BI no projeto

Adiciona uma conexão a um sistema de BI que o projeto possui. Para o Grafana: o endereço dele (http ou https em um host público, com prefixo de caminho opcional) e um token de conta de serviço com a função Viewer. O token é selado e nunca é retornado.

Grafana renders dashboards for screens through its Image Renderer plugin or remote rendering service, so the customer installs one; run POST /api/bi-connections/{id}/test to check. For Power BI (kind powerbi): config.tenant_id and config.client_id of a Microsoft Entra app registration and its client secret value as secret.

Um administrador do Power BI deve ativar as configurações de desenvolvedor Embed content in apps e Service principals can call Fabric public APIs para o app (portal de administração, configurações do locatário), o app deve ser Membro ou Administrador de cada workspace que exibe, e os relatórios precisam de uma capacidade Embedded, Fabric ou Premium em produção.

For Tableau (kind tableau): config.url (the https address of Tableau Server, or of your Tableau Cloud pod such as https://10ay.online.tableau.com), config.site (the site content URL, empty for the default site), config.client_id and config.secret_id of a connected app with direct trust, config.username (the Tableau user the screens views are shown as) and the secret value as secret.

Adicione embed_origin da resposta à lista de domínios permitidos do aplicativo conectado e ative o segredo. Quem tem um ticket de tela pode incorporar qualquer visualização que esse usuário possa ver, então use um usuário que veja apenas os dashboards das telas. Tableau Cloud, ou Tableau Server 2023.3 ou posterior.

Para uma página web com login (kind web): a conta de serviço de um site que mostra o dashboard atrás de um login. config.login_mode é auto (config.login_url, config.username e a senha como secret: o renderizador abre a página de login e preenche o formulário), steps (config.login_url e config.steps, um script de passos goto, fill, click, press, wait_for e wait_ms cujos valores podem conter {{username}}, {{password}} e {{otp}}) ou none (sem login: a conexão mostra páginas com os cookies que você dá a ela). totp_secret é a chave base32, ou o endereço otpauth://, do aplicativo autenticador da conta: o servidor calcula o código de uso único (RFC 6238) e envia ao renderizador apenas o código. cookies é um conjunto de cookies exportado de um navegador logado, para um site cujo login não pode ser automatizado (login único aprovado no celular, uma verificação de dispositivo); o servidor guarda o conjunto e o renova com os cookies que cada captura devolve, então um login é raro.

A senha, a semente e os cookies são selados e nunca devolvidos. Use uma conta de serviço somente leitura. A senha é digitada apenas em config.login_url e nos passos goto, então movê-los para outra origem exige secret de novo. Depois de cinco logins recusados seguidos, a conexão para de fazer login até que suas credenciais mudem.

Um servidor sem renderizador de páginas responde bi_web_unavailable. Adiciona bi_connection.created. Uma nova tentativa exata com a mesma Idempotency-Key devolve esta mesma resposta.

Autenticação
projectBearer
Corpo da solicitação
BIConnectionWrite
ID da operação
createBIConnectionInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)minLength: 1 maxLength: 80
kind (obrigatório, string)Permitido: "grafana", "powerbi", "tableau", "web"
config (obrigatório, BIConnectionConfig)
secret (opcional, string)

Obrigatório exceto para web, e para uma conexão do Power BI que nomeia connection_id. O token da conta de serviço (Grafana), o valor do segredo de cliente do aplicativo (Power BI), o valor do segredo do aplicativo conectado (Tableau) ou a senha da conta de serviço (web: exigida por login_mode auto, não usada por none).

Selado na chegada; a CLI o lê de um arquivo ou da entrada padrão, nunca de um argumento. minLength: 1 maxLength: 4096

totp_secret (opcional, string)

Web: a chave base32 do aplicativo autenticador da conta (de 16 a 128 caracteres, espaços permitidos), ou o endereço otpauth://totp dela, que pode definir o algoritmo (SHA1, SHA256, SHA512), os dígitos (6 a 8) e o período. Selado; apenas o código calculado sai do servidor. maxLength: 1024

cookies (opcional, array)Web: um conjunto de cookies exportado de um navegador logado. Selado; renovado a cada captura.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-connections'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada.BIConnection (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request, inclusive um endereço que não é um host público da Internet.Problema (application/problem+json)
402feature_not_in_plan — o plano do projeto não inclui os dashboards de BI; required_plan nomeia o plano que os inclui.Problema (application/problem+json)
409idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/bi-views

Listar visualizações BI no projeto

Lists the project's BI views, oldest first, 200 to a page; pass next_cursor back as cursor for the next. Each carries embed_url, the address an iframe primitive shows (content_fit fill); it is null where this server has no embed host.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listBIViewsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
cursorconsultaopcionalnext_cursor da página anterior.
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de visualizações.BIViewList (application/json); cabeçalhos: Cache-Control
400invalid_request, inclusive um cursor malformado.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/bi-views

Criar visualização BI no projeto

Adiciona uma visualização de um painel do Grafana da conexão ou de um único painel interno dele (url: um endereço /d/{uid}/... no host da conexão, ou target), ou de um link de painel público do Grafana (kind grafana e target.public_url, sem conexão).

Put the answer's embed_url in an iframe primitive: the server renders the dashboard as a PNG through Grafana's /render API, refreshed every refresh_s (30 to 86400, default 300) and shared by every screen of the same size; the screen never talks to Grafana. A public dashboard plays live from Grafana, which must allow embedding.

A página de incorporação mostra apenas um ticket que o manifesto da tela traz, então uma visualização só é reproduzida nas telas do próprio projeto.

For Power BI (kind powerbi): a report of a workspace the connection's app is a member of (url: an app.powerbi.com /groups/{workspace}/reports/{report} address, or target with workspace_id and report_id), with pages to show and rotate_s to rotate through them (pages listing two or more, or rotate_all_pages, need rotate_s of 10 to 3600; one report page needs none), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).

The page asks the server for a short-lived view-only embed token (GenerateToken, App owns data) and renews it before it expires; the screen never holds the client secret. A Power BI Publish to web link is a view without a connection (kind powerbi, target.public_url https://app.powerbi.com/view?r=...), framed as it is.

For Tableau (kind tableau): a view of the connection site (url: an address copied from Tableau, such as https://HOST/t/SITE/views/WORKBOOK/VIEW or Tableau Cloud https://HOST/#/site/SITE/views/WORKBOOK/VIEW, or Workbook/View; or target.view), optionally with target.rotate_sheets and rotate_s of 10 to 3600 to turn the workbook published sheets (rotate_s and rotate_sheets go together; rotate_sheets may be given as the whole target beside url), and refresh_s of 0 (no refresh) or 60 to 86400 (default 300).

The page asks the server for a five minute JWT with only the embed scope, signed with the connected app secret, and builds the Embedding API v3 tableau-viz from the Tableau host; the screen never holds the secret.

Uma visualização do Tableau Public é uma visualização sem conexão (kind tableau, target.public_url, reconstruída como https://public.tableau.com/views/WORKBOOK/VIEW) e também aceita rotate_sheets. Para uma página web (kind web): uma página do site da conexão web (url: um endereço https em um host público, sem target).

O navegador na borda a abre já logado, espera o elemento wait_for quando definido e wait_ms milissegundos (até 10000), e desenha clip, um seletor CSS, quando definido, ou então a página inteira.

A imagem é redesenhada a cada refresh_s (60 a 86400, 300 por padrão) e compartilhada por todas as telas do mesmo tamanho, e só enquanto uma tela mostra a visualização; quando uma captura falha, a última imagem continua na tela. Defina wait_for como um elemento que só existe quando a página está logada, para que uma página de login nunca seja mostrada. Adiciona bi_view.created.

Autenticação
projectBearer
Corpo da solicitação
BIViewWrite
ID da operação
createBIViewInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
connection_id (opcional, string)
kind (opcional, string)Obrigatório sem connection_id; caso contrário deve corresponder à conexão. Permitido: "grafana", "powerbi", "tableau", "web"
nome (obrigatório, string)minLength: 1 maxLength: 80
url (opcional, string)

Um endereço de dashboard /d/{uid}/... no host da conexão. O servidor lê dele orgId, viewPanel (N ou panel-N) ou panelId, from, to, var-* e theme. Tableau: um endereço de visualização no host da conexão (/views/W/V, /t/SITE/views/W/V, #/site/SITE/views/W/V) ou Workbook/View. Web: o endereço https da página em um host público. maxLength: 2048

target (opcional, BITarget)

O que uma visualização mostra. Grafana com uma conexão: dashboard_uid (e opcionalmente um painel). Power BI com uma conexão: workspace_id e report_id, com pages ou rotate_all_pages. Tableau com uma conexão: view (Workbook/View), com rotate_sheets. Web com uma conexão: url. Sem uma conexão: apenas public_url (e rotate_sheets para o Tableau).

refresh_s (opcional, inteiro)Grafana 30 a 86400; Power BI e Tableau 0 ou 60 a 86400; web 60 a 86400. default: 300 minimum: 0 maximum: 86400
rotate_s (opcional, inteiro)Power BI e Tableau: 0 ou de 10 a 3600; obrigatório para um destino que alterna páginas ou planilhas. default: 0 minimum: 0 maximum: 3600
fit (opcional, string)Permitidos: "contain", "cover", "fill" padrão: "contain"
wait_for (opcional, string)Web: um seletor CSS de um elemento que aparece quando a página está pronta, e só quando está logada. maxLength: 512
wait_ms (opcional, inteiro)Web: os milissegundos a esperar depois que a página está pronta. minimum: 0 maximum: 10000
clip (opcional, string)Web: um seletor CSS da parte da página a desenhar. maxLength: 512
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/bi-views'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada.BIView (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request, inclusive uma url que não é um endereço de painel da conexão.Problema (application/problem+json)
402feature_not_in_plan — o plano do projeto não inclui os dashboards de BI; required_plan nomeia o plano que os inclui.Problema (application/problem+json)
404not_found: a conexão não está neste projeto.Problema (application/problem+json)
409idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/triggers

Listar gatilhos no projeto

Lista os gatilhos de alerta CAP do projeto, do mais antigo para o mais recente (no máximo 20), cada um com sua URL de ingestão, nome de usuário e último alerta. A senha nunca é retornada aqui.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listTriggersInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/triggers'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Os gatilhos do projeto.TriggerList (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/triggers

Criar gatilho no projeto

Cria um gatilho de alerta CAP: uma URL de entrada para a qual um sistema de notificação de emergência (Everbridge, Rave, Alertus, relés IPAWS e outros emissores CAP 1.2) envia alertas, com credenciais HTTP Basic.

A resposta é o único lugar onde a senha aparece (com a resposta de rotação): armazene-a no sistema de envio imediatamente. target é uma tag (toda tela ativa com ela quando o alerta chega) ou até 500 screen_ids.

Um alerta assume todas as telas-alvo com uma playlist padrão até o <expires> do alerta, ou para default_for_seconds (60 a 604800, padrão 3600); veja POST /api/triggers/{id}/cap. Uma organização tem no máximo 20 gatilhos em todos os seus projetos (trigger_limit_reached). Acrescenta trigger.created.

Uma nova tentativa exata com a mesma Idempotency-Key retorna esta mesma resposta, senha incluída, por vinte e quatro horas. Um gatilho cujo seletor alcança uma tela protegida é protected_target (409), e uma falha na leitura da proteção da tela é dependency_unavailable (500, repita a mesma requisição); um gatilho não está disponível para um chamador limitado a telas.

Autenticação
projectBearer
Corpo da solicitação
TriggerWrite
ID da operação
createTriggerInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
kind (opcional, string)Permitidos: "cap", "overlay" padrão: "cap"
label (obrigatório, string)minLength: 1 maxLength: 80
target (obrigatório, TriggerTarget)Exatamente um entre tag e screen_ids.
default_for_seconds (opcional, inteiro)

Por quanto tempo um alerta sem <expires> mantém as telas: de 60 a 604800, padrão 3600, em um gatilho CAP; por quanto tempo um envio sem duration mantém seu alerta: de 10 a 604800, padrão 600, em um gatilho de sobreposição. minimum: 10 maximum: 604800

pull (opcional, CapPull)

Fontes CAP que a plataforma lê para o gatilho, com a localização das telas-alvo e quais alertas contam: os parâmetros de um posicionamento de cartão cap-alert (docs/feeds.md "CAP alerts"). Cada URL de fonte é buscada uma vez por minuto para cada gatilho e posicionamento que a nomeia.

Sem fontes, os feeds públicos da plataforma que cobrem a localização são lidos (NWS, Canada NAAD e MeteoAlarm para uma localização com códigos de área). O alerta correspondente mais severo assume as telas-alvo exatamente como uma mensagem enviada faria; quando as fontes não mostram nenhum (um cancelamento ou expiração), um alerta puxado termina.

Uma fonte obsoleta ou com falha nunca termina um alerta. location é obrigatório a menos que fontes sejam fornecidas.

overlay (opcional, TriggerOverlayWrite)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/triggers'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criado, com sua URL, nome de usuário e senha.TriggerWithPassword (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request, incluindo uma tag malformada ou tanto tag quanto screen_ids.Problema (application/problem+json)
409trigger_limit_reached, idempotency_mismatch, ou protected_target quando o seletor alcança uma tela em uma pasta de telas protegida.Problema (application/problem+json)
500dependency_unavailable - a verificação de pastas de telas protegidas não pôde ser executada; envie a mesma requisição de novo após uma breve espera.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/events

Listar eventos no projeto

Lista eventos duráveis do projeto em ordem crescente por sequência.

Paginação é contígua: passe o next_cursor retornado como after para continuar exatamente onde a página parou. next_cursor é o cursor do último evento retornado enquanto eventos mais novos já existem, e nulo no fim do histórico. limit padrão é 50 e aceita 1-200; valor fora desse intervalo é recusado com invalid_request e um membro errors[] nomeando limit.

Paginação por offset não é suportada. source=log lista o log do Player em vez disso: os relatórios de condição enviados pelos Players (runtime.reported) em ordem crescente pelo tempo de recebimento, filtrados por screen_id e severidade em uma janela de até (por padrão as últimas 24 horas, no máximo 31 dias).

Seus cursores são opacos: lg1_ ou ev1_ conforme onde o servidor mantém o log do Player, então devolva o que uma página retornou; um cursor do outro tipo é recusado com invalid_request nomeando o campo. Registros do log do Player não têm sequência, não estão em GET /stream/project e não são entregues a webhooks.

Um registro é reconhecido quando a fila de log do Player o aceita e é mantido para a retenção de eventos do projeto. Uma consulta com o último cursor e a janela padrão segue o log. Registros de log do Player não estão na lista padrão (source=project). from e to são recusados com invalid_request a menos que source seja log.

A lista do projeto aceita screen_id, playlist_id e application_id para ler os eventos de uma tela, playlist ou aplicativo, todos limitados ao projeto da credencial (um id nomeia quais eventos ler, nunca de quem): screen_id mantém os eventos cujo recurso é essa tela; playlist_id os eventos cujo recurso é essa playlist mais os eventos que a nomeiam como details.playlist_id (uma tela que a usa); application_id os eventos cujo recurso é esse aplicativo mais os que têm esse id como application_id (seus lançamentos e entradas chave/valor).

Um valor que não é um id do seu tipo é recusado com invalid_request nomeando o campo; playlist_id e application_id são recusados com source=log, cujos registros pertencem só a uma tela.

Ambas as fontes usam resource_id, tipo e severidade (mínimo), combinados entre si, com os filtros de ID e paginação; um registro de log do Player é um registro runtime.reported cujo recurso é sua tela, então um resource_id que não seja essa tela ou um tipo que exclua runtime.reported retorna uma página vazia. before (ou order=desc) mostra os mais recentes primeiro: next_cursor é o cursor do item mais antigo retornado e passado de volta como before para continuar para itens mais antigos.

Sem from, uma página source=log mais recente primeiro alcança além das 24 horas padrão até o registro mais antigo que a retenção de eventos do projeto mantém, no máximo 31 dias abaixo da borda superior da página por requisição. Uma página source=log mais recente primeiro pode conter menos que o limite de registros, até nenhum, com um next_cursor; null ainda a encerra, no fim do log retido.

Um chamador limitado a telas (docs/screen-scope.md) lê um feed filtrado: eventos de telas dentro do seu escopo, das pastas de telas que ele pode ver (as suas próprias, as pastas acima e as de dentro; screen.moved somente quando o destino está dentro do seu escopo), de campanhas, playlists, mídia, aplicativos e cartões, e as revisões playlist_change.

Todo outro evento fica de fora, então uma página pode conter menos eventos que limit, até nenhum, com um next_cursor; continue paginando com ele. source=log precisa de um screen_id dentro do seu escopo. Eventos sobre o próprio projeto não são enviados.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listEventsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
depoisconsultaopcional

Um cursor de uma resposta anterior: ev1_ para eventos de projeto (e os fluxos de eventos). O log do Player (source=log) pagina com cursores lg1_ ou ev1_ pelo local onde o servidor o mantém; trate-os como opacos e devolva o que uma página retornou. Um cursor de outro tipo é recusado com invalid_request.

beforeconsultaopcional

Páginas mais recentes primeiro, estritamente mais antigas que este cursor: um next_cursor de uma página mais recente primeiro, ou qualquer cursor de item (ev1_ para eventos de projeto; para source=log o cursor opaco que seus itens carregam). Vazio ou ausente com order=desc começa no item mais recente.

ordemconsultaopcionalasc páginas mais antigas primeiro com after; desc páginas mais novas primeiro com before. before implica desc; order=asc com before é recusado.
limiteconsultaopcionalTamanho da página. Valor fora de 1-200 é recusado com invalid_request e um membro errors[] cujo campo é limit.
origemconsultaopcionalprojeto lista os eventos sequenciados do projeto. log lista o log do Player: relatórios de condição do Player (runtime.reported), em ordem crescente pelo tempo de recebimento.
resource_idconsultaopcionalSó itens cujo resource.id é este id (uma tela, playlist, mídia, webhook, agente ou id de aplicativo). Com source=log é a tela do registro.
tipoconsultaopcionalUm tipo de evento exato como playlist.updated, ou um prefixo de família terminando em ponto como playlist. para todo tipo playlist.*.
screen_idconsultaopcionalSó os eventos desta tela: com source=project aqueles cujo recurso é a tela, com source=log seus registros de log do Player. Outro tipo de id é recusado com invalid_request.
playlist_idconsultaopcionalCom source=project, apenas os eventos desta playlist: aqueles cujo recurso é a playlist e aqueles que a nomeiam como details.playlist_id. Recusado com source=log.
application_idconsultaopcional

Com source=project, apenas os eventos deste aplicativo: aqueles cujo recurso é o aplicativo e aqueles cujo recurso o carrega como application_id (suas versões e entradas de chave/valor). Recusado com source=log.

gravidadeconsultaopcionalGravidade mínima: info é todo item, warning mantém avisos e erros, error mantém erros. Ambas as fontes.
deconsultaopcionalCom source=log, o início da janela (inclusivo). Padrão é 24 horas antes de to; uma página mais recente primeiro sem from alcança a retenção de eventos do projeto em vez disso.
atéconsultaopcionalCom source=log, o fim da janela (exclusivo). Padrão é agora. A janela tem no máximo 31 dias.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/events'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Eventos duráveis (source=project) ou registros de log do Player (source=log)EventList (application/json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/project/capabilities

Obter capacidades do projeto no projeto

O plano do projeto chamador, flags independentes de anunciante/telas com sua revisão, o conjunto derivado de capacidades efetivas, os recursos do plano que ele tem (plan_features) e seus limites (limits). Nunca reflete uma reivindicação do cliente; um plano desconhecido falha fechado como proibido.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getProjectCapabilitiesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/project/capabilities'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Capacidades do projeto.ProjectCapabilities (application/json); cabeçalhos: Cache-Control
403proibido - o plano do projeto não está no catálogo.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/billing/balance

Obter saldo de cobrança no projeto

O snapshot do saldo consciente da fonte do projeto chamador. Todos os valores em milicréditos são strings decimais canônicas. É um snapshot, não autoridade para pagar; rails_available é falso enquanto cartão, imposto e rail de saque estão indisponíveis.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getBillingBalanceInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/balance'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Instantâneo do saldo.Saldo de cobrança (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/billing/statement

Obter extrato de cobrança no projeto

Paginação cursor estável sobre entradas de diário imutáveis postadas para o projeto chamador. Holds não são entradas postadas. Correções linkam ao evento original em vez de reescrevê-lo. Não há mutação arbitrária de concessão ou pagamento nesta superfície.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getBillingStatementInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
cursorconsultaopcional
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/statement'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Página de extrato.Extrato de cobrança (application/json)
400invalid_request - limite fora do intervalo.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/billing/usage

Obter uso de cobrança no projeto

O uso do projeto chamador em um mês UTC, com os bytes servidos e recebidos (nunca cobrados), o armazenamento cobrado acima do armazenamento gratuito do plano do pagador (allowance.storage_bytes) e as solicitações de API, eventos de stream do projeto faturados e tentativas de entrega de webhook contados contra os 10.000 gratuitos por mês. Um projeto que paga por si mesmo lê seu próprio pool.

Um projeto que outro pagador paga compartilha o pool desse pagador com os outros projetos do pagador; ele lê sua própria parte, e payer nomeia o pagador. O total do pool do pagador permanece nas leituras de cobrança do pagador.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getBillingUsageInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
períodoconsultaopcionalMês UTC no formato YYYY-MM; padrão para o mês atual.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/billing/usage'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uso do projeto.ProjectBillingUsage (application/json); cabeçalhos: Cache-Control
400invalid_request - período não é um mês UTC no formato YYYY-MM.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/network

Obter rede publicitária no projeto

A rede do vendedor que está ligando, incluindo a taxa de serviço resolvida do ScreenRig. Vendedores não podem alterar essa taxa.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getAdvertisingNetworkInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Rede.AdvertisingNetwork (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/advertising/network

Criar rede de anúncios no projeto

Cria a única rede do vendedor que chama, se ausente. Requer telas=true. Idempotente; repetir retorna a mesma rede.

Autenticação
projectBearer
Corpo da solicitação
AdvertisingNetworkCreate
ID da operação
createAdvertisingNetworkInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)maxLength: 120
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Rede.AdvertisingNetwork (application/json)
403proibido - o projeto não tem capacidade de tela ou possui um plano desconhecido.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/advertising/network/rate

Definir taxa padrão de publicidade no projeto

Define a taxa padrão do projeto do vendedor por 15 segundos de reprodução concluída. Uma alteração que altera a taxa efetiva de uma campanha aceita pausa toda a campanha com price_change_pending; uma alteração mascarada ou sem efeito não. If-Match carrega a revisão da rede.

Autenticação
projectBearer
Corpo da solicitação
AdvertisingRate
ID da operação
setAdvertisingDefaultRateInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.

Campos do corpo da solicitação

CampoDescrição
rate_mcr_per_15s (obrigatório, McrString)Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/network/rate'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Rede atualizada.AdvertisingNetwork (application/json)
412revision_conflict - If-Match está desatualizado.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/inventory

Listar inventário publicitário no projeto

O inventário optado pelo vendedor que está ligando.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingInventoryInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/inventory'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Inventário.AdvertisingInventoryList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/slots

Listar espaços publicitários no projeto

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingSlotsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Slots.AdvertisingSlotList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/advertising/slots

Criar espaço publicitário no projeto

Cria um slot de vendedor reutilizável. Imagens têm de 5 a 30 segundos e vídeos no máximo o teto da plataforma de 120 segundos. Anúncios estão sempre sem som.

Autenticação
projectBearer
Corpo da solicitação
AdvertisingSlotWrite
ID da operação
createAdvertisingSlotInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)minLength: 1 maxLength: 120
habilitado (opcional, boolean)
accepted_media (obrigatório, array)
max_image_duration_ms (obrigatório, inteiro)mínimo: 5000 máximo: 30000
max_video_duration_ms (obrigatório, inteiro)mínimo: 1000 máximo: 120000
rate_override_mcr_per_15s (opcional, inline)
vast_tag_url (opcional, embutido)

A própria tag de anúncio VAST 2-4 do vendedor, tentada quando nenhuma campanha convidada preenche essa vaga nas telas do vendedor. HTTPS na porta 443 ou 8443 para um host público apenas.

O backend busca, segue até cinco Wrappers, ingere o MediaFile progressivo MP4 ou WebM escolhido na mídia do projeto e dispara Impression, creativeView e start em início aceito, complete em conclusão aceita e Error em falha. Quartile trackers não são disparados.

Macros [CACHEBUSTING], [TIMESTAMP], [SCREENRIG_SCREEN_ID], [SCREENRIG_SLOT_ID] e [SCREENRIG_PAGE_ID] são expandidos. O slot deve aceitar vídeo. Nulo, ausente ou vazio limpa a tag. Compradores nunca veem isso.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/slots'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Slotslot.AdvertisingSlot (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/memberships

Listar associações publicitárias no projeto

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingMembershipsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/memberships'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Associações.AdvertisingMembershipList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/networks

Listar redes publicitárias associadas no projeto

Redes às quais o anunciante chamador pertence atualmente, com o escopo e política de revisão concedidos. Contagem de telas não é contagem garantida de impressões.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingJoinedNetworksInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/networks'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Redes associadas.AdvertisingJoinedNetworkList (application/json)
403proibido - o projeto não tem a flag de anunciante.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/creatives

Listar criativos publicitários no projeto

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingCreativesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Criativos.AdvertisingCreativeList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/advertising/creatives

Criar criativo publicitário no projeto

Vincula uma revisão de mídia pronta e própria a um criativo imutável. Não copia bytes, não reenvia nem recarrega geração. Mídia desconhecida ou não pronta é rejeitada.

Autenticação
projectBearer
Corpo da solicitação
AdvertisingCreativeCreate
ID da operação
createAdvertisingCreativeInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
media_id (obrigatório, string)
copy (opcional, string)maxLength: 500
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/creatives'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criativo.AdvertisingCreative (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/campaigns

Listar campanhas publicitárias no projeto

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingCampaignsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Campanhas.AdvertisingCampaignList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/advertising/campaigns

Criar campanha publicitária no projeto

Cria uma campanha rascunho. Rascunhos não possuem dinheiro, não reservam nada e não autorizam entrega. A ativação requer uma cotação explicitamente aceita.

Autenticação
projectBearer
Corpo da solicitação
AdvertisingCampaignDraft
ID da operação
createAdvertisingCampaignInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)minLength: 1 maxLength: 120
category (opcional, AdvertisingCategory)

A categoria do anunciante. Dois anúncios da mesma categoria nunca são reproduzidos no mesmo intervalo de anúncios em uma tela; um anúncio sem categoria nunca é separado.

Permitidos: "alcohol", "apparel", "automotive", "beauty", "cannabis", "consumer_electronics", "education", "entertainment", "financial_services", "food_and_beverage", "gambling", "government", "grocery", "health_and_pharma", "home_and_garden", "insurance", "jobs", "legal", "media", "political", "quick_service_restaurants", "real_estate", "restaurants", "retail", "sports_and_fitness", "technology", "telecom", "tobacco_and_vaping", "travel", "utilities"

daily_cap_mcr (obrigatório, McrString)Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$"
lifetime_cap_mcr (obrigatório, McrString)Quantidade exata de millicréditos como string decimal canônica. 1 crédito é 1000 mcr. pattern: "^-?[0-9]+$"
image_duration_ms (opcional, inteiro)Tempo de exibição da imagem em toda a campanha. Vídeos mantêm sua duração verificada pelo servidor. padrão: 10000 mínimo: 5000 máximo: 30000
max_play_price_mcr (opcional, inline)Preço máximo positivo para reprodução concluída. Omitir para não ter teto adicional.
flight_start (obrigatório, string)formato: "date-time"
flight_end (obrigatório, string)formato: "date-time"
redes (obrigatório, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/campaigns'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Campanha rascunho.AdvertisingCampaign (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/reviews

Listar avaliações publicitárias no projeto

Versões criativas enviadas ao vendedor que chama para revisão. Um vendedor vê apenas a criativa enviada exata, nunca a biblioteca do comprador.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAdvertisingReviewsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reviews'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Revisões.AdvertisingReviewList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/reports/spend

Obter gastos publicitários no projeto

Contagem de gastos e entregas do comprador para uma campanha. Os valores são strings decimais de mcr. Nunca expõe a renda do vendedor, status bancário ou uso do projeto inteiro.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getAdvertisingSpendInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
campaign_idconsultaobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/spend?campaign_id=CAMPAIGN_ID'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Relatório de gastos.AdvertisingSpendReport (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/reports/delivery

Obter entrega publicitária no projeto

Bruto, taxa de serviço e líquido no escopo do vendedor para uma janela, com sua própria evidência de entrega. Nunca expõe a carteira do comprador ou outras redes. Apenas evidência autorizada de reprodução completa estabelece entrega faturável. A janela tem no máximo 92 dias; janela maior é invalid_request.

Quando contém mais de 5000 liquidações, a resposta define truncado, totais e contagens ainda cobrem todos eles e linhas lista apenas os primeiros 5000.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getAdvertisingDeliveryInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
deconsultaobrigatório
atéconsultaobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/advertising/reports/delivery?from=FROM&to=TO'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Relatório de entrega.AdvertisingDeliveryReport (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/playback

Listar agregados de reprodução no projeto

Agregados diários de reprodução.

JSON retorna no máximo 200 linhas e não tem limite de taxa. format=csv (ou Accept text/csv sem application/json) transmite cada linha correspondente dentro de day_from a day_to (dias UTC inclusivos; padrão day_to hoje e day_from 30 dias antes; no máximo 366 dias, caso contrário invalid_request) como CSV com uma linha de cabeçalho fixa (PlaybackAggregateCsv); somente o formato CSV consome os orçamentos playback-export-org (30 por minuto) e playback-export-ip (60 por minuto).

Qualquer uma das formas é uma requisição de API medida. As respostas trazem Vary Accept. Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listPlaybackAggregatesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
screen_idconsultaopcional
media_idconsultaopcional
diaconsultaopcionalDia do calendário UTC do agregado.
day_fromconsultaopcionalPrimeiro dia UTC, inclusivo. Exclui o dia. Com day_to abrange no máximo 366 dias. CSV padrão para 30 dias antes de day_to.
day_toconsultaopcionalÚltimo dia UTC, inclusivo. Exclui o dia. CSV o define como hoje (UTC).
formatoconsultaopcionaljson (padrão), csv, xlsx ou pdf. Se omitido, um cabeçalho Accept que cita text/csv mas não application/json seleciona csv. xlsx e pdf gravam as primeiras 50000 linhas da mesma lista.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback'

Respostas

StatusSignificadoCorpo e cabeçalhos
200

Agregados diários de reprodução para o projeto que está fazendo a chamada, tanto imagens quanto vídeos. Uma linha por tela, mídia e dia UTC. Dias mais recentes primeiro. Identificadores filtram as próprias linhas do chamador e nunca fazem consulta cruzada entre projetos.

PlaybackAggregateList (application/json), PlaybackAggregateCsv (text/csv); cabeçalhos: Vary, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/playback/plays

Listar execuções de reprodução no projeto

Registros por reprodução: uma linha por playback.media_started aceito (ou playback.video_started legado) e uma linha por playback.application_started aceito (release_id definido, campos de mídia vazios) do projeto solicitante, do mais antigo para o mais recente por received_at, empates por inserção. from (inclusivo) e to (exclusivo) delimitam received_at; to padrão é agora, from é 24 horas antes de to, e o intervalo é no máximo 31 dias (invalid_request caso contrário).

Os últimos 5 segundos ainda não são retornados: o effective to é no máximo agora menos 5 segundos (atraso de estabilização), então uma cauda ao vivo nunca pula uma linha que se compromete atrás do seu cursor. screen_id, media_id, playlist_id (a playlist de onde o início foi mostrado) e tag (uma tag da tela quando a reprodução foi recebida) filtram.

Uma página de playlist_id pode conter menos que o limite de linhas, até nenhuma, com next_cursor quando um longo trecho de reproduções de outras playlists foi escaneado; null ainda encerra o intervalo.

JSON é uma página de no máximo limit linhas (padrão 200, no máximo 1000) com next_cursor, null no fim do intervalo; devolva como cursor com os mesmos filtros. order=desc (ou before) pagina os mais novos primeiro dentro do mesmo intervalo: next_cursor é então o cursor da linha mais antiga retornada, null no início do intervalo, e é devolvido como before (exclusivo) com os mesmos filtros; order=asc com before é recusado com invalid_request nomeando order, e cursor com uma página newest-first nomeando cursor.

Uma página mais recente pode conter menos que o limite de linhas, até nenhuma, com um next_cursor; null ainda encerra.

Uma página posterior nunca pula uma linha que existia quando a página anterior foi lida e não repete uma, exceto que um início que o Player reenviou após um relatório não reconhecido (o mesmo play_id, recebido um momento depois) pode aparecer novamente em uma página posterior; o fluxo CSV lista isso uma vez. format=csv (ou Accept text/csv sem application/json) transmite cada reprodução do cursor até o fim do intervalo como CSV (PlaybackPlayCsv), mais recentes primeiro abaixo antes com order=desc; limite é recusado com CSV.

A medição é por requisição: cada página JSON custa um crédito de requisição API, enquanto um fluxo CSV de toda a faixa custa um. Cada requisição de plays (página ou fluxo) consome os orçamentos playback-export-org (30 por minuto) e playback-export-ip (60 por minuto).

Um stream limita cada escrita (15 segundos) e termina quando o cliente desconecta; se falhar após o cabeçalho 200 a conexão é abortada, então uma exportação que lê até um fim limpo está completa. Respostas carregam Vary Accept. As reproduções são mantidas pelo período de retenção de eventos do plano (30 dias é o mínimo padrão; retenção baseada no plano usa a janela própria de 7 ou 90 dias).

Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listPlaybackPlaysInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
deconsultaopcionalLimite inferior inclusivo em received_at. Padrão para 24 horas antes de to.
atéconsultaopcionalLimite superior exclusivo em received_at. Padrão é agora. to - from é no máximo 31 dias.
screen_idconsultaopcional
media_idconsultaopcional
playlist_idconsultaopcionalSó reproduções mostradas desta playlist.
tagconsultaopcionalUma tag de tela que a tela carregava quando a reprodução foi recebida.
cursorconsultaopcionalnext_cursor da página anterior, com os mesmos filtros. Opaco.
ordemconsultaopcionalasc páginas mais antigas primeiro com cursor; desc páginas mais novas primeiro com before. before implica desc; order=asc com before é recusado.
beforeconsultaopcionalPáginas mais recentes primeiro, estritamente mais antigas que esta posição: o next_cursor de uma página mais recente primeiro, com os mesmos filtros. Opaco.
limiteconsultaopcionalTamanho da página JSON. Recusado com CSV.
formatoconsultaopcionaljson (padrão), csv, xlsx ou pdf. Se omitido, um cabeçalho Accept que cita text/csv mas não application/json seleciona csv. xlsx e pdf gravam as primeiras 50000 linhas da mesma lista.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/plays'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de reproduções, ou o fluxo CSV.PlaybackPlayList (application/json), PlaybackPlayCsv (text/csv); cabeçalhos: Cache-Control, Vary, RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/playback/totals

Obter totais de reprodução no projeto

Totais de reprodução do projeto solicitante por dias UTC inclusivos, lidos dos resumos diários: by=day retorna uma linha por dia com reproduções (screen_id ou media_id limita a uma tela ou mídia), by=screen e by=media classificam as telas ou mídias mais ativas (top, no máximo 100), e by=screen_day retorna a série diária das telas principais (top no máximo 10). day_to padrão é hoje (UTC) e day_from é 29 dias antes.

Uma série de dias abrange no máximo 366 dias (92 quando restrita a uma tela ou mídia); um ranking no máximo 92. As contagens incluem todos os inícios que o projeto registrou, incluindo os armazenados antes da existência dos rollups de reprodução.

Rollups seguem a ingestão por até cerca de 21 minutos. truncated é verdadeiro quando um ranking foi construído a partir de fatias de uma janela muito grande para uma leitura: cobre as melhores chaves de cada fatia. Não tem limite de taxa. Uma solicitação de API medida.

Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getPlaybackTotalsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
porconsultaopcionaldia: reproduções por dia; tela, mídia: as chaves mais movimentadas; screen_day: a série diária das principais telas.
day_fromconsultaopcionalPrimeiro dia UTC, inclusivo. Padrão para 29 dias antes de day_to. Uma série de dias abrange no máximo 366 dias (92 quando restrita a uma tela ou mídia), um ranking no máximo 92.
day_toconsultaopcionalÚltimo dia UTC, inclusivo. Padrão é hoje (UTC).
screen_idconsultaopcional
media_idconsultaopcional
topoconsultaopcionalQuantas telas ou mídias um ranking retorna (no máximo 10 para by=screen_day). Recusado com by=day.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/totals'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Totais do agrupamento solicitado.PlaybackTotals (application/json); cabeçalhos: Cache-Control
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/playback/completeness

Obter completude da reprodução no projeto

Quantas das reproduções feitas pelas telas chegaram ao backend e onde estavam as que faltaram. Os players numeram os inícios de mídia, então um início que nunca chegou deixa uma lacuna na numeração, por exemplo quando uma tela fica offline além da fila de relatórios de 24 horas ou a fila descarta relatórios.

Nos dias UTC de day_from a day_to, inclusive (day_to tem como padrão hoje, em UTC, e day_from, 29 dias antes dele; a janela abrange no máximo 92 dias), a resposta traz measured_plays, as reproduções numeradas que chegaram; missing_plays, os números que os players pularam; completeness, measured_plays dividido pela soma dos dois, null quando ambos são 0; days, os mesmos três números para cada dia que tiver algum, mais antigos primeiro, com a lacuna contada no dia UTC da reprodução seguinte; e gaps, as lacunas mais recentes primeiro, cada uma com seu screen_id, seu day, from e to (os horários de início das reproduções de cada lado dela) e missing_plays. screen_id restringe days e gaps a uma tela; limit (padrão 100, no máximo 500) limita gaps, e truncated é true quando existem mais.

Uma tela desligada não gera reproduções e não deixa lacunas. Reproduções sem número (players mais antigos, inícios armazenados antes dos números de reprodução) não são medidas: estão em play_count de GET /api/playback/totals e em nenhum destes números. Sem limite de taxa. Uma requisição de API medida.

Um chamador limitado a telas (docs/screen-scope.md) deve enviar screen_id, e ele deve ser uma tela dentro do seu escopo (caso contrário, outside_screen_scope); as formas CSV seguem a mesma regra.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getPlaybackCompletenessInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
day_fromconsultaopcionalPrimeiro dia UTC, inclusive. O padrão é 29 dias antes de day_to. Com day_to, o intervalo abrange no máximo 92 dias.
day_toconsultaopcionalÚltimo dia UTC, inclusivo. Padrão é hoje (UTC).
screen_idconsultaopcional
limiteconsultaopcionalO máximo de lacunas a listar, mais recentes primeiro.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/playback/completeness'

Respostas

StatusSignificadoCorpo e cabeçalhos
200A completude da janela e suas lacunas.PlaybackCompleteness (application/json); cabeçalhos: Cache-Control
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/health/trend

Obter Health Trend no projeto

A saúde da frota do projeto por hora UTC: quantas telas reportaram, e quantas estavam quentes (80 °C ou mais), tinham um display desconectado ou estavam travando (3 ou mais travamentos em 24 horas). from (inclusivo) e to (exclusivo) padrão para as últimas 24 horas, no máximo 93 dias; uma página contém no máximo limit linhas (padrão 100, no máximo 500) com next_cursor, nulo no fim.

As horas seguem os relatórios com até cerca de 5 minutos de atraso. Recusado a um chamador limitado a telas (outside_screen_scope); GET /api/screens/{id}/health/history é a forma por tela.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getHealthTrendInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
deconsultaopcionalLimite inferior inclusivo no horário do relatório. Padrão para 24 horas antes de to.
atéconsultaopcionalLimite superior exclusivo no horário do relatório. Padrão é agora.
limiteconsultaopcionalTamanho da página.
cursorconsultaopcionalnext_cursor da página anterior, com os mesmos filtros. Opaco.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/health/trend'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página da saúde da frota por hora.HealthTrend (application/json); cabeçalhos: Cache-Control
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/uptime/daily

Obter uptime do projeto no projeto

Disponibilidade diária das telas do projeto em dias UTC inclusivos (padrões e intervalo como GET /api/screens/{id}/uptime). Cada linha soma os segundos online e offline das telas com estado registrado naquele dia; cobertura é a parcela do dia dessas telas com estado registrado.

Os intervalos contam quando terminam, então a linha de hoje cobre os intervalos que terminaram até agora; a contagem online ao vivo está no resumo do dashboard. Recusado a um chamador limitado a telas (outside_screen_scope); GET /api/screens/{id}/uptime é a forma por tela.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
getProjectUptimeInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
day_fromconsultaopcionalPrimeiro dia UTC, inclusivo. Padrão para 29 dias antes de day_to. Com day_to abrange no máximo 366 dias.
day_toconsultaopcionalÚltimo dia UTC, inclusivo. Padrão é hoje (UTC).
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/uptime/daily'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Linhas diárias de tempo ativo, do mais antigo para o mais recente.ProjectUptime (application/json); cabeçalhos: Cache-Control
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/card-types

Listar tipos de cartões no projeto

Descubra cartões integrados do catálogo publicado deste ambiente, mesclado com o catálogo do fornecedor. Atualizações e verificação de esquema ocorrem em segundo plano; esta rota nunca acessa o bucket edge. Cada entrada lista sua cópia atual, seu nível e os layouts permitidos para esse nível, além de todos os principais servidos.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listCardTypesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-types'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Catálogo de cartões integrado, ordenado por idCardCatalogue (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/card-data

Listar dados de cartões no projeto

Lista os documentos de dados de cartão do projeto, no máximo 200 em ordem crescente pela chave. next_cursor é a última chave retornada; passe-a como after para a próxima página, null quando não houver mais. Documentos de dados de cartão contêm as propriedades dinâmicas das colocações de cartão (seções de menu, itens de ticker, blocos de KPI); a chave de dados da colocação nomeia um.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listCardDataInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
depoisconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Documentos de dados do cartãoCardDataList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/media

Listar mídias no projeto

Lista mídias prontas da mais nova para a mais antiga, no máximo 1000 por página. folder mantém apenas os arquivos diretamente dentro de uma pasta de mídia (seu ID), ou com root somente aqueles na raiz da biblioteca; um ID de pasta bem formado que não nomeia nenhuma pasta não lista nada. next_cursor é a posição da última linha retornada enquanto houver mais linhas; passe-o de volta como after, com os mesmos filtros, para a próxima página. next_cursor é nulo na última página.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listMediaInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
tagconsultaopcionalTag de mídia exata. Objetos sem tag são omitidos quando esse filtro está presente.
primitivoconsultaopcional
pastaconsultaopcionalUm ID de pasta de mídia mantém apenas os arquivos diretamente dentro dessa pasta, não os de suas subpastas; root mantém apenas os arquivos na raiz da biblioteca. Omitir lista todos os arquivos.
idsconsultaopcional

IDs de mídia separados por vírgula, no máximo 200 distintos; mais que isso é invalid_request em ids. Mantém apenas esses arquivos: um id que não nomeia nenhum arquivo pronto fica ausente, e os demais filtros e a paginação continuam valendo. Um valor vazio não lista nada.

libraryconsultaopcional

true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true.

depoisconsultaopcionalnext_cursor da página anterior da mesma lista, com os mesmos filtros. Omitido começa na linha mais recente. Um valor que não seja esse cursor é invalid_request.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media'

Respostas

StatusSignificadoCorpo e cabeçalhos
200MídiaMediaList (application/json)
POST/api/projects/{project_id}/media/generations

Criar geração de mídia no projeto

Gerar uma imagem estática a partir de um prompt, armazená-la como mídia privada pronta do projeto e faturar seu uso. O POST responde 202 imediatamente com Operation, com ou sem Prefer: respond-async, porque um proxy diante da API descarta uma solicitação que não envia nenhum byte por 100 s e uma imagem estática de alta qualidade pode demorar mais.

Consulte GET /api/operations/{id} até que Operation seja succeeded, quando seu result for {media_id, usage: {quality, credits, usd}} (MediaGenerationUsage), ou failed, quando seu error for o problema. Uma recusa decidida antes de qualquer trabalho do fornecedor (payment_required, reseller_generation_limit, rate_limited, not_ready, invalid_request) ainda responde ao POST.

Nunca inclui bytes de imagem, b64_json, chaves de objeto, URLs assinadas, URLs do fornecedor, custo do fornecedor, tokens do fornecedor ou o nome do modelo de implantação. O prompt são bytes do cliente e não é ecoado.

Antes que o prompt alcance o fornecedor de imagem, o servidor adiciona requisitos fixos de enquadramento: a arte deve preencher a moldura de ponta a ponta, e nenhuma televisão, monitor, tela, display, moldura, borda, suporte, parede, sala, maquete de dispositivo, sombra ou fotografia de sinal instalado pode ser representada, e qualquer texto no prompt do chamador descrevendo onde o sinal será pendurado ou qual dispositivo o mostrará é tratado como metadados de posicionamento, não como assunto.

Regras decorativas e bordas dentro do próprio design permanecem disponíveis. O prompt do chamador nunca é reescrito ou removido e é armazenado inalterado. Idempotency-Key repete a mesma Operation, nunca uma segunda tentativa faturada. Os clientes não fazem PUT nem confirmam os bytes gerados.

A versão armazenada é WebP com perda (qualidade 90) no tamanho exato da proporção com uma borda curta de 1080 px (16:9 é 1920x1080, 9:16 1080x1920, 1:1 1080x1080, 4:3 1440x1080, 3:4 1080x1440, 3:2 1620x1080, 2:3 1080x1620); a tela do fornecedor é recortada centralmente e reamostrada para esse tamanho.

O nome do arquivo é distinto por geração, generated-16x9-1a2b3c4d.webp, com o sufixo retirado do id do mídia. Busque os bytes com GET /api/media/{id}/content. Own-gen-then-upload permanece válido.

No Standard, saldo restante que não cobre o dobro do custo do fornecedor da imagem estática, arredondado para créditos inteiros, após o piso introdutório (negativo 1.000.000 créditos até 2027-01-01, depois zero) retorna payment_required, exceto SCREENRIG__ENVIRONMENT=development, e a admissão antes da chamada ao fornecedor requer saldo acima desse piso pelo mínimo por qualidade: 200 créditos para baixa, 800 para média, 2000 para alta.

Outros planos nunca são recusados por causa do saldo.

Uma organização cobrada por meio de um revendedor é recusada com reseller_generation_limit (402) assim que os clientes delegados do revendedor dela tiverem sido cobrados pelo limite mensal de geração de imagens ($100 ao preço de tabela enquanto o revendedor aguarda análise, $1,000 depois, contado por mês UTC), a menos que o crédito próprio da organização cubra a imagem; uma geração já admitida é concluída.

Uma configuração vazia do fornecedor selecionado retorna not_ready. Somente token de projeto. Uma geração em andamento por organização; mais paralelismo é rate_limited.

Autenticação
projectBearer
Corpo da solicitação
MediaGenerationRequest
ID da operação
createMediaGenerationInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório
PrefercabeçalhoopcionalOpcional. A rota responde 202 imediatamente com Operation, com ou sem este cabeçalho; consulte Operation.

Campos do corpo da solicitação

CampoDescrição
prompt (obrigatório, string)minLength: 1 maxLength: 4000
aspect_ratio (opcional, string)Permitido: "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3" padrão: "16:9"
qualidade (opcional, string)Permitido: "low", "medium", "high" padrão: "medium"
tag (opcional, string)padrão: "^[A-Za-z0-9]{1,32}$"
referências (opcional, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/generations'

Respostas

StatusSignificadoCorpo e cabeçalhos
202

A geração foi aceita e continua em execução; consulte GET /api/operations/{id} até que Operation seja succeeded (result media_id e usage) ou failed (error). A mesma Idempotency-Key responde com a mesma Operation.

Operação (application/json); cabeçalhos: Preference-Applied, RateLimit-Policy, RateLimit
402

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
500

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/media-folders

Listar pastas de mídia no projeto

Lista todas as pastas de mídia no projeto, no máximo 1000, ordenadas por nome. Pastas organizam a biblioteca de mídia, e um seletor de playlist por:folder reproduz os arquivos diretamente dentro de uma pasta. O parent_id de uma pasta é nulo na raiz da biblioteca.

Construa a árvore a partir do parent_id; a pasta de um arquivo é Media.folder_id. library=true lista, em vez disso, as pastas da Biblioteca da organização (somente leitura; um seletor by:folder pode nomear uma).

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listMediaFoldersInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
libraryconsultaopcional

true lista o projeto Biblioteca da organização em vez deste projeto: os itens dele são somente leitura aqui e trazem library true. Uma organização sem Biblioteca, ou o próprio projeto Biblioteca, não lista nada com true.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Pastas de mídiaMediaFolderList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/media-folders

Criar pasta de mídia no projeto

Cria uma pasta de mídia na raiz da biblioteca (parent_id nulo ou ausente) ou dentro de parent_id. Nomes são aparados, têm de 1 a 100 caracteres Unicode sem controles, não são "." ou "..", e podem repetir. Uma organização tem no máximo 1000 pastas em todos os seus projetos (quota_exceeded) aninhadas no máximo 10 níveis (invalid_request). Emite media.folder_created.

Autenticação
projectBearer
Corpo da solicitação
MediaFolderCreate
ID da operação
createMediaFolderInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
nome (obrigatório, string)Aparado; 1 a 100 caracteres Unicode, sem controles, não . ou .. minLength: 1 maxLength: 100
parent_id (opcional, embutido)A pasta para criá-la; null ou ausente para a raiz da biblioteca.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-folders'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Pasta criada.MediaFolder (application/json); cabeçalhos: ETag
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/media/move

Mover mídia no projeto

Move arquivos (media_ids) e pastas (folder_ids) para uma pasta (folder_id), ou para a raiz da biblioteca quando folder_id for null, em uma única requisição tudo-ou-nada de no máximo 1000 ids. Cada id deve existir (not_found). Uma pasta não pode se mover para dentro de si mesma ou de uma pasta dentro dela, e a movimentação deve manter todas as pastas dentro de 10 níveis (invalid_request).

Itens já no destino permanecem como estão; cada arquivo e pasta movidos avança sua revisão. Mover arquivos altera o que os seletores by:folder de suas pastas antiga e nova reproduzem, a partir da próxima resolução do seletor de cada tela; mover uma pasta não altera os arquivos próprios de nenhuma pasta. Emite media.moved.

Um movimento de credencial Propose torna cada arquivo movido pendente e enfileira sua revisão de mídia, e os seletores de playlists aprovadas o resolvem pela pasta com que foi aprovado até que uma pessoa aprove a mudança (docs/reviews.md).

Autenticação
projectBearer
Corpo da solicitação
MediaMove
ID da operação
moveMediaInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
folder_id (obrigatório, inline)Pasta de destino; nulo para a raiz da biblioteca.
media_ids (opcional, array)
folder_ids (opcional, array)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/move'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Quantos arquivos e pastas foram movidos.MediaMoveResult (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/media/uploads

Criar upload de mídia no projeto

Autenticação
projectBearer
Corpo da solicitação
MediaUploadDeclaration
ID da operação
createMediaUploadInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório
project_idconsultaopcional

Obrigatório com dashboardSession: o projeto onde o arquivo foi enfileirado. Deve corresponder ao projeto selecionado da sessão, caso contrário resource_conflict. Isso vincula a admissão de upload entre abas. O id de upload retornado permanece com escopo de projeto para upload e commit de bytes. Omitido com um portador de projeto.

Campos do corpo da solicitação

CampoDescrição
nome do arquivo (obrigatório, string)Nome dos bytes sendo enviados, como serão enviados: apenas um nome de arquivo com no máximo 255 bytes UTF-8, sem diretório, barra invertida nem caracteres de controle. minLength: 1 maxLength: 255
source_filename (opcional, string)

Nome original do arquivo do chamador antes de qualquer transcodificação no cliente. Apenas o nome do arquivo, com no máximo 255 bytes UTF-8. Armazenado literalmente na mídia pronta como source_filename e usado para derivar filename. minLength: 1 maxLength: 255

content_type (obrigatório, string)Permitido: "image/png", "image/jpeg", "image/webp", "image/gif", "video/mp4", "video/webm", "audio/mpeg"
bytes (obrigatório, inteiro)mínimo: 1 máximo: 1073741824
sha256 (obrigatório, string)padrão: "^[a-f0-9]{64}$"
tag (opcional, string)padrão: "^[A-Za-z0-9]{1,32}$"
folder_id (opcional, string)

A pasta de mídia em que a mídia pronta cai; se omitida, cai na raiz da biblioteca. A pasta deve existir quando o upload é declarado (caso contrário, invalid_request em folder_id) e quando é confirmado (a operação falha com invalid_request: declare novamente). Um uploader (docs/uploaders.md) deve enviar uma de suas pastas (caso contrário, outside_upload_scope).

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media/uploads'

Respostas

StatusSignificadoCorpo e cabeçalhos
201

Autorização assinada de curta duração para exatamente um PUT de objeto privado. Envie o método retornado e todos os cabeçalhos retornados exatamente como foram retornados. É também assim que o dashboard faz upload. Seu navegador envia os bytes por PUT diretamente para o armazenamento de objetos, nunca pela API, porque um proxy diante da API recusa um corpo de solicitação superior a 100 MB.

Um navegador define Content-Length por si mesmo a partir do corpo, portanto envia todos os cabeçalhos retornados, exceto esse.

MediaUploadSession (application/json); cabeçalhos: Cache-Control, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/selectors/preview

Visualizar seletor no projeto

Pré-visualização somente leitura das correspondências atuais de imagem ou vídeo prontas do projeto. Retorna ordenação de nome de arquivo e política normalizada; reprodução aleatória embaralha a cada nova passagem no Player. Não avança cursores, concede conteúdo ou altera manifestos. Mais de 1024 correspondências retorna invalid_request.

Autenticação
projectBearer
Corpo da solicitação
SelectorPreviewInput
ID da operação
previewSelectorInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
fuso horário (opcional, string)Fuso horário IANA em que a disponibilidade da mídia é lida; padrão UTC.
rect (opcional, objeto)O tamanho rect do primitivo; obrigatório com selector.fit aspect.
primitivo (obrigatório, string)Permitido: "image", "video"
selector (obrigatório, inline)
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/selectors/preview'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Correspondências do seletor atual.SelectorPreview (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/feedback/bugs

Listar relatórios de bugs no projeto

Retorna os relatórios de bugs do projeto que chama, do mais novo para o mais antigo, até cem. Submissões de outro projeto nunca são retornadas. Leia um tópico próprio pelo ID de feedback. Não há cursor de paginação na v1. Cada submissão carrega seu status e as respostas da equipe/agente, do mais antigo para o mais novo.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listBugReportsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Relatórios de bugs pertencentes ao projeto atual.FeedbackList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/feedback/bugs

Relatar bug no projeto

Registra um relatório de bug contra o projeto chamador. Campos próprios da submissão não podem ser atualizados ou excluídos; adicione correção ou mais informações com uma resposta no mesmo tópico de feedback.

Uma nova tentativa exata com a mesma Idempotency-Key retorna a submissão original por vinte e quatro horas em vez de criar um duplicado, e um corpo diferente sob essa chave retorna idempotency_mismatch. Cada submissão é verificada antes de ser armazenada.

Um corpo com menos de 12 caracteres ou 3 palavras retorna submission_too_short; texto que não descreve problema ou requisição (caracteres aleatórios, batida no teclado) retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto malicioso retornam submission_rejected.

Uma submissão recusada não é armazenada, seu detalhe de problema nunca repete o texto submetido, e uma nova tentativa exata sob a mesma Idempotency-Key retorna a mesma recusa.

Nunca coloque credenciais, cookies, cabeçalhos Authorization, nonces de conclusão, URLs assinadas ou chaves de objeto no título, corpo ou contexto; texto com formato de credencial (tokens ScreenRig, JWTs, tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento da submissão, e a resposta carrega o texto redigido.

Quando o modelo de triagem está brevemente indisponível, a submissão é aceita e mantida para uma reavaliação em segundo plano; após algumas dessas aceitações em uma hora, o projeto recebe submission_screening_unavailable (500, Retry-After) e tenta a mesma solicitação mais tarde.

Autenticação
projectBearer
Corpo da solicitação
FeedbackWrite
ID da operação
reportBugInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
título (obrigatório, string)Resumo de uma linha. Espaços em branco no início e fim são removidos, e caracteres de controle são rejeitados. minLength: 1 maxLength: 120
body (obrigatório, string)Descrição completa. Quebra de linha e tabulação são os únicos caracteres de controle aceitos. minLength: 1 maxLength: 4000
context (opcional, FeedbackContext)

Envelope de diagnóstico fechado. Cada membro é um escalar opcional restrito, aninhamento é estruturalmente impossível, e um membro desconhecido é rejeitado com invalid_request. A forma existe para que um cliente não possa persistir valores de argumento, credenciais ou dados de ambiente livre através dela.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/bugs'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Relatório de bug armazenado. Retentativa idempotente exata retorna esta mesma submissão.FeedbackSubmission (application/json); cabeçalhos: RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
422

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/feedback/features

Listar solicitações de recursos no projeto

Retorna as solicitações de recursos do projeto que chama, do mais novo para o mais antigo, até cem. Submissões de outro projeto nunca são retornadas. Leia um tópico próprio pelo ID de feedback. Não há cursor de paginação na v1. Cada submissão carrega seu status e as respostas da equipe/agente, do mais antigo para o mais novo.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listFeatureRequestsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Solicitações de recurso pertencentes ao projeto que chama.FeedbackList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/feedback/features

Solicitar recurso no projeto

Registra um pedido de recurso contra o projeto chamador. Campos próprios da submissão não podem ser atualizados ou excluídos; adicione correção ou mais informações com uma resposta no mesmo tópico de feedback.

Uma nova tentativa exata com a mesma Idempotency-Key retorna a submissão original por vinte e quatro horas em vez de criar um duplicado, e um corpo diferente sob essa chave retorna idempotency_mismatch. Cada submissão é verificada antes de ser armazenada.

Um corpo com menos de 12 caracteres ou 3 palavras retorna submission_too_short; texto que não descreve problema ou requisição (caracteres aleatórios, batida no teclado) retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto malicioso retornam submission_rejected.

Uma submissão recusada não é armazenada, seu detalhe de problema nunca repete o texto submetido, e uma nova tentativa exata sob a mesma Idempotency-Key retorna a mesma recusa.

Nunca coloque credenciais, cookies, cabeçalhos Authorization, nonces de conclusão, URLs assinadas ou chaves de objeto no título, corpo ou contexto; texto com formato de credencial (tokens ScreenRig, JWTs, tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento da submissão, e a resposta carrega o texto redigido.

Quando o modelo de triagem está brevemente indisponível, a submissão é aceita e mantida para uma reavaliação em segundo plano; após algumas dessas aceitações em uma hora, o projeto recebe submission_screening_unavailable (500, Retry-After) e tenta a mesma solicitação mais tarde.

Autenticação
projectBearer
Corpo da solicitação
FeedbackWrite
ID da operação
requestFeatureInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
título (obrigatório, string)Resumo de uma linha. Espaços em branco no início e fim são removidos, e caracteres de controle são rejeitados. minLength: 1 maxLength: 120
body (obrigatório, string)Descrição completa. Quebra de linha e tabulação são os únicos caracteres de controle aceitos. minLength: 1 maxLength: 4000
context (opcional, FeedbackContext)

Envelope de diagnóstico fechado. Cada membro é um escalar opcional restrito, aninhamento é estruturalmente impossível, e um membro desconhecido é rejeitado com invalid_request. A forma existe para que um cliente não possa persistir valores de argumento, credenciais ou dados de ambiente livre através dela.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feedback/features'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Solicitação de recurso armazenada. Retentativa idempotente exata retorna esta mesma submissão.FeedbackSubmission (application/json); cabeçalhos: RateLimit-Policy, RateLimit
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
422

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/service-clients

Listar clientes de serviço no projeto

Os clientes de serviço do projeto (especificação: servidor, script ou trabalho CI de um cliente pertencente ao projeto), do mais novo ao mais antigo, ativos e revogados, com suas chaves públicas, ids secretos e uso; nunca um segredo ou seu resumo. Precisa da capacidade do projeto.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listServiceClientsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'

Respostas

StatusSignificadoCorpo e cabeçalhos
200O cliente de serviço.ServiceClientList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/service-clients

Criar cliente de serviço no projeto

Cria um cliente de serviço pertencente ao projeto com um nome, capacidades (omitido significa todas as seis; cada uma deve ser uma que o gerente possui, senão 403), acesso (leitura, padrão, ou gerenciamento), e uma chave pública JWK (OKP Ed25519, EC P-256 ou RSA de pelo menos 2048 bits) e/ou segredo verdadeiro. O segredo é retornado uma vez, apenas aqui. No máximo 50 clientes ativos por organização.

Agentes precisam de escopo de identidade, identidade ativa Gerenciar, sua própria concessão Gerenciar com a capacidade do projeto no projeto, e um papel ativo de administrador da organização; uma pessoa usa a sessão do dashboard com project_id e uma prova nova (tipo service_client_change, sujeito o id do cliente, ou o id do projeto ao criar) no corpo. Um token de serviço é recusado com 403.

Um membro limitado a telas não conecta agentes, não emite credenciais nem gerencia as pessoas do projeto: outside_screen_scope (peça ao proprietário do projeto).

Autenticação
agentIdentityBearer
Corpo da solicitação
ServiceClientChange
ID da operação
createServiceClientInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório

Campos do corpo da solicitação

CampoDescrição
project_id (opcional, string)Somente sessão do Dashboard.
proof (opcional, DashboardProof)
nome (opcional, string)minLength: 1 maxLength: 80
capacidades (opcional, array)
acesso (opcional, string)Gerenciar requer uma pessoa que possa aprovar revisões (403 approver_required). Permitido: "ler", "propor", "gerenciar"
key (opcional, objeto)Um JWK público: OKP Ed25519, EC P-256 ou RSA de pelo menos 2048 bits.
secreto (opcional, booleano)Gerar um segredo (somente criação).
upload_scope (opcional, UploadScope)

O que um uploader pode usar (docs/uploaders.md): as playlists cujas páginas ele altera e as pastas de mídia para as quais envia. As pastas são exatamente as listadas, nunca suas subpastas. Um id que, ao ser gravado, não nomeia nenhum objeto ativo do projeto é invalid_request em sua posição; uma exclusão posterior deixa um id morto, que não concede nada.

O escopo é lido a cada requisição, então uma mudança vale para a próxima.

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/service-clients'

Respostas

StatusSignificadoCorpo e cabeçalhos
201O cliente de serviço.ServiceClientResult (application/json)
402

feature_not_in_plan — um escopo de upload cria um uploader, e o plano do projeto não inclui uploaders; required_plan nomeia o plano que os inclui. Restringir um escopo e removê-lo são sempre permitidos.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/media-sync-accounts

Listar contas de sincronização de mídia no projeto

Lists the project's media sync accounts, newest first (200 per page; next_cursor continues). Each shows its tenant and client id, its state and its last test; the client secret is never returned, only whether one is set and its last four characters.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listMediaSyncAccountsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
cursorconsultaopcionalO next_cursor da página anterior.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As contas do projeto.MediaSyncAccountList (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/media-sync-accounts

Criar conta de sincronização de mídia no projeto

Adiciona uma conta que sincroniza por leitura. kind microsoft365 armazena as credenciais do próprio aplicativo do Microsoft Entra do projeto, para que as sincronizações possam ler uma pasta do SharePoint ou do OneDrive for Business: config.tenant_id é o ID do diretório ou o domínio primário do tenant (common, organizations e consumers são recusados), config.client_id o ID do aplicativo, e secret o valor de um dos segredos de cliente do aplicativo; o aplicativo precisa da permissão de aplicativo Sites.Selected do Microsoft Graph (concedida em cada site) ou Files.Read.All, com consentimento do administrador.

Em vez desses três, config.connection_id nomeia uma conexão da Microsoft do projeto (createConnection), em qualquer um dos dois modos, que faz login e guarda o segredo. kind canva só aceita um nome: a conta fica em pending_consent e a resposta traz authorize_url, um link de uso único (válido até authorize_expires_at) que a pessoa dona da conta do Canva abre, logada no Canva, para conectá-la pela integração do Canva do screenRIG.

A concessão pertence ao projeto, então as sincronizações dela duram mais que a pessoa que a conectou.

Um servidor sem a integração com o Canva responde 409 canva_not_configured. kind dropbox funciona como canva: a conta fica em pending_consent e authorize_url é um link de uso único que a pessoa dona da conta do Dropbox abre, logada no Dropbox, para permitir acesso somente leitura (files.metadata.read, files.content.read, account_info.read, sharing.read).

A autorização passa pelo aplicativo do Dropbox do screenRIG, ou pelo aplicativo do Dropbox do próprio cliente quando config.app_key o nomeia (PKCE, então sem segredo do aplicativo; o aplicativo precisa listar https://API_ORIGIN/api/dropbox/callback como URI de redirecionamento).

Um servidor sem o aplicativo do Dropbox do screenRIG responde 409 dropbox_not_configured a uma conta dropbox sem app_key. kind google_drive fica em ready de imediato e lê as pastas compartilhadas com config.service_account_email: a conta de serviço do screenRIG ou a própria do cliente, quando secret é a chave JSON dessa conta de serviço.

Uma pasta compartilhada com a conta de serviço do screenRIG só sincroniza quando um membro do projeto com e-mail verificado a compartilhou ou é o proprietário dela. Um servidor sem a conta de serviço do screenRIG responde 409 google_drive_not_configured a uma conta google_drive sem chave. Um segredo é selado em repouso e nunca é devolvido nem registrado em log. Adiciona media_sync_account.created.

Uma nova tentativa exata com a mesma Idempotency-Key devolve a mesma conta (uma nova tentativa para uma conta do Canva ou do Dropbox recebe um novo link).

Autenticação
projectBearer
Corpo da solicitação
MediaSyncAccountWrite
ID da operação
createMediaSyncAccountInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
kind (obrigatório, string)Permitido: "microsoft365", "canva", "dropbox", "google_drive"
nome (obrigatório, string)minLength: 1 maxLength: 80
config (opcional, object)

Para microsoft365, tenant_id e client_id (ambos) com secret, ou somente connection_id: o id de uma conexão da Microsoft deste projeto. Para dropbox, app_key nomeia opcionalmente o aplicativo do Dropbox do próprio cliente. Não aceito para canva ou google_drive.

secret (opcional, string)

Obrigatório para microsoft365 com tenant_id e client_id: o valor de um dos segredos de cliente do aplicativo (não o id dele), com no máximo 1024 caracteres.

Para google_drive, opcional: a chave JSON da conta de serviço do Google Cloud do próprio cliente (type service_account), cujo client_email se torna o service_account_email da conta; sem ela, a conta lê por meio da conta de serviço do screenRIG. Não aceito com connection_id, nem para canva ou dropbox. minLength: 1 maxLength: 8192

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-sync-accounts'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada, com o segredo mascarado; uma conta do Canva ou do Dropbox também traz authorize_url.MediaSyncAccountConnect (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request.Problema (application/problem+json)
402feature_not_in_plan — o plano do projeto não inclui a sincronização de mídia; required_plan nomeia o plano que a inclui.Problema (application/problem+json)
409

canva_not_configured (este servidor não tem integração com o Canva; somente kind canva), dropbox_not_configured (sem o aplicativo do Dropbox do screenRIG e sem config.app_key; somente kind dropbox), google_drive_not_configured (sem a conta de serviço do screenRIG e sem chave; somente kind google_drive), resource_conflict ou idempotency_mismatch.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/media-syncs

Listar sincronizações de mídia no projeto

Lists the project's media syncs, newest first (200 per page; next_cursor continues), optionally of one account_id or state. Each shows its source folder, the media folder it fills, its cadence, state, next run and the summary of its last run.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listMediaSyncsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
cursorconsultaopcionalO next_cursor da página anterior.
account_idconsultaopcionalLista apenas as sincronizações que leem por esta conta.
estadoconsultaopcionalLista apenas as sincronizações neste estado.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As sincronizações do projeto.MediaSyncList (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/media-syncs

Criar sincronização de mídia no projeto

provider canva: lê o design (design é o id dele ou o endereço canva.com/design/ID/...) por uma conta do Canva conectada e armazena a sincronização, que vence agora.

Each run asks Canva for the design's last change and, when it moved, exports the pages (pages, default all; format png gives one image per page and mp4 one video) and imports them into the media folder, replacing the bytes of a page already imported under the same media id so the playlists that use it update; a page the design no longer has leaves play like a removed SharePoint file.

Um design que o Canva não mostra mais interrompe a sincronização no estado error (erro de execução design_unavailable) e mantém a mídia.

Um design ou página que a conta não consegue ver é 409 media_sync_source_refused. provider dropbox: url é o endereço da pasta no Dropbox (https://www.dropbox.com/home/...), um link de pasta compartilhada que a conta conectada adicionou ao seu Dropbox, ou um caminho que começa com /; ele é lido uma vez por meio de uma conta do Dropbox conectada e a sincronização é armazenada, com execução prevista para agora.

As pastas em um espaço de equipe são lidas a partir da raiz da equipe. Cada execução continua a partir da posição salva do Dropbox na pasta, então apenas as alterações são lidas.

Uma pasta que a conta não consegue abrir é 409 media_sync_source_refused; uma conta cuja conexão o Dropbox não honra mais é 409 dropbox_reconnect_required. provider google_drive: url é o endereço da pasta no Google Drive (https://drive.google.com/drive/folders/ID) ou o id dela, compartilhada (a função Viewer basta) com o service_account_email da conta.

Cada execução lista a pasta e compara o checksum de cada arquivo. Os arquivos do Google Docs, Sheets e Slides são ignorados como unsupported_type. Uma pasta que o endereço não consegue abrir é 409 media_sync_source_refused.

Pela conta de serviço do screenRIG, a pasta precisa ser compartilhada por um membro do projeto com e-mail verificado ou pertencer a ele (403 media_sync_sharer_not_member), e cada execução verifica isso de novo (o erro de execução sharer_not_member interrompe a sincronização no estado error). provider sharepoint: lê o endereço da pasta por meio da conta (um endereço de site do SharePoint como https://TENANT.sharepoint.com/sites/SITE/LIBRARY/FOLDER, ou um link de compartilhamento; o aplicativo precisa conseguir vê-lo: Sites.Selected precisa de uma concessão no site, um link de compartilhamento precisa de Files.Read.All) e armazena a sincronização, com execução prevista para agora. folder_id é a pasta de mídia para onde os arquivos vão; sem ele, a sincronização cria uma com o nome da pasta de origem.

Each run imports the images (png, jpeg, webp, gif), videos (mp4, webm) and audio (mp3) directly in the source folder, replaces the bytes of a file that changed under the same media id so playlists that use it update, and takes a file removed at the source out of play: its media is deleted, or, while screens still hold it, moved to a Removed subfolder and deleted later.

Subfolders are ignored; other files are listed as skipped with the reason. every is the seconds between runs, 300 to 86400, default 900. A folder the provider refuses is 409 media_sync_source_refused and one it cannot reach is 500 media_sync_source_unavailable; nothing is stored. Appends media_sync.created.

Autenticação
projectBearer
Corpo da solicitação
MediaSyncWrite
ID da operação
createMediaSyncInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
provider (obrigatório, string)Permitido: "sharepoint", "canva", "dropbox", "google_drive"
account_id (obrigatório, string)Uma conta do tipo do provedor: microsoft365 para sharepoint, canva, dropbox ou google_drive.
url (opcional, string)

sharepoint (obrigatório): o endereço da pasta no SharePoint ou um link de compartilhamento, lido uma vez para encontrar a pasta e não armazenado. dropbox (obrigatório): o endereço da pasta no Dropbox, um link de pasta compartilhada que a conta adicionou, ou um caminho que começa com /. google_drive (obrigatório): o endereço da pasta no Google Drive ou o id dela. maxLength: 4096

design (opcional, string)canva (obrigatório): o id do design ou o endereço dele canva.com/design/ID/... maxLength: 2048
pages (opcional, array)canva: as páginas a sincronizar; omita para todas. Um design que depois tiver menos páginas tira de reprodução as que faltam.
format (opcional, string)canva: png gera uma imagem por página; mp4 um vídeo das páginas. Allowed: "png", "mp4" default: "png"
folder_id (opcional, string)A pasta de mídia onde os arquivos caem. Omita para criar uma com o nome da pasta de origem.
every (opcional, inteiro)Segundos entre execuções; o padrão é 900. minimum: 300 maximum: 86400
nome (opcional, string)Por padrão, o nome da pasta de origem. minLength: 1 maxLength: 80
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/media-syncs'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada, vence agora.MediaSync (application/json); cabeçalhos: ETag, Cache-Control
400invalid_request.Problema (application/problem+json)
402feature_not_in_plan — o plano do projeto não inclui a sincronização de mídia; required_plan nomeia o plano que a inclui.Problema (application/problem+json)
403media_sync_sharer_not_member — uma pasta do Google Drive lida pela conta de serviço do screenRIG que nenhum membro do projeto com e-mail verificado compartilhou nem possui.Problema (application/problem+json)
409

media_sync_source_refused (o provedor recusou o aplicativo, a permissão dele ou a pasta), dropbox_reconnect_required (a conta do Dropbox precisa ser conectada de novo), dropbox_not_configured, google_drive_not_configured, resource_conflict (a mesma origem já está sincronizada nessa pasta de mídia) ou idempotency_mismatch.

Problema (application/problem+json)
500media_sync_source_unavailable: não foi possível acessar o provedor ou ele respondeu com uma falha.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/fleet-links

Listar links da frota no projeto

Lista os links da frota do projeto, do mais antigo para o mais recente (no máximo 50). Abaixo de Gerenciar efetivo, cada URL está vazia e url_redacted é true, pois a URL cria telas.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listFleetLinksInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Os links da frota do projeto.FleetLinkList (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/fleet-links

Criar link de frota no projeto

Cria um link de frota: uma URL do Player (https://play.<domain>/player/#fleet=<secret>) que transforma cada dispositivo que a abre em sua própria tela neste projeto, sem código de pareamento. Coloque-o em um gerenciador de dispositivos, como um app quiosque do Google Admin console.

Cada nova tela recebe as tags, os campos e a playlist do link, e um rótulo do dispositivo (primeiro o ID de ativo do administrador, depois a localização), ou então o próximo rótulo padrão. Um player que já possui uma tela nunca cria outra: sua chave mantém a identidade da tela entre recarregamentos e reinicializações.

Após uma restauração de fábrica ou reinstalação, um dispositivo que reporta o número de série ou DUID de uma tela que um link de frota deste projeto criou recupera essa tela (screen.recovered) em vez de criar uma nova, uma vez que a chave antiga ficou silenciosa por dez minutos.

O segredo viaja no fragmento da URL, que os navegadores nunca enviam a um servidor. max_screens limita as telas que o link cria e expires_at encerra o link nesse momento, assim como desativá-lo. Uma organização tem no máximo 50 links de frota em todos os seus projetos (fleet_link_limit_reached). Registra fleet_link.created.

Uma nova tentativa exata com a mesma Idempotency-Key retorna esta mesma resposta por vinte e quatro horas.

Autenticação
projectBearer
Corpo da solicitação
FleetLinkWrite
ID da operação
createFleetLinkInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
label (obrigatório, string)minLength: 1 maxLength: 80
habilitado (opcional, boolean)Padrão para verdadeiro.
tags (opcional, ScreenTags)

Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto.

Tags nunca estão no manifesto de tempo de execução e nunca na autorização.

fields (opcional, objeto)Campos com que cada tela criada pelo link começa; os posicionamentos de cards os leem por {screen.field.NAME}.
playlist_id (opcional, string)
max_screens (opcional, inteiro)mínimo: 1 máximo: 10000
expires_at (opcional, string)Quando o link expira (RFC 3339); um link além desse momento não cria nem recupera telas. Ausente significa que nunca expira. Um horário que já passou é aceito e expira o link imediatamente. format: "date-time"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/fleet-links'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criado, com sua URL.FleetLink (application/json); cabeçalhos: Cache-Control
400invalid_request, incluindo um playlist_id desconhecido ou uma tag ou campo malformado.Problema (application/problem+json)
409fleet_link_limit_reached ou idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/webhooks

Listar webhooks no projeto

Lista as notificações de webhook do projeto no formato de webhook, mais antigas primeiro (no máximo 50); GET /api/notifications lista todos os canais. O segredo de assinatura nunca é retornado aqui. Exige a capacidade de projeto; uma credencial somente de relatórios é recusada com 403 forbidden, porque a resposta inclui URLs de receptores.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listWebhooksInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Os webhooks do projeto.WebhookList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/webhooks

Criar webhook no projeto

Cria um webhook que recebe os próprios eventos duráveis do projeto como POSTs HTTPS assinados. A URL deve ser https em um host público da Internet: um literal IP ou toda resposta DNS atual do nome deve ser pública (privada, loopback, link-local, CGNAT, IPv6 fora de 2000::/3, documentação e outras faixas reservadas são recusadas com webhook_url_rejected).

A porta deve ser 443 (padrão) ou 8443, caso contrário webhook_url_rejected. O host é resolvido e verificado novamente antes de cada entrega e a conexão é feita exatamente para o endereço verificado, então uma resposta DNS que muda depois não pode redirecionar entregas. event_types lista tipos exatos de eventos (screen.online) ou prefixos terminando em .* (screen.*).

Uma organização tem no máximo 50 notificações, em todos os canais (webhook_limit_reached). O servidor gera o segredo de assinatura e o retorna apenas nesta resposta e em rotate-secret; guarde-o. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas.

A entrega começa com o primeiro evento depois de notification.created.

Autenticação
projectBearer
Corpo da solicitação
Escrita de webhook
ID da operação
createWebhookInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
url (obrigatório, string)URL https em um host público na Internet, porta 443 (padrão) ou 8443. Sem informações de usuário ou fragmento. maxLength: 2048 formato: "uri"
event_types (obrigatório, WebhookEventTypes)

Tipos de evento exatos, como screen.online, ou prefixos terminados em .*, como screen.* (todo tipo que começa com screen.). notification.test nunca é distribuído por uma assinatura; é enviado apenas por POST /api/webhooks/{id}/test.

habilitado (opcional, boolean)padrão: true
descrição (opcional, string)maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/webhooks'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criado. O segredo é mostrado apenas aqui e na rotação do segredo.WebhookWithSecret (application/json); cabeçalhos: Cache-Control
400invalid_request ou webhook_url_rejected.Problema (application/problem+json)
409webhook_limit_reached, idempotency_mismatch ou resource_conflict quando o projeto não pertence a nenhuma organização.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/alerts

Listar alertas no projeto

Lista os alertas de tela do projeto: um por tela e condição enquanto ela durar (open), e os que terminaram dentro da retenção de eventos do plano (resolved).

Um alerta é aberto quando chega o evento de sua condição (screen.offline, uma mudança de saúde display_disconnected, temperature_high ou on_battery, screen.storage_shortfall, um screen.manifest_upgrade travado, um screen.status_changed de nível error, um screen.glass_changed com veredito travado, em branco ou congelado) e é resolvido pelo evento que a encerra; crashing é um aviso, não um alerta. counts.attention conta os alertas abertos que não estão reconhecidos, adiados nem silenciados, o número que o dashboard mostra.

Uma tela que reinicia por causa de um reinício enviado pelo backend não abre alerta screen_offline nem display_disconnected até que o reinício termine ou dez minutos depois de enviado; uma condição que ainda se mantém então abre seu alerta nesse momento. Os alertas abertos vêm primeiro, os mais recentes antes; passe next_cursor de volta como antes para a próxima página.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAlertsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
formatoconsultaopcionaljson (padrão) retorna o relatório como JSON. csv, xlsx e pdf retornam as mesmas linhas como anexo (cada página de um relatório paginado, até 50000 linhas).
estadoconsultaopcional
screen_idconsultaopcional
beforeconsultaopcionalnext_cursor da página anterior.
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alerts'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de alertas.AlertList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/alert-mutes

Listar silenciamentos de alerta no projeto

Lista os silenciamentos do projeto que não terminaram, começando pelo que termina primeiro (no máximo 50).

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listAlertMutesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Os silenciamentos vigentes do projeto.AlertMuteList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/alert-mutes

Criar silenciamento de alerta no projeto

Silencia telas para manutenção até um instante no máximo 30 dias à frente: as telas nomeadas em screen_ids e toda tela que tenha alguma das tags listadas em tags no momento em que um aviso deve ser enviado. Os alertas delas continuam sendo abertos e resolvidos, marcados como muted, e nunca precisam de atenção; os avisos de todas as notificações sobre elas são ignorados (muted).

Uma organização tem no máximo 50 silenciamentos vigentes em todos os seus projetos (alert_mute_limit_reached). Registra alert_mute.created.

Autenticação
projectBearer
Corpo da solicitação
AlertMuteWrite
ID da operação
createAlertMuteInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
screen_ids (opcional, array)
tags (opcional, ScreenTags)

Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto.

Tags nunca estão no manifesto de tempo de execução e nunca na autorização.

until (obrigatório, string)No máximo 30 dias à frente. format: "date-time"
note (opcional, string)maxLength: 200
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/alert-mutes'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada.AlertMute (application/json)
409alert_mute_limit_reached ou idempotency_mismatch.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/notifications

Listar notificações no projeto

Lista as notificações da organização que cobrem o projeto, de todos os canais, mais antigas primeiro (no máximo 50). status, failing_since, last_success_at e last_failure_at são deste projeto. O segredo de assinatura de um webhook nunca é retornado aqui.

Exige a capacidade de projeto; uma credencial somente de relatórios é recusada com 403 forbidden, porque a resposta inclui URLs de receptores e destinatários.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listNotificationsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'

Respostas

StatusSignificadoCorpo e cabeçalhos
200As notificações do projeto.NotificationList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/notifications

Criar notificação no projeto

Cria uma notificação. channel email envia para recipients (owner, ou user_ids dos membros do projeto); channel webhook faz POST, assinado, para url, que segue as regras de URL de webhook (https em um host da Internet pública, porta 443 ou 8443, senão webhook_url_rejected). conditions lista as mudanças de estado da tela em que ela dispara; uma notificação por e-mail precisa de pelo menos uma, um webhook precisa de conditions ou event_types. screen_tags limita conditions a telas com qualquer uma dessas tags; vazio significa todas as telas, ou audience diz quais telas nas regras de um público-alvo de campanha. min_severity e severity filtram e classificam os avisos, e active_hours retém ou descarta os avisos fora de suas janelas.

Uma condição só notifica depois de durar hold_minutes (padrão 10), e um aviso de resolução é enviado quando ela se normaliza depois de um aviso enviado. A notificação cobre somente este projeto; uma organização tem no máximo 50 notificações, sem contar as padrão que o sistema cria (notification_limit_reached).

O segredo de assinatura de um webhook é gerado pelo servidor e retornado apenas nesta resposta e em rotate-secret; guarde-o. Repetir a requisição exatamente igual, com o mesmo Idempotency-Key, retorna esta mesma resposta, com o segredo, por vinte e quatro horas. Os avisos começam com o primeiro evento depois de notification.created.

Autenticação
projectBearer
Corpo da solicitação
NotificationWrite
ID da operação
createNotificationInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
channel (obrigatório, string)Permitidos: "email", "webhook", "slack", "teams", "pagerduty", "telegram"
descrição (opcional, string)Um nome para pessoas. maxLength: 200
conditions (opcional, NotificationConditions)
screen_tags (opcional, ScreenTags)

Tags do seletor de frota, de 0 a 16 tags únicas exatas, cada uma correspondendo à gramática de tags de mídia. No ScreenPatch o array substitui o conjunto inteiro e um array vazio o limpa; uma tag duplicada ou malformada é invalid_request. Alterar tags aumenta a revisão da tela (If-Match a protege) e anexa screen.updated com details.tags; nunca altera a revisão do manifesto.

Tags nunca estão no manifesto de tempo de execução e nunca na autorização.

audience (opcional, CampaignAudience)

Quais telas uma campanha segmenta: exatamente um entre all (toda regra corresponde), any (ao menos uma corresponde), tag (a tela tem a tag), screen_id (essa tela) ou folder (as telas dessa pasta de telas e de toda pasta dentro dela, GET /api/screen-folders; a pasta deve existir).

As regras se aninham em no máximo 3 níveis e um público-alvo tem no máximo 500 regras. {"all": []} é toda tela do projeto; nos demais casos, all e any listam ao menos uma regra.

min_severity (opcional, NotificationSeverity)

A severidade de um aviso, da menos severa para a mais severa. Um aviso aberto tem a severidade de sua condição: error para screen_offline e warning para toda outra condição, a menos que a severidade da notificação diga o contrário. Um aviso de resolvido e um teste são info. Permitidos: "info", "warning", "error"

severity (opcional, NotificationSeverityOverrides)

Condição para severidade nesta notificação, como {"not_playing": "error"}. Conta para min_severity e é a severidade que Teams e PagerDuty mostram para a condição. Uma condição não listada mantém seu padrão. Em um patch, um objeto vazio, como null, limpa todas as sobrescritas.

active_hours (opcional, NotificationActiveHours)

Quando os avisos abertos são enviados: as janelas (screenrig.schedule/v1), lidas em timezone. Um aviso que vence enquanto elas estão fechadas espera a próxima abertura (outside hold, o padrão) e é enviado então se sua condição ainda se mantiver, de modo que uma condição que termina antes não envia nada, ou é ignorado (outside drop; last_error outside_hours).

Um aviso de resolvido para um aviso aberto que foi enviado sempre é enviado, dentro do horário ou não, e um teste o ignora. crashing é retido ou descartado como qualquer outra condição. O horário julga um aviso quando ele sai pela primeira vez; um que falhou é repetido no cronograma habitual, qualquer que seja o horário.

Adicionar, alterar ou remover o horário faz com que os avisos retidos pelo antigo sejam julgados de novo na hora.

reach_drop (opcional, NotificationReachDrop)

A menor queda no alcance de uma campanha para a qual um aviso reach_dropped é enviado: screens é o menor número de telas perdidas (padrão 1) e percent, quando definido, a menor parcela das telas que a campanha alcançava quando foi publicada; uma queda precisa atender aos dois.

Uma queda menor não enfileira aviso, e um aviso enfileirado cuja queda diminuiu abaixo do limite até a hora do envio é ignorado (condition_cleared). Somente com a condição reach_dropped; em uma notificação sem ela, invalid_request.

hold_minutes (opcional, integer)Por quanto tempo uma condição precisa durar antes de notificar. crashing nunca é retido. default: 10 minimum: 0 maximum: 1440
recipients (opcional, NotificationRecipients)

Somente para e-mail. owner (quem for o proprietário do projeto no momento em que um aviso é enviado) ou o user_id de uma pessoa que seja membro do projeto; um user_id que não seja de um membro retorna invalid_request. Cada um recebe o e-mail no endereço verificado. Quem já saiu do projeto ou não tem endereço verificado é ignorado.

url (opcional, string)Somente webhook: URL https em um host público da internet, porta 443 (o padrão) ou 8443. Sem userinfo nem fragmento. maxLength: 2048 format: "uri"
event_types (opcional, NotificationEventTypes)

Somente webhook. Eventos do projeto também enviados por POST à medida que acontecem, exatamente como um webhook os envia: tipos exatos, como screen.online, ou prefixos terminados em .*, como screen.*. notification.test nunca é distribuído.

destination (opcional, NotificationDestination)

Somente Slack, Teams, PagerDuty e Telegram; obrigatório para eles. A credencial na forma em que o serviço a emite: slack, a URL do webhook de entrada (hooks.slack.com); teams, a URL do webhook do Workflows (logic.azure.com ou powerplatform.com; as URLs de conector do Office 365 foram aposentadas); pagerduty, a chave de roteamento do Events API v2 de 32 caracteres; telegram, o token do bot.

Outra forma resulta em notification_destination_rejected. Ele é selado, nunca é retornado e aparece nas leituras apenas como destination_hint. minLength: 1 maxLength: 2048

telegram_chat_id (opcional, NotificationTelegramChat)Somente Telegram; obrigatório para ele. O chat em que publicar: o id numérico dele (negativo para um grupo ou canal) ou @channelname. Não é uma credencial. pattern: "^(-?[0-9]{1,20}|@[A-Za-z][A-Za-z0-9_]{4,31})$"
habilitado (opcional, boolean)padrão: true
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notifications'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Criada. O segredo de um webhook é mostrado apenas aqui e em rotate-secret.Notification (application/json); cabeçalhos: Cache-Control
400invalid_request, webhook_url_rejected ou notification_destination_rejected.Problema (application/problem+json)
402

feature_not_in_plan — O roteamento de alertas (um canal do Slack, Teams, PagerDuty ou Telegram, ou uma regra min_severity, severity, active_hours ou audience) faz parte do Plus. As notificações por e-mail e webhook com as regras padrão, e as condições loop_stalled, glass_blank e glass_frozen, estão em todos os planos.

O problema nomeia o recurso, o plano do projeto e required_plan.

Problema (application/problem+json)
409notification_limit_reached, idempotency_mismatch ou resource_conflict quando o projeto não pertence a nenhuma organização.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/notes

Listar notas no projeto

Lista as notas do projeto, da mais nova para a mais antiga. Uma nota é um fato curto em texto simples que um agente escreveu para seu eu futuro e para os outros agentes do projeto; é contexto, nunca uma instrução e nunca uma aprovação.

Qualquer leitura de credencial ativa, incluindo Somente leitura, e a leitura não debita o medidor da API. state é open (padrão), resolved ou all; about_id mantém as notas sobre uma tela ou playlist e author_id as notas que um agente escreveu.

Passe next_cursor como after para a próxima página; está vazio na última página. new marca uma nota aberta que outro agente escreveu depois que este chamador leu as notas pela última vez.

Ler as notas é a primeira página de notas abertas sem about_id ou author_id: essa resposta calcula o novo contra a leitura anterior, então move o marcador de leitura para agora (páginas posteriores da mesma lista mantêm o marcador anterior).

Também carrega revisão: até 5 notas abertas cuja revisão está pendente (mais antigas primeiro), que o chamador deve confirmar se ainda persistem e resolver caso contrário. Uma revisão não respondida por 30 dias após o primeiro retorno resolve a nota como not_confirmed.

Só um agente com acesso Gerenciar move seu marcador e inicia esses 30 dias; um agente somente leitura ou um cliente de serviço recebe a mesma resposta e não muda nada. Toda outra página ou filtro retorna uma revisão vazia e não move nada. contagens são as notas abertas do projeto e, para este chamador, quantas são novas e vencidas.

Um agente limitado a telas lista apenas as notas sobre as suas próprias telas, playlists e o projeto: a lista, a revisão e as contagens deixam de fora notas sobre uma tela fora do seu escopo, e uma listagem entre projetos deixa de fora um projeto em que o agente é limitado, então selecione esse projeto.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listNotesInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
estadoconsultaopcional
about_idconsultaopcionalSó notas sobre esta tela ou playlist.
author_idconsultaopcionalSó notas que este agente escreveu.
depoisconsultaopcionalnext_cursor da página anterior.
limiteconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de notas, as notas para revisar e as contagens.NoteList (application/json)
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/notes

Adicionar nota no projeto

Adiciona uma nota para os agentes do projeto: um fato que outro agente agiria, nunca um relatório de progresso, chat ou segredo. O corpo tem de 1 a 2000 caracteres de texto simples após o corte e pode abranger linhas.

Texto contendo credencial (tokens, chaves, chaves privadas, senhas em URLs) é recusado com note_contains_credential e texto que parece uma instrução para um modelo com note_rejected; nada é armazenado e o detalhe nunca repete o texto. sobre nomes uma tela (incluindo arquivada) ou playlist do projeto, caso contrário not_found. ttl_seconds (3600 a 31536000) cria uma nota temporária que se resolve como expirada; uma nota sem isso aparece para revisão 90 dias após ser adicionada ou confirmada pela última vez. substitui nomes uma nota aberta que esta substitui: é resolvida como substituída na mesma transação (note_not_open quando já está resolvida).

Um corpo cujo texto normalizado (aparado, com espaços colapsados e em minúsculas) e cujo campo about correspondem a uma nota aberta confirma essa nota e a retorna com 200 em vez de adicionar uma; nenhum evento note.added é acrescentado. Uma organização mantém no máximo 200 notas abertas em todos os seus projetos; a 201ª é note_limit_reached, cujo detalhe nomeia até 5 notas para resolver primeiro.

Anexa note.added (e note.resolved para uma nota substituída) sem o texto. Uma repetição exata com a mesma Idempotency-Key retorna a primeira resposta por vinte e quatro horas.

Para um agente limitado a telas (docs/screen-scope.md), um about que é uma tela fora do seu escopo ou desconhecida para o projeto, ou um replaces que nomeia uma nota sobre uma tela fora do seu escopo, é outside_screen_scope (403) e nada é armazenado.

Autenticação
projectBearer
Corpo da solicitação
NoteWrite
ID da operação
addNoteInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
body (obrigatório, string)Texto simples, de 1 a 2000 caracteres após aparar; quebras de linha são mantidas. minLength: 1 maxLength: 2000
sobre (opcional, em linha)
ttl_seconds (opcional, inteiro)Expire a nota este tempo após ser adicionada. Sem isso, a nota é revisada após 90 dias. mínimo: 3600 máximo: 31536000
substitui (opcional, string)Uma nota aberta que esta substitui; ela é resolvida como substituída. padrão: "^(?:(?:stage|qa|development)_)?nte_[A-Za-z0-9_-]{16,24}$"
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/notes'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Adicionado.Nota (application/json)
200O texto correspondeu a uma nota aberta, que é confirmada e retornada.Nota (application/json)
400

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
403

outside_screen_scope - o chamador é limitado a telas e a tela, pasta de telas, seletor ou público que a requisição nomeia ou alcança está fora delas (docs/screen-scope.md). Um id fora do escopo e um id que não existe recebem a mesma resposta; errors[0].screen_scope traz o escopo do chamador, e a escrita é recusada por inteiro, nunca restringida.

Problema (application/problem+json)
404

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409note_not_open, note_limit_reached ou idempotency_mismatch.Problema (application/problem+json)
422note_contains_credential ou note_rejected.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/support/status

Status do suporte no projeto

Disponibilidade e horários para qualquer projeto ativo. chat_allowed é verdadeiro para todo projeto ativo, incluindo Standard. human_available é verdadeiro quando uma pessoa pode entrar no chat a pedido (Education, Premium e Enterprise); Standard e Plus têm documentação e suporte por IA. staffed indica se a equipe está em seu horário agora. Luna responde na hora em todos os planos.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
supportStatusInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/status'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do suporte.SupportStatus (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/support/conversations

Listar conversas de suporte no projeto

Conversas do projeto, mais recentes primeiro, no máximo 100. Contagens de não lidas da equipe são por pessoa ou agente autenticado.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listSupportConversationsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
beforeconsultaopcionalID da conversa do cursor próximo da página anterior.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Resultado do suporte.SupportConversationList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/support/conversations

Criar conversa de suporte no projeto

Disponível em todos os planos; Luna responde primeiro, na hora. Onde uma pessoa pode entrar (human_available no status do suporte), pedir uma pessoa pausa Luna para a equipe; no Standard e no Plus o pedido é ignorado e Luna responde. Verificado antes do armazenamento ou Slack.

Uma mensagem inicial com menos de 8 caracteres ou 3 palavras retorna submission_too_short; uma que não seja uma pergunta ou problema retorna submission_unclear; spam, texto com muitos links, injeção de prompt e texto inseguro retornam submission_rejected. Texto rejeitado não é mantido nem enviado para Luna, e o detalhe do problema nunca o repete.

Texto com formato de credencial que não seja credenciais ScreenRig (tokens bearer, chaves de nuvem e API, chaves privadas) é substituído por [redigido] antes do armazenamento; material de credencial ScreenRig retorna invalid_request. Uma nova conversa inicia um único tópico no Slack; acompanhamentos permanecem nele. Solicitações com a mesma chave são repetidas por 24 horas, incluindo recusa.

Autenticação
projectBearer
Corpo da solicitação
SupportWrite
ID da operação
createSupportConversationInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
Idempotency-Keycabeçalhoobrigatório

Campos do corpo da solicitação

CampoDescrição
body (obrigatório, string)minLength: 1 maxLength: 4000
human_requested (opcional, booleano)

Pedir uma pessoa, o que pausa Luna e aguarda a equipe. Só conta onde uma pessoa pode entrar (human_available: Education, Premium e Enterprise); no Standard e no Plus é ignorado e Luna responde. padrão: falso

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Idempotency-Key: REQUEST_ID' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/support/conversations'

Respostas

StatusSignificadoCorpo e cabeçalhos
201Resultado do suporte.SupportSubmission (application/json)
422A mensagem foi recusada pela triagem: submission_too_short ou submission_unclear (apenas a mensagem inicial) ou submission_rejected. O detalhe nunca repete o texto.Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/reviews

Listar avaliações no projeto

As revisões do projeto (docs/reviews.md): mudanças de playlist e tela propostas sob acesso Propor, e para uma rede de anúncios os criativos enviados pelos compradores (tipo ad_creative).

Mais recentes primeiro, no máximo limit (padrão 50, no máximo 100) por página; passe next_cursor de volta como cursor com os mesmos filtros. state pending (padrão), decided (todos os outros estados) ou all; kind restringe a um tipo.

Uma sessão do painel lê todos os tipos; um portador lê os tipos que suas capacidades cobrem (playlists para playlist_change, telas para screen_change, publicidade para ad_creative), e um tipo que não pode ler é uma página vazia. pending_count conta as revisões pendentes de todos os tipos que o chamador vê.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
listReviewsInProject

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
estadoconsultaopcional
kindconsultaopcional
limiteconsultaopcional
cursorconsultaopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/reviews'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Uma página de avaliações.ReviewList (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/card-data/{key}

Projeto Scoped_get Dados do Cartão

Retorna o documento e sua revisão. O ETag é a revisão, para If-Match na próxima gravação.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
projectScoped_getCardData

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
keycaminhoobrigatórioChave de dados do cartão. Não pode começar com feed:.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Documento de dados do cartãoCardDataEntry (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
PUT/api/projects/{project_id}/card-data/{key}

Projeto Scoped_put Dados do Cartão

Cria ou substitui um documento de dados de cartão. Quando colocações de cartão nas playlists do projeto vinculam a chave, o documento deve conter apenas as propriedades dinâmicas de cada cartão vinculado e validar contra elas; caso contrário, a gravação é recusada com card_data_invalid nomeando o cartão e o caminho da propriedade, e nada muda. Uma chave sem colocações vinculadas aceita qualquer objeto JSON.

Cada string que começa com media: é uma referência de mídia, media:<id>, para um cartão desenhar (uma foto); em qualquer chave deve nomear uma imagem pronta e aprovada neste projeto, no máximo 256 mídias distintas por documento, ou a gravação é recusada com card_media_invalid nomeando o caminho da propriedade e media_id.

Telas cujo conteúdo lê a chave podem então buscar esses mídias via GET /media/{media_id}. Telas exibindo um posicionamento que lê a chave recebem screen.card_data_changed e buscam novamente no local; o log do projeto registra kv.updated com um recurso card_data_entry, que nunca chega a um Player.

Limites, cotas, medição, revisões e idempotência são do armazenamento K/V da aplicação.

As gravações de agentes e webhooks também têm limite de taxa, por organização conforme o plano (Standard e Plus 60 por minuto, Education e Premium 600, Enterprise 3.000) e 60 por minuto por chave em todos os planos; uma gravação acima do limite é recusada com rate_limited e Retry-After, e não é medida.

Autenticação
projectBearer
Corpo da solicitação
CardDataWrite
ID da operação
projectScoped_putCardData

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
keycaminhoobrigatórioChave de dados do cartão. Não pode começar com feed:.
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para criar ou sobrescrever uma chave; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.

Campos do corpo da solicitação

CampoDescrição
documento (obrigatório, objeto)

O documento de dados do cartão: um objeto JSON de no máximo 1 MiB. Quando um posicionamento de cartão vincula a chave, ela mantém apenas as propriedades dinâmicas daquele cartão. Uma string que começa com media: é uma referência de mídia, media:<id>, nomeando uma imagem pronta e aprovada neste projeto.

expires_at (opcional, string)Expiração absoluta; dados omitidos nunca expiram. formato: "date-time"
ttl_seconds (opcional, inteiro)

TTL a partir da primeira gravação confirmada. Mutuamente exclusivo com expires_at. Uma nova tentativa preserva a expiração original. Omitir os dois limpa a expiração.

Dimensione-o pelo horário de quem grava: quando o documento de um cartão expira sem nenhuma gravação para renová-lo enquanto uma tela mostra o cartão, o cartão fica em branco e a condição de notificação card_data_stale avisa o projeto, então um job que parou é notado. minimum: 1 maximum: 31536000

Modelo e respostas da solicitação
shell · modelo de requisição
curl --request PUT --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Documento de dados do cartãoCardDataEntry (application/json)
429

Problema estável rate_limited. Refaça só após o intervalo Retry-After autoritativo. Negativas de janela fixa incluem também RateLimit-Policy e membros RateLimit aplicáveis; negativas de concorrência e orçamento de bytes omitem essas divulgações opcionais.

Problema (application/problem+json); cabeçalhos: Retry-After, RateLimit-Policy, RateLimit
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
EXCLUIR/api/projects/{project_id}/card-data/{key}

Projeto Scoped_delete Dados do Cartão

Exclui um documento de dados do cartão. Um cartão vinculado à chave fica oculto na tela até que um documento seja escrito novamente.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
projectScoped_deleteCardData

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
keycaminhoobrigatórioChave de dados do cartão. Não pode começar com feed:.
If-MatchcabeçalhoopcionalRevisão positiva opcional do recurso. Omitir para escrever o recurso atual; uma revisão obsoleta fornecida é revision_conflict.
Idempotency-KeycabeçalhoopcionalOmitir para uma operação nova. Forneça e reutilize uma chave para deduplicar tentativas; o CLI gerencia as chaves automaticamente.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/card-data/KEY'

Respostas

StatusSignificadoCorpo e cabeçalhos
204Excluídosem corpo
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/feeds/{family}

Projeto Scoped_get Feed

Lê um documento de feed compartilhado de terceiros: o mesmo documento que um cartão embutido com os mesmos parâmetros lê (docs/feeds.md).

Os parâmetros de consulta são normalizados na chave de feed do cartão, nomeada pelo cabeçalho ScreenRig-Feed-Key: weather, airquality e alerts recebem lat e lon (arredondados para uma célula de 0,25 grau); earthquakes lat, lon, radius_km (10 a 20000, 500 por padrão), min_magnitude (0 a 9, 2,5 por padrão) e hours (1 a 168, 24 por padrão); cyclones basins (separados por vírgula at, ep, cp, wp; todos por padrão) e opcionalmente lat, lon e radius_km (as tempestades perto desse lugar); tides station (um ID de estação de previsão de marés da NOAA, como 9414290) ou lat e lon (a estação mais próxima em 100 km, senão invalid_request); launches nenhum parâmetro (os próximos lançamentos no mundo todo); rates base (uma moeda de referência do BCE, EUR por padrão); crypto symbols (IDs da CoinGecko ou tickers, separados por vírgula, no máximo 20) e currency (usd por padrão); headlines url (uma URL RSS ou Atom http ou https); drugalerts (screenrig.drugalerts/v1) os relatórios de recall recentes de um país: country (us, ca ou gb, obrigatório) e category (drug, o padrão, ou food); respiratory (screenrig.respiratory/v1) a atividade semanal de gripe, COVID-19 e VSR de um lugar: country (us ou gb, obrigatório) e region (um estado, território ou DC dos EUA por nome ou código postal, ou a Inglaterra ou uma região da UKHSA; o país quando vazio).

A solicitação nunca chama o provedor. 200 é o documento (esquema, fetchedAt, atribuição e os campos da família, conforme definido pelo contrato dos cards); seu ETag é o sha256 dos bytes e If-None-Match responde 304; Cache-Control max-age vai até a próxima busca agendada. 202 significa que ainda não há documento: a demanda registrada de leitura, e o feed worker busca a chave em cerca de um minuto (Retry-After).

Uma leitura de API mantém uma chave buscada por 24 horas. Uma organização registra no máximo 50 novas chaves por dia em todos os seus projetos (rate_limited além disso). Uma família sem fonte nesta implantação responde not_found.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
projectScoped_getFeed

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
famíliacaminhoobrigatórioA família do feed.
latconsultaopcional
lonconsultaopcional
radius_kmconsultaopcional
min_magnitudeconsultaopcionalterremotos: a menor magnitude.
horasconsultaopcionalterremotos: a janela em horas.
basinsconsultaopcionalciclones: separados por vírgula em at, ep, cp, wp.
stationconsultaopcionaltides: um ID de estação de previsão de marés da NOAA, como 9414290. Sem ele, lat e lon escolhem a estação mais próxima em 100 km.
baseconsultaopcional
símbolosconsultaopcional
moedaconsultaopcional
urlconsultaopcional
countryconsultaopcionaldrugalerts: us, ca ou gb. respiratory: us ou gb. Os dois exigem.
categoryconsultaopcionaldrugalerts: drug (padrão) ou food.
regionconsultaopcionalrespiratory: um estado, território ou DC dos EUA por nome ou código postal, ou a Inglaterra ou uma região da UKHSA; o país quando vazio.
If-None-Matchcabeçalhoopcional
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/feeds/FAMILY'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Documento de feedFeedDocument (application/json); cabeçalhos: ETag, ScreenRig-Feed-Key
202Nenhum documento ainda; o worker do feed busca a chave na próxima passagem.FeedPending (application/json); cabeçalhos: Retry-After, ScreenRig-Feed-Key
304O documento corresponde a If-None-Match.sem corpo
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/advertising/networks/{seller_project_id}/inventory

Projeto Scoped_list Inventário Publicitário Associado

Inventário optado e slots reutilizáveis dentro da associação do chamador. Nunca expõe capturas de tela, playlists ou dados de projeto do vendedor.

Autenticação
projectBearer OU dashboardSession
Corpo da solicitação
nenhum
ID da operação
projectScoped_listAdvertisingJoinedInventory

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
seller_project_idcaminhoobrigatório
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/projects/PROJECT_ID/advertising/networks/SELLER_PROJECT_ID/inventory'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Inventário e slots permitidos.AdvertisingJoinedInventory (application/json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
GET/api/projects/{project_id}/agents/self

Projeto Scoped_get Agente Atual

Retorna a instalação do agente vinculada ao portador do projeto que chama, além de connection_ready. Um projeto está pronto quando pelo menos um membro tem passkey ou senha. O status de identidade é diagnóstico e não debita o medidor da API.

Autenticação
projectBearer
Corpo da solicitação
nenhum
ID da operação
projectScoped_getCurrentAgent

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self'

Respostas

StatusSignificadoCorpo e cabeçalhos
200Prontidão da conexão do agente e projeto atuais.AgentSelfStatus (application/json); cabeçalhos: Cache-Control
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
POST/api/projects/{project_id}/agents/self/disconnect

Projeto Scoped_disconnect Agente Atual

Revoga apenas a associação do projeto que está fazendo a chamada e seu token de projeto, preservando a identidade global, outras associações, projeto e conteúdo. Repetir com o mesmo portador revogado criptograficamente válido é uma operação sem efeito com sucesso. Desconectar o último agente ativo retorna agent_lockout_risk, a menos que allow_last_agent seja explícito. Não debita o medidor da API.

Um JWT de acesso de agente, incluindo Somente leitura, desconecta o agente do projeto do seu token; a associação termina, o consentimento do projeto deixa os grants do agente e esse par identidade/projeto é cortado para tokens de acesso mais antigos. Outros projetos no token continuam funcionando. Uma nova tentativa com o mesmo JWT após a desconexão é um sucesso sem efeito.

Autenticação
revocableAgentBearer
Corpo da solicitação
AgentDisconnectRequest
ID da operação
projectScoped_disconnectCurrentAgent

Parâmetros

NomeEnviarObrigatório?Descrição
project_idcaminhoobrigatório
ScreenRig-ProjectcabeçalhoopcionalObsoleto por uma versão. Deve ser consistente com as concessões de projetos JWT; adiciona cabeçalhos Deprecation e Warning. Sem troca de token.

Campos do corpo da solicitação

CampoDescrição
allow_last_agent (opcional, booleano)Aceita explicitamente a perda do último portador ativo do agente. Uma passkey de dashboard registrada permanece autoridade administrativa independente. padrão: falso
Modelo e respostas da solicitação
shell · modelo de requisição
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/projects/PROJECT_ID/agents/self/disconnect'

Respostas

StatusSignificadoCorpo e cabeçalhos
204Agente desconectado.sem corpo; cabeçalhos: Cache-Control
401

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
409

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)
padrão

Resposta de problema estável RFC 9457. Um 421 server_draining tem Retry-After de 1 segundo, um 500 not_ready ou dependency_unavailable tem 5, e um 500 manifest_degraded tem 60, a menos que o handler defina valor mais específico.

Problema (application/problem+json)