{"openapi":"3.1.0","info":{"title":"Reduto Live API","version":"1.0.0","description":"API pública do Reduto Live: leia os dados públicos do seu canal e, com a permissão certa, faça ações na live, na agenda, no chat e no feed da comunidade. Cada espaço cria as próprias chaves no painel."},"servers":[{"url":"https://reduto.live/api"}],"security":[{"chave":[]}],"components":{"securitySchemes":{"chave":{"type":"http","scheme":"bearer","description":"Mande a chave no cabeçalho \"Authorization: Bearer rdt_...\"."},"oauth":{"type":"oauth2","description":"Aplicativos conectados pelo OAuth (código com PKCE). A dona ou um admin escolhe o espaço e as permissões na tela do Reduto.","flows":{"authorizationCode":{"authorizationUrl":"https://reduto.live/desenvolvedores/autorizar","tokenUrl":"https://reduto.live/api/oauth/token","refreshUrl":"https://reduto.live/api/oauth/token","scopes":{"read":"Ler os dados públicos do canal","moments":"Marcar momento na live","polls":"Abrir enquete no chat","schedule":"Criar e apagar horários da agenda","pin":"Fixar recado no chat","feed":"Postar no feed da comunidade"}}}}}},"paths":{"/v1/channel":{"get":{"operationId":"get_channel","summary":"Ver o canal","description":"Nome, endereço e cor do canal, se está ao vivo agora, o título da live, quantas pessoas assistem e quantos seguidores tem.\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/v1/lives":{"get":{"operationId":"list_lives","summary":"Listar lives","description":"As lives mais recentes, com começo, fim e o pico de público.\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}]}},"/v1/schedule":{"get":{"operationId":"list_schedule","summary":"Ver os horários","description":"Os próximos horários de live marcados pelo criador.\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}},"post":{"operationId":"create_schedule","summary":"Marcar horário","description":"Põe um horário novo na agenda da live (título, começo com fuso e duração de 15 minutos a 24 horas). O começo precisa ser no futuro, até um ano à frente.\n\nPermissão necessária: schedule.","security":[{"chave":[]},{"oauth":["schedule"]}],"responses":{"201":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":2,"maxLength":140},"startsAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"minutes":{"default":120,"type":"integer","minimum":15,"maximum":1440}},"required":["title","startsAt"]}}}}}},"/v1/videos":{"get":{"operationId":"list_videos","summary":"Listar vídeos","description":"As gravações publicadas no canal, das mais novas para as mais antigas.\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}]}},"/v1/clips":{"get":{"operationId":"list_clips","summary":"Listar cortes","description":"Os cortes publicados no canal, com o formato (horizontal ou vertical).\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}]}},"/v1/posts":{"get":{"operationId":"list_posts","summary":"Listar posts","description":"Os posts publicados no blog do canal (os só para assinantes aparecem sem o texto).\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}]}},"/v1/stats":{"get":{"operationId":"get_stats","summary":"Ver os números públicos","description":"Seguidores, membros da comunidade, lives e horas no ar nos últimos 30 dias e quantos vídeos, cortes e posts há.\n\nPermissão necessária: read.","security":[{"chave":[]},{"oauth":["read"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/v1/moments":{"post":{"operationId":"mark_moment","summary":"Marcar momento","description":"Marca o momento atual da live (vira sugestão de corte quando a gravação ficar pronta). Só funciona com a live no ar.\n\nPermissão necessária: moments.","security":[{"chave":[]},{"oauth":["moments"]}],"responses":{"201":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"default":"","type":"string","maxLength":80}}}}}}}},"/v1/polls":{"post":{"operationId":"open_poll","summary":"Abrir enquete","description":"Abre uma enquete na sala principal do chat, com de 2 a 5 opções. O resultado aparece no chat e na tela da live.\n\nPermissão necessária: polls.","security":[{"chave":[]},{"oauth":["polls"]}],"responses":{"201":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":140},"options":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}}},"required":["question","options"]}}}}}},"/v1/schedule/{id}":{"delete":{"operationId":"delete_schedule","summary":"Apagar horário","description":"Tira um horário da agenda da live pelo id (o id vem em \"Ver os horários\").\n\nPermissão necessária: schedule.","security":[{"chave":[]},{"oauth":["schedule"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":100}}]}},"/v1/chat/pin":{"post":{"operationId":"pin_message","summary":"Fixar recado no chat","description":"Manda um recado do canal na sala principal do chat e deixa fixado no topo (até 200 letras). Troca o recado fixado antes.\n\nPermissão necessária: pin.","security":[{"chave":[]},{"oauth":["pin"]}],"responses":{"201":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":200}},"required":["text"]}}}}},"delete":{"operationId":"unpin_message","summary":"Tirar recado fixado","description":"Tira a mensagem fixada no topo da sala principal do chat.\n\nPermissão necessária: pin.","security":[{"chave":[]},{"oauth":["pin"]}],"responses":{"200":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/v1/feed":{"post":{"operationId":"create_feed_post","summary":"Postar no feed","description":"Publica um post no feed da comunidade em nome do canal: para todos, só membros ou só assinantes.\n\nPermissão necessária: feed.","security":[{"chave":[]},{"oauth":["feed"]}],"responses":{"201":{"description":"Deu certo. A resposta vem em \"data\".","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Confira os campos e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Chave da API ausente, errada ou revogada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"403":{"description":"Esta chave não tem permissão para isso. Crie outra chave com a permissão.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"429":{"description":"Muitas chamadas em pouco tempo para o plano do espaço. Espere um pouco e tente de novo.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000},"visibility":{"default":"everyone","type":"string","enum":["everyone","members","subscribers"]}},"required":["text"]}}}}}}},"x-webhook-events":["live.started","live.ended","tip.created","subscription.created","member.joined"]}