> ## Documentation Index
> Fetch the complete documentation index at: https://docs.connectvets.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

# Guia de Início Rápido

> Configure sua primeira integração com ConnectVets Notes em minutos

# Primeiros passos com a API

Este guia te ajudará a fazer sua primeira chamada à API e processar um áudio de consulta veterinária em poucos minutos.

## Passo 1: Obtenha sua API Key

<Steps>
  <Step title="Crie sua conta">
    Entre em contato conosco via [WhatsApp](https://wa.me/553185127147) para solicitar acesso à API
  </Step>

  <Step title="Receba suas credenciais">
    Nossa equipe fornecerá sua API Key e instruções de acesso
  </Step>

  <Step title="Configure o ambiente">
    Use o endpoint base: `https://api-sandbox.connectvets.com.br/notes/v1`
  </Step>
</Steps>

<Warning>
  **Importante**: Mantenha sua API Key segura e nunca a exponha em código frontend.
</Warning>

## Passo 2: Teste a conexão

Vamos verificar se sua API Key está funcionando:

<CodeGroup>
  ```bash cURL theme={null} theme={null}
  curl -X GET "https://api-sandbox.connectvets.com.br/notes/v1/notes" \
    -H "X-API-KEY: sua_api_key_aqui" \
    -H "Content-Type: application/json"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const response = await fetch('https://api-sandbox.connectvets.com.br/notes/v1/notes', {
    method: 'GET',
    headers: {
      'X-API-KEY': 'sua_api_key_aqui',
      'Content-Type': 'application/json'
    }
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null} theme={null}
  import requests

  headers = {
      'X-API-KEY': 'sua_api_key_aqui',
      'Content-Type': 'application/json'
  }

  response = requests.get(
      'https://api-sandbox.connectvets.com.br/notes/v1/notes',
      headers=headers
  )

  print(response.json())
  ```
</CodeGroup>

**Resposta esperada:**

```json theme={null} theme={null}
{
  "data": [],
  "meta": {
    "total": 0,
    "page": 1,
    "limit": 10
  },
  "status": "success"
}
```

## Passo 3: Envie seu primeiro áudio

Agora vamos processar um arquivo de áudio:

<CodeGroup>
  ```bash cURL theme={null} theme={null}
  curl -X POST "https://api-sandbox.connectvets.com.br/notes/v1/notes" \
    -H "X-API-KEY: sua_api_key_aqui" \
    -F "audio=@caminho/para/audio.mp3" \
    -F "metadata={\"patient_name\":\"Rex\",\"owner_name\":\"João Silva\"}"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const formData = new FormData();
  formData.append('audio', audioFile); // objeto File do input
  formData.append('metadata', JSON.stringify({
    patient_name: "Rex",
    owner_name: "João Silva"
  }));

  const response = await fetch('https://api-sandbox.connectvets.com.br/notes/v1/notes', {
    method: 'POST',
    headers: {
      'X-API-KEY': 'sua_api_key_aqui'
    },
    body: formData
  });

  const result = await response.json();
  console.log('Nota criada:', result);
  ```

  ```python Python theme={null} theme={null}
  import requests

  files = {
      'audio': ('audio.mp3', open('caminho/para/audio.mp3', 'rb'), 'audio/mpeg')
  }

  data = {
      'metadata': '{"patient_name":"Rex","owner_name":"João Silva"}'
  }

  headers = {
      'X-API-KEY': 'sua_api_key_aqui'
  }

  response = requests.post(
      'https://api-sandbox.connectvets.com.br/notes/v1/notes',
      headers=headers,
      files=files,
      data=data
  )

  print(response.json())
  ```
</CodeGroup>

**Resposta esperada:**

```json theme={null} theme={null}
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Rex", 
    "transcription_status": "pending",
    "created_at": "2024-01-15T10:30:00Z"
  },
  "status": "success"
}
```

## Passo 4: Monitore o processamento

O processamento é assíncrono. Verifique o status:

<CodeGroup>
  ```bash cURL theme={null} theme={null}
  curl -X GET "https://api-sandbox.connectvets.com.br/notes/v1/notes/550e8400-e29b-41d4-a716-446655440000" \
    -H "X-API-KEY: sua_api_key_aqui"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const noteId = "550e8400-e29b-41d4-a716-446655440000";

  const checkStatus = async () => {
    const response = await fetch(`https://api-sandbox.connectvets.com.br/notes/v1/notes/${noteId}`, {
      headers: {
        'X-API-KEY': 'sua_api_key_aqui'
      }
    });
    
    const note = await response.json();
    return note.data.transcription_status;
  };

  // Verificar a cada 10 segundos
  const interval = setInterval(async () => {
    const status = await checkStatus();
    console.log('Status:', status);
    
    if (status === 'completed' || status === 'failed') {
      clearInterval(interval);
    }
  }, 10000);
  ```

  ```python Python theme={null} theme={null}
  import time
  import requests

  def check_status(note_id, api_key):
      response = requests.get(
          f'https://api-sandbox.connectvets.com.br/notes/v1/notes/{note_id}',
          headers={'X-API-KEY': api_key}
      )
      return response.json()['data']['transcription_status']

  note_id = "550e8400-e29b-41d4-a716-446655440000"

  while True:
      status = check_status(note_id, 'sua_api_key_aqui')
      print(f'Status: {status}')
      
      if status in ['completed', 'failed']:
          break
          
      time.sleep(10)
  ```
</CodeGroup>

## Passo 5: Obtenha os resultados

Quando o status for `completed`, você pode acessar as seções:

<CodeGroup>
  ```bash cURL theme={null} theme={null}
  curl -X GET "https://api-sandbox.connectvets.com.br/notes/v1/notes/550e8400-e29b-41d4-a716-446655440000" \
    -H "X-API-KEY: sua_api_key_aqui"
  ```

  ```javascript JavaScript theme={null} theme={null}
  const response = await fetch(`https://api-sandbox.connectvets.com.br/notes/v1/notes/${noteId}`, {
    headers: {
      'X-API-KEY': 'sua_api_key_aqui'
    }
  });

  const note = await response.json();

  // Acessar seções estruturadas
  note.data.note_sections.forEach(section => {
    console.log(`${section.title}: ${section.content}`);
  });
  ```
</CodeGroup>

**Exemplo de resposta completa:**

```json theme={null} theme={null}
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Rex",
    "transcription_status": "completed",
    "note_sections": [
      {
        "title": "Anamnese",
        "label": "anamnesis", 
        "content": "Paciente apresenta histórico de...",
        "order": "1"
      },
      {
        "title": "Diagnóstico",
        "label": "diagnosis",
        "content": "Após exame físico, diagnosticado...",
        "order": "2" 
      }
    ]
  }
}
```

## 🎯 Próximos passos

<CardGroup cols={2}>
  <Card title="Explore a API" icon="code" href="/notes/api-reference/overview">
    Veja todos os endpoints disponíveis
  </Card>

  <Card title="Configure Webhooks" icon="webhook" href="/notes/concepts/webhooks">
    Receba notificações automáticas
  </Card>

  <Card title="Formatos de áudio" icon="file-audio" href="/notes/integration/audio-requirements">
    Otimize a qualidade dos seus áudios
  </Card>

  <Card title="Tratamento de erros" icon="shield" href="/notes/integration/error-handling">
    Implemente tratamento robusto de erros
  </Card>
</CardGroup>

***

<Tip>
  **Dica**: Use webhooks para receber notificações automáticas quando o processamento for concluído, ao invés de fazer polling manual.
</Tip>
