Reten Docs
Resultados de Atividades

Criar Resultado de Atividade

Criar o resultado de uma atividade de tarefa.

POST /api/activity-results/tasks

Cria um resultado para uma atividade de tarefa a partir do app interno de admin/operador. Os resultados podem ser vinculados a uma atividade existente do Reten (informando activity_id) ou criados como entradas independentes (omitindo-o).

Auth: Obrigatória — headers Authorization: Bearer <token> + x-tenant-id + x-project-id, com a permissão activity-result:submit.

Este é o endpoint interno. Provedores externos usam o endpoint de parceiro POST /api/integration/activity-results/tasks, que tem um formato de requisição diferente e é autenticado com x-api-key.

Corpo da Requisição

Todos os campos estão em snake_case.

CampoTipoObrigatórioDescrição
activity_idUUIDNãoID da atividade no Reten. Omita para criar um resultado STANDALONE não vinculado a uma atividade existente.
commerce_idUUIDNãoID interno do comércio no Reten.
channelenumNãoCanal pelo qual a atividade foi acionada. Um de SALESMAN, CALLCENTER, WHATSAPP, EMAIL, SMS, PUSH.
resultstringSimCode do tipo de resultado (ex.: success, not_home). Padrão ^[a-zA-Z0-9_-]+$, máx. 100 caracteres.
commentstringNãoComentário em texto livre, máx. 500 caracteres.
future_scheduled_atISO 8601CondicionalObrigatório apenas quando o tipo de resultado selecionado exige uma data de acompanhamento.

Exemplo

curl -X POST https://api.reten.ai/api/activity-results/tasks \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "x-project-id: <project-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "activity_id": "ee0e8400-e29b-41d4-a716-446655440000",
    "channel": "SALESMAN",
    "result": "success",
    "comment": "Order placed successfully"
  }'
const response = await fetch("https://api.reten.ai/api/activity-results/tasks", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>",
    "x-tenant-id": "<tenant-id>",
    "x-project-id": "<project-id>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    activity_id: "ee0e8400-e29b-41d4-a716-446655440000",
    channel: "SALESMAN",
    result: "success",
    comment: "Order placed successfully",
  }),
});
const result = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/activity-results/tasks",
    headers={
        "Authorization": "Bearer <token>",
        "x-tenant-id": "<tenant-id>",
        "x-project-id": "<project-id>",
    },
    json={
        "activity_id": "ee0e8400-e29b-41d4-a716-446655440000",
        "channel": "SALESMAN",
        "result": "success",
        "comment": "Order placed successfully",
    },
)
result = response.json()

Resposta 201 Created

O endpoint interno retorna diretamente a entidade enriquecida do resultado de atividade. O subconjunto representativo:

{
  "id": "770e8400-e29b-41d4-a716-446655440000",
  "projectId": "3f6c2b1a-8d4e-4f7a-9b2c-5e1d0a7f6c34",
  "source": "RETEN_ACTIVITY",
  "origin": "PLATFORM",
  "activityId": "ee0e8400-e29b-41d4-a716-446655440000",
  "commerceId": "c1d2e3f4-a5b6-7890-cdef-1234567890ab",
  "resultStatus": "COMPLETED",
  "occurredAt": "2026-04-11T10:30:00.000Z",
  "createdAt": "2026-04-11T10:30:05.000Z",
  "updatedAt": "2026-04-11T10:30:05.000Z",
  "taskDetails": {
    "comment": "Order placed successfully",
    "futureScheduledAt": null,
    "result": {
      "code": "success",
      "label": "Éxito"
    }
  }
}

Notas

  • Se activity_id corresponder a uma atividade existente, source é RETEN_ACTIVITY; se omitido, source é STANDALONE.
  • O status da atividade associada ao resultado passa a completado (independentemente de o resultado ser positivo ou negativo, por exemplo "sem venda" ou "reagendar para outro dia").