curl --request GET \
--url https://api.olie.ai/api/management/goals \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.olie.ai/api/management/goals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.olie.ai/api/management/goals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.olie.ai/api/management/goals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.olie.ai/api/management/goals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.olie.ai/api/management/goals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olie.ai/api/management/goals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"goals": [
{
"id": "9b2d1f4a-3c5e-4a7b-8d9f-1e2c3a4b5c6d",
"title": "Projetos criados no mês",
"description": "Total de novos projetos abertos no período.",
"status": "active",
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"periodicity": 30,
"type": "projects_created",
"user_id": null,
"funnel_step_id": null,
"target": 50,
"unit": "count",
"comparison_mode": "target",
"progress": 32,
"children": [],
"progress_change_percentage": 14,
"percentage": 64,
"results_count": 4,
"is_past_calculable": true,
"created_at": "2026-01-06T14:45:51.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
},
{
"id": "7a1c8e2b-9d4f-4e6a-b3c7-5f8d2a1b9c0e",
"title": "Faturamento trimestral",
"description": null,
"status": "active",
"start_date": "2026-01-01",
"end_date": null,
"periodicity": 90,
"type": "composite",
"user_id": null,
"funnel_step_id": null,
"target": 100000,
"unit": "currency",
"comparison_mode": "target",
"progress": 48000,
"children": [
{
"id": "1f3b6d9c-2e5a-4c8b-9a7d-3e6f1b2c4d5e",
"title": "Vendas via funil de marketing",
"description": null,
"status": "active",
"start_date": "2026-01-01",
"end_date": null,
"periodicity": 90,
"type": "funnel_steps_links",
"user_id": null,
"funnel_step_id": 310,
"target": 60000,
"unit": "currency",
"comparison_mode": "target",
"progress": 30000,
"progress_change_percentage": 0,
"percentage": 50,
"is_past_calculable": true,
"created_at": "2026-01-06T14:50:10.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
}
],
"progress_change_percentage": 8,
"percentage": 48,
"results_count": 1,
"is_past_calculable": false,
"created_at": "2026-01-06T15:02:44.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 30,
"to": 2,
"total": 2
},
"response": true
}{
"response": false,
"message": "invalid_filter_query",
"error": "Requested filter(s) `owner` are not allowed. Allowed filter(s) are `title, status, type, comparison_mode, periodicity, user_id, funnel_step_id, start_date_gte, end_date_lte, trashed`.",
"allowed_filters": [
"title",
"status",
"type",
"comparison_mode",
"periodicity",
"user_id",
"funnel_step_id",
"start_date_gte",
"end_date_lte",
"trashed"
],
"unknown_filters": [
"owner"
]
}{
"response": false,
"message": "permission_required",
"error": "An permission is required to that action",
"permission": "goals.index"
}Listar metas
Retorna a lista paginada de metas, ordenada por status (ativas primeiro) e, dentro de cada status, da mais recente para a mais antiga. Cada meta traz suas metas filhas, a contagem de resultados já apurados e a variação percentual do progresso em relação ao último resultado. Aceita paginação e filtros básicos.
curl --request GET \
--url https://api.olie.ai/api/management/goals \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.olie.ai/api/management/goals"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.olie.ai/api/management/goals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.olie.ai/api/management/goals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.olie.ai/api/management/goals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.olie.ai/api/management/goals")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olie.ai/api/management/goals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"goals": [
{
"id": "9b2d1f4a-3c5e-4a7b-8d9f-1e2c3a4b5c6d",
"title": "Projetos criados no mês",
"description": "Total de novos projetos abertos no período.",
"status": "active",
"start_date": "2026-01-01",
"end_date": "2026-12-31",
"periodicity": 30,
"type": "projects_created",
"user_id": null,
"funnel_step_id": null,
"target": 50,
"unit": "count",
"comparison_mode": "target",
"progress": 32,
"children": [],
"progress_change_percentage": 14,
"percentage": 64,
"results_count": 4,
"is_past_calculable": true,
"created_at": "2026-01-06T14:45:51.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
},
{
"id": "7a1c8e2b-9d4f-4e6a-b3c7-5f8d2a1b9c0e",
"title": "Faturamento trimestral",
"description": null,
"status": "active",
"start_date": "2026-01-01",
"end_date": null,
"periodicity": 90,
"type": "composite",
"user_id": null,
"funnel_step_id": null,
"target": 100000,
"unit": "currency",
"comparison_mode": "target",
"progress": 48000,
"children": [
{
"id": "1f3b6d9c-2e5a-4c8b-9a7d-3e6f1b2c4d5e",
"title": "Vendas via funil de marketing",
"description": null,
"status": "active",
"start_date": "2026-01-01",
"end_date": null,
"periodicity": 90,
"type": "funnel_steps_links",
"user_id": null,
"funnel_step_id": 310,
"target": 60000,
"unit": "currency",
"comparison_mode": "target",
"progress": 30000,
"progress_change_percentage": 0,
"percentage": 50,
"is_past_calculable": true,
"created_at": "2026-01-06T14:50:10.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
}
],
"progress_change_percentage": 8,
"percentage": 48,
"results_count": 1,
"is_past_calculable": false,
"created_at": "2026-01-06T15:02:44.000000Z",
"updated_at": "2026-01-20T09:12:03.000000Z",
"deleted_at": null
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 30,
"to": 2,
"total": 2
},
"response": true
}{
"response": false,
"message": "invalid_filter_query",
"error": "Requested filter(s) `owner` are not allowed. Allowed filter(s) are `title, status, type, comparison_mode, periodicity, user_id, funnel_step_id, start_date_gte, end_date_lte, trashed`.",
"allowed_filters": [
"title",
"status",
"type",
"comparison_mode",
"periodicity",
"user_id",
"funnel_step_id",
"start_date_gte",
"end_date_lte",
"trashed"
],
"unknown_filters": [
"owner"
]
}{
"response": false,
"message": "permission_required",
"error": "An permission is required to that action",
"permission": "goals.index"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filtra pelo título da meta (correspondência parcial, sem diferenciar maiúsculas).
Filtra pelo status exato. Valores aceitos: active, inactive, completed.
active, inactive, completed Filtra pelo tipo exato. Valores aceitos: manual, projects_created, projects_created_by_user, funnel_steps_links, funnel_steps_links_by_user, composite.
Filtra pelo modo de comparação exato. Valores aceitos: target (atingir o alvo), limit (não ultrapassar o alvo).
Filtra pela periodicidade exata, em dias. Use 0 para as metas que apuram o intervalo inteiro de uma vez.
Filtra as metas restritas ao usuário informado (ID UUID). Só retorna metas dos tipos projects_created_by_user e funnel_steps_links_by_user.
Filtra as metas que apuram a etapa de funil informada (ID numérico). Só retorna metas dos tipos funnel_steps_links e funnel_steps_links_by_user.
Retorna as metas com data de início maior ou igual à data informada (YYYY-MM-DD).
Retorna as metas com data de término menor ou igual à data informada (YYYY-MM-DD).
Controla as metas removidas. Valores aceitos: with (inclui as removidas), only (apenas as removidas). Sem o parâmetro, as removidas ficam de fora.
Ordenação: nome do campo para crescente ou prefixado com '-' para decrescente; vários campos separados por vírgula. Campos aceitos: title, status, created_at, updated_at, start_date, end_date, target, progress, periodicity. Padrão: status,-created_at.
Número da página. Padrão 1.
Quantidade de metas por página. Padrão 30, máximo 100.
Was this page helpful?