Pular para o conteúdo principal
POST
/
api
/
instance
/
s3
/
:instance
Definir S3
curl --request POST \
  --url https://api.example.com/api/instance/s3/:instance \
  --header 'Content-Type: <content-type>' \
  --header 'token: <token>' \
  --data '
{
  "enabled": true,
  "region": "<string>",
  "bucket": "<string>",
  "accessKey": "<string>",
  "secretKey": "<string>",
  "endpoint": "<string>",
  "pathPrefix": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt

Use this file to discover all available pages before exploring further.

Auth: TokenAccount ou TokenInstanceRate-limit: Global (100/min) • Idempotente: sim

Descrição

Configura o storage S3 da instância. secretKey é encriptado at-rest e nunca retornado. Para storage compatível com S3 (MinIO, Backblaze, DO Spaces), preencha endpoint com a URL.

Exemplos

AWS S3

Aponta o storage para AWS S3 oficial: bucket ryzeapi-media em us-east-1, com endpoint vazio para usar o domínio padrão da AWS e prefixo media/myinstance/ para isolar os arquivos.
curl -X POST "https://ryzeapi.cloud/api/instance/s3/minha-instancia" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "region": "us-east-1",
    "bucket": "ryzeapi-media",
    "accessKey": "AKIA...",
    "secretKey": "secret-redacted",
    "endpoint": "",
    "pathPrefix": "media/myinstance/"
  }'

MinIO self-hosted

Mesmo formato do AWS, mas com endpoint apontando para um MinIO interno (https://minio.interno.empresa.com). O mesmo padrão funciona para DigitalOcean Spaces, Backblaze B2 e outros storages compatíveis com S3.
curl -X POST "https://ryzeapi.cloud/api/instance/s3/minha-instancia" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "region": "us-east-1",
    "bucket": "whatsapp",
    "endpoint": "https://minio.interno.empresa.com",
    "accessKey": "minioadmin",
    "secretKey": "minioadmin",
    "pathPrefix": "ryzeapi/"
  }'

Desabilitar

Envia apenas enabled: false para desativar o storage e apagar as credenciais do banco. Para reabilitar depois é necessário reenviar todos os campos novamente.
curl -X POST "https://ryzeapi.cloud/api/instance/s3/minha-instancia" \
  -H "token: $Token_Instance" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'

Resposta de sucesso

200 OK
{
  "success": true,
  "message": "S3 configuration updated",
  "s3": {
    "enabled": true,
    "region": "us-east-1",
    "bucket": "ryzeapi-media",
    "accessKey": "AKIA...",
    "endpoint": "",
    "pathPrefix": "media/myinstance/"
  }
}
secretKey não aparece na resposta, o servidor nunca devolve a chave em plaintext.

Path parameters

instance
string
obrigatório
Nome da instância.

Headers

token
string
obrigatório
TokenAccount ou TokenInstance.
Content-Type
string
obrigatório
application/json.

Request body

enabled
boolean
obrigatório
Ativa/desativa o S3 da instância. false zera todos os campos.
region
string
Região (ex.: us-east-1).
bucket
string
Nome do bucket (deve existir, não há criação).
accessKey
string
Access Key ID.
secretKey
string
Secret Access Key. Encriptada at-rest.
endpoint
string
Endpoint custom (MinIO, DO Spaces, Backblaze). Vazio para AWS S3 oficial.
pathPrefix
string
Prefixo de path (ex.: media/myinstance/).

Notas

Não há teste de credenciais. O endpoint salva a config sem validar se o bucket existe ou se as credenciais funcionam, o erro só aparece quando o próximo upload de mídia tentar autenticar (visível nos logs do servidor).
Desabilitar (enabled=false) apaga as credenciais do banco. Para reabilitar depois, é necessário reenviar todos os campos.

Erros

HTTPerror.messageQuando
400Invalid request bodyJSON malformado.
401Invalid tokenToken ausente ou inválido.
404Instance not foundNome não existe.
429Rate limit exceeded. Try again later.Mais de 100 req/min.
500Failed to update S3 configurationErro de banco.
{
  "success": false,
  "error": {
    "message": "Failed to update S3 configuration"
  }
}