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

# Make Your First iGps API Request: Auth and Positions

> A step-by-step walkthrough of authenticating with iGps and querying real-time vehicle GPS positions using curl, Python, and JavaScript.

Este guia orienta você pelo fluxo completo de uso da API iGps pela primeira vez, desde a autenticação até a consulta da posição GPS de um veículo em tempo real, usando exemplos em curl, Python e JavaScript.

<Note>
  Você precisa do seu `client_id` e `client_secret`. Entre em contato com a iGps para obter as credenciais.
</Note>

<Steps>
  <Step title="Autentique-se">
    Envie suas credenciais para o endpoint de token para receber um token de acesso Bearer.

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.igps.com.br/api/v1/auth/token \
        -H "Content-Type: application/json" \
        -d '{"client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET"}'
      ```

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

      resp = requests.post(
          "https://api.igps.com.br/api/v1/auth/token",
          json={"client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET"}
      )
      token = resp.json()["access_token"]
      ```

      ```javascript JavaScript theme={null}
      const resp = await fetch("https://api.igps.com.br/api/v1/auth/token", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          client_id: "YOUR_CLIENT_ID",
          client_secret: "YOUR_CLIENT_SECRET"
        })
      });
      const { access_token: token } = await resp.json();
      ```
    </CodeGroup>
  </Step>

  <Step title="Consulte um Veículo">
    Use o token da Etapa 1 para consultar a posição GPS mais recente de um veículo pelo seu número de chassi (VIN) de 17 caracteres.

    <CodeGroup>
      ```bash curl theme={null}
      curl -X POST https://api.igps.com.br/api/v1/veiculos/posicoes \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
        -d '{"chassis": ["VIN00000000000001"]}'
      ```

      ```python Python theme={null}
      result = requests.post(
          "https://api.igps.com.br/api/v1/veiculos/posicoes",
          headers={"Authorization": f"Bearer {token}"},
          json={"chassis": ["VIN00000000000001"]}
      ).json()
      ```

      ```javascript JavaScript theme={null}
      const result = await fetch("https://api.igps.com.br/api/v1/veiculos/posicoes", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "Authorization": `Bearer ${token}`
        },
        body: JSON.stringify({ chassis: ["VIN00000000000001"] })
      }).then(r => r.json());
      ```
    </CodeGroup>
  </Step>

  <Step title="Leia a Resposta">
    A resposta contém um array `resultados` com uma entrada por chassi consultado. Cada entrada inclui o número do chassi, as coordenadas GPS, um timestamp e um campo de status indicando se o veículo foi encontrado.

    ```python Python theme={null}
    for vehicle in result["resultados"]:
        if vehicle["status"] == "ok":
            print(f"{vehicle['chassi']}: lat={vehicle['latitude']}, lon={vehicle['longitude']}")
        else:
            print(f"{vehicle['chassi']}: nao encontrado")
    ```
  </Step>
</Steps>

<Tip>
  Armazene seu token e reutilize-o por até 3600 segundos antes de solicitar um novo.
</Tip>
