Exemplos de código
Todos os exemplos leem a chave da variável de ambiente PLACAEFIPE_API_KEY e rodam no servidor.
cURL
bash
curl https://api.placaefipe.com.br/v1/placas/ABC1D23 \
-H "Authorization: Bearer $PLACAEFIPE_API_KEY"Node.js (18+)
js
export async function consultarPlaca(placa) {
const r = await fetch(`https://api.placaefipe.com.br/v1/placas/${encodeURIComponent(placa)}`, {
headers: { Authorization: `Bearer ${process.env.PLACAEFIPE_API_KEY}` },
});
const dados = await r.json();
if (!r.ok) throw new Error(`${dados.erro.codigo}: ${dados.erro.mensagem}`);
return dados;
}
const v = await consultarPlaca('ABC1D23');
console.log(v.marca, v.modelo, v.ano_modelo, v.fipe?.valor_texto);TypeScript (tipos da resposta)
ts
export interface VeiculoPlacaEFipe {
placa: string;
placa_antiga: string | null;
marca: string | null;
modelo: string | null;
versao: string | null;
ano_fabricacao: number | null;
ano_modelo: number | null;
cor: string | null;
combustivel: string | null;
chassi_final: string | null;
municipio: string | null;
uf: string | null;
situacao: string | null;
origem: string | null;
tecnico: {
motor: string | null;
tipo: string | null;
especie: string | null;
segmento: string | null;
cilindradas: number | null;
passageiros: number | null;
eixos: number | null;
};
fipe: {
codigo: string | null;
marca: string | null;
modelo: string | null;
ano_modelo: number | null;
combustivel: string | null;
valor: number | null;
valor_texto: string | null;
referencia: string | null;
versoes: { codigo: string; modelo: string; valor: number | null; valor_texto: string | null }[];
} | null;
consulta: { id: string; creditos_restantes: number; cobrada: boolean; cache: boolean };
}
export interface ErroPlacaEFipe {
erro: { codigo: string; mensagem: string; docs: string };
}Next.js (App Router): rota de API
Crie app/api/placa/[placa]/route.ts. O front chama /api/placa/ABC1D23 e a chave fica no servidor.
ts
export async function GET(_req: Request, { params }: { params: Promise<{ placa: string }> }) {
const { placa } = await params;
const r = await fetch(`https://api.placaefipe.com.br/v1/placas/${encodeURIComponent(placa)}`, {
headers: { Authorization: `Bearer ${process.env.PLACAEFIPE_API_KEY}` },
cache: 'no-store',
});
return new Response(await r.text(), { status: r.status, headers: { 'Content-Type': 'application/json' } });
}Python
python
import os
import requests
def consultar_placa(placa: str) -> dict:
r = requests.get(
f"https://api.placaefipe.com.br/v1/placas/{placa}",
headers={"Authorization": f"Bearer {os.environ['PLACAEFIPE_API_KEY']}"},
timeout=15,
)
dados = r.json()
if not r.ok:
raise RuntimeError(f"{dados['erro']['codigo']}: {dados['erro']['mensagem']}")
return dados
v = consultar_placa("ABC1D23")
print(v["marca"], v["modelo"], v["ano_modelo"], (v["fipe"] or {}).get("valor_texto"))PHP
php
<?php
function consultarPlaca(string $placa): array {
$ch = curl_init("https://api.placaefipe.com.br/v1/placas/" . urlencode($placa));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("PLACAEFIPE_API_KEY")],
]);
$corpo = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$dados = json_decode($corpo, true);
if ($status !== 200) {
throw new RuntimeException($dados["erro"]["codigo"] . ": " . $dados["erro"]["mensagem"]);
}
return $dados;
}
$v = consultarPlaca("ABC1D23");
echo $v["marca"] . " " . $v["modelo"] . " " . ($v["fipe"]["valor_texto"] ?? "sem FIPE");Go
go
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.placaefipe.com.br/v1/placas/ABC1D23", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PLACAEFIPE_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var v map[string]any
json.NewDecoder(res.Body).Decode(&v)
fmt.Println(res.StatusCode, v["marca"], v["modelo"])
}Supabase Edge Function
ts
// supabase/functions/placa/index.ts
Deno.serve(async (req) => {
const { placa } = await req.json();
const r = await fetch(`https://api.placaefipe.com.br/v1/placas/${encodeURIComponent(placa)}`, {
headers: { Authorization: `Bearer ${Deno.env.get('PLACAEFIPE_API_KEY')}` },
});
return new Response(await r.text(), { status: r.status, headers: { 'Content-Type': 'application/json' } });
});bash
supabase secrets set PLACAEFIPE_API_KEY=pf_live_sua_chave
supabase functions deploy placan8n
Use o nó HTTP Request:
| Campo | Valor |
|---|---|
| Method | GET |
| URL | https://api.placaefipe.com.br/v1/placas/{{ $json.placa }} |
| Authentication | Generic Credential Type → Header Auth |
| Header Name | Authorization |
| Header Value | Bearer pf_live_sua_chave |
Em Settings, ligue Never Error e trate erro.codigo num nó IF em seguida.