---
title: "Criar uma meta"
method: POST
path: "/api/management/goals"
tags: ["goals"]
---

# Criar uma meta

`POST /api/management/goals`

Cria uma meta e já calcula o progresso inicial dela. Os campos de recorte (`user_id`, `funnel_step_id`) e a lista de metas filhas (`children`) só são aceitos preenchidos nos tipos que os exigem; nos demais tipos eles devem ir nulos ou vazios. Metas do tipo `manual` informam o progresso no próprio corpo.

## Request body

- object — Dados da nova meta. Campos fora desta lista são ignorados.
  - `title` string, required — Título da meta. Até 90 caracteres.
  - `description` string, nullable — Descrição livre da meta. Até 255 caracteres.
  - `status` 'active' | 'inactive' | 'completed' — Situação da meta: active (em apuração), inactive (pausada, sem cálculo automático) ou completed (encerrada). Quando omitido na criação, a meta nasce inactive.
  - `type` 'manual' | 'projects_created' | 'projects_created_by_user' | 'funnel_steps_links' | 'funnel_steps_links_by_user' | 'composite', required — Tipo da meta, que define como o progresso é apurado: manual (informado à mão), projects_created (projetos criados), projects_created_by_user (projetos criados por um usuário), funnel_steps_links (entradas em uma etapa de funil), funnel_steps_links_by_user (entradas em uma etapa de funil feitas por um usuário) e composite (soma do progresso das metas filhas).
  - `user_id` string, uuid, nullable — Usuário ao qual a meta fica restrita. Obrigatório nos tipos projects_created_by_user e funnel_steps_links_by_user e proibido nos demais (envie nulo). O usuário precisa fazer parte da empresa.
  - `funnel_step_id` integer, nullable — Etapa de funil apurada pela meta. Obrigatório nos tipos funnel_steps_links e funnel_steps_links_by_user e proibido nos demais (envie nulo).
  - `start_date` string, date, required — Data de início da apuração, no formato YYYY-MM-DD.
  - `end_date` string, date, nullable — Data de término da apuração, no formato YYYY-MM-DD. Precisa ser posterior a start_date. Nulo deixa a meta sem prazo final.
  - `periodicity` integer, nullable — Tamanho de cada período de apuração, em dias (0 a 365). Use 0 para apurar o intervalo inteiro de uma vez, sem quebrar em períodos.
  - `target` integer, required — Valor alvo da meta, na unidade indicada em unit. Mínimo 1.
  - `unit` 'count' | 'currency' | 'percentage' — Unidade do alvo e do progresso: count (quantidade), currency (valor monetário) ou percentage (porcentagem). Padrão count.
  - `comparison_mode` 'target' | 'limit' — Leitura do alvo: target quando a meta é atingir o valor, limit quando a meta é não ultrapassá-lo. Padrão target.
  - `progress` integer — Progresso da meta. Só é aceito (e passa a ser obrigatório) em metas do tipo manual com status active; nos demais casos é ignorado, porque o progresso é calculado pelo sistema.
  - `children` string[] — IDs das metas que compõem esta meta. Obrigatório no tipo composite e proibido nos demais (envie uma lista vazia). Não aceita IDs repetidos, nem a própria meta ou alguma de suas metas-pai, para não criar ciclo.

## Response `200`

Sucesso

