# Como Agendar uma Reunião via API

Este artigo explica como utilizar o endpoint público `/calendarmeeting` da API SprintHub para agendar reuniões automaticamente com base em um calendário criado na plataforma.

***

#### ✅ Visão Geral

O endpoint `/calendarmeeting` permite agendar reuniões diretamente em um link de calendário, usando dados de um lead já existente ou criando um novo lead automaticamente com os dados enviados.

> 📌 **Este endpoint é público.** Não exige autenticação (`apitoken` ou `Authorization`) — mas requer que a chamada seja feita dentro do contexto correto da instância.

```
POST https://sprinthub-api-master.sprinthub.app/calendarmeeting?i=nome_da_instancia

```

#### 🔑 Parâmetros obrigatórios

| Parâmetro | Tipo   | Onde vai | Descrição                                        |
| --------- | ------ | -------- | ------------------------------------------------ |
| `i`       | string | query    | Nome da instância (ex: `suporte`)                |
| `keyName` | string | body     | ID do calendário, obtido na URL pública do link  |
| `date`    | string | body     | Data e hora da reunião no formato ISO 8601 (UTC) |

#### 🧾 Estrutura do Body

**🔹 Opção 1 – Agendar criando um novo lead**

```json
{
  "keyName": "TGcbitBqLjqmmp5tRzlX3",
  "leadId": null,
  "opportunityId": null,
  "date": "2025-06-27T15:30:00.000Z",
  "formData": {
    "firstname": "Wanderson Fernandes",
    "email": "emailteste@sprinthub.com"
  },
  "properties": {}
}

```

🔹 Opção 2 – Agendar para um lead já existente

```json
{
  "keyName": "TGcbitBqLjqmmp5tRzlX3",
  "leadId": 2222,
  "opportunityId": null,
  "date": "2025-06-27T15:30:00.000Z",
  "formData": {},
  "properties": {}
}

```

❗ Quando `leadId` for informado, **não envie o `formData`** para evitar conflitos.

#### 🧠 Observações importantes

* **`leadId`** deve ser um lead válido da mesma instância.
* **`formData`** é obrigatório **somente quando `leadId` for `null`** (será usado para criar o lead).
* **`properties`** pode permanecer como `{}`. É utilizado apenas para reagendamentos ou dados adicionais em chamadas mais avançadas.
* A data e hora devem estar em **UTC** (ex: `2025-06-27T15:30:00.000Z`).
* O link do calendário precisa estar **ativo e com horários disponíveis**.

#### 📌 Onde encontrar o `keyName`

Acesse seu link público de agendamento. Exemplo:

```
https://instancia.sprinthub.app/calendar/TGcbitBqLjqmmp5tRzlX3

```

O trecho final da URL é o `keyName`:

```json
TGcbitBqLjqmmp5tRzlX3
```

#### 💥 Erros comuns

| Código  | Significado                                                          |
| ------- | -------------------------------------------------------------------- |
| `CL006` | O `keyName` não pertence à instância informada ou não está ativo.    |
| `CL008` | O `leadId` não existe ou não pertence à instância correta.           |
| `400`   | Dados ausentes ou mal formatados (ex: `null` como string: `"null"`). |

exemplo de requisição:

```
curl -X POST "https://sprinthub-api-master.sprinthub.app/calendarmeeting?i=instancia" \
  -H "Content-Type: application/json" \
  -d '{
    "keyName": "TGcbitBqLjqmmp5tRzlX3",
    "leadId": null,
    "opportunityId": null,
    "date": "2025-06-27T15:30:00.000Z",
    "formData": {
      "firstname": "Wanderson Fernandes",
      "email": "emailteste@sprinthub.com"
    },
    "properties": {}
  }'

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sprinthub.com/topicos/api/como-agendar-uma-reuniao-via-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
