Skip to content

Grava onde a pessoa parou e a sessão de escuta

PUT/api/media-episodes/{id}/progress

Auth
Requires a token
Who can call it:
owner
admin
API key:
podcasts:write
X-CommunityId
X-CommunityId Send the X-CommunityId of the community the operation happens in.
Endpoint descriptions come straight from the API specification and are in Portuguese for now. The interface around them is translated.

Retomada em qualquer aparelho: uma posição a menos de ~10 s da anterior é ignorada (`ignored: throttled`), menos no fim; nos últimos 5% a posição zera e o próximo play recomeça do início. Chegar a 90% ouvindo conclui o episódio (pontos uma vez): o quanto se ouviu avança no máximo no ritmo do relógio (até 2x e uma folga), então pular para o fim move a retomada, não conclui. Com `sessionId` (um id do player por play) e `listenedSeconds` (segundos do episódio ouvidos nessa sessão): o servidor aceita no máximo 2x o tempo que passou desde o primeiro play da pessoa neste episódio (todas as sessões juntas, com uma folga só) e nunca mais que a duração; concluir exige ouvir 90% da duração. O play conta com 30 s ouvidos e 30 s de sessão, no máximo um por pessoa e episódio a cada 30 min. `durationSeconds` vale só para o próprio progresso; preenche o episódio sem duração apenas quando quem envia é owner, admin ou apresentador.

Parameters

NameInTypeDescription
idrequiredpathstring (uuid)

Headers

NameTypeDescription
X-CommunityIdoptionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Request body application/json

NameTypeDescription
positionSecondsrequiredinteger≥ 0
durationSecondsoptionalinteger≥ 1
sessionIdoptionalstring
listenedSecondsoptionalinteger≥ 0

Responses

StatusDescription
200O progresso: `resumeAt`, `maxPositionSeconds`, `completed`, `saved`, `ignored` e `play` (`listenedSeconds`, `counted`).
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.

curl example

curl -X PUT "https://api.memberfy.net/api/media-episodes/<id>/progress" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"positionSeconds":0}'