- object — Meta criada.
  - `response` boolean — Indicador de sucesso da requisição. Sempre true nas respostas bem-sucedidas.
  - `goal` object — Dados da meta. As metas filhas (children) e a contagem de resultados (results_count) não vêm nesta resposta.
    - `id` string, uuid — ID da meta.
    - `title` string — Título da meta.
    - `description` string, nullable — Descrição livre da meta.
    - `status` 'active' | 'inactive' | 'completed' — Situação da meta: active (em apuração), inactive (pausada, sem cálculo automático) ou completed (encerrada).
    - `start_date` string, date — Data de início da apuração, no formato YYYY-MM-DD.
    - `end_date` string, date, nullable — Data de término da apuração, no formato YYYY-MM-DD. Nulo quando a meta não tem prazo final.
    - `periodicity` integer, nullable — Tamanho de cada período de apuração, em dias (0 a 365). Use 0 para apurar o intervalo inteiro de uma vez, sem quebrar em períodos.
    - `type` 'manual' | 'projects_created' | 'projects_created_by_user' | 'funnel_steps_links' | 'funnel_steps_links_by_user' | 'composite' — Tipo da meta, que define como o progresso é apurado: manual (informado à mão), projects_created (projetos criados), projects_created_by_user (projetos criados por um usuário), funnel_steps_links (entradas em uma etapa de funil), funnel_steps_links_by_user (entradas em uma etapa de funil feitas por um usuário) e composite (soma do progresso das metas filhas).
    - `user_id` string, uuid, nullable — Usuário ao qual a meta está restrita. Preenchido apenas nos tipos projects_created_by_user e funnel_steps_links_by_user.
    - `funnel_step_id` integer, nullable — Etapa de funil apurada pela meta. Preenchido apenas nos tipos funnel_steps_links e funnel_steps_links_by_user.
    - `target` integer, nullable — Valor alvo da meta, na unidade indicada em unit.
    - `unit` 'count' | 'currency' | 'percentage' — Unidade do alvo e do progresso: count (quantidade), currency (valor monetário) ou percentage (porcentagem).
    - `comparison_mode` 'target' | 'limit' — Leitura do alvo: target quando a meta é atingir o valor, limit quando a meta é não ultrapassá-lo.
    - `progress` integer — Progresso apurado no período corrente.
    - `progress_change_percentage` number — Variação percentual do progresso atual em relação ao último resultado apurado. Vale 0 quando não há resultado anterior carregado.
    - `percentage` integer — Percentual do alvo já alcançado, arredondado para baixo.
    - `is_past_calculable` boolean — Indica se a meta consegue recalcular períodos passados. Falso nos tipos manual e composite.
    - `created_at` string, date-time — Momento em que a meta foi criada.
    - `updated_at` string, date-time — Momento da última alteração da meta.
    - `deleted_at` string, date-time, nullable — Momento em que a meta foi removida por soft delete. Nulo enquanto a meta existir.

## Other responses

- `422` — Erro de validação

## Changes

- **2026-09-22** `d71b18b1685d` — 11 breaking, 19 warning, 13 info
  - added the new required request property `start_date`
  - added the new required request property `target`
  - added the new required request property `title`
  - added the new required request property `type`
  - …39 more
- **2026-09-22** `b43a04f35145` — 3 warning
  - removed the optional property `goal/deleted_at` from the response with the `200` status
  - removed the optional property `goal/funnel_step_id` from the response with the `200` status
  - removed the optional property `goal/user_id` from the response with the `200` status
- **2026-09-18** `3202abfa17f9` — 2 info
  - added the media type `application/json` for the response with the status `200`
  - added the non-success response with the status `422`
- **2026-06-15** `4a6533a99914` — 4 breaking, 6 warning
  - added the new required request property `oneOf[subschema #3: Meta de Projetos Criados por Usuário]/user_id`
  - added the new required request property `oneOf[subschema #4: Meta de Projetos em Etapa]/funnel_step_id`
  - added the new required request property `oneOf[subschema #5: Meta de Projetos em Etapa por Usuário]/funnel_step_id`
  - added the new required request property `oneOf[subschema #5: Meta de Projetos em Etapa por Usuário]/user_id`
  - …6 more
- …earlier changes not shown

[Full history](https://skmtc.dev/olie-ai/apis/olie-api/changes/api/management/goals/post.md)

---

[API](https://skmtc.dev/olie-ai/apis/olie-api.md) · [All operations](https://skmtc.dev/olie-ai/apis/olie-api/llms.txt) · [OpenAPI document](https://skmtc.dev/olie-ai/apis/olie-api/revisions/d7bda7d32f67?raw)
