📘 Documentação da API do Orçamentador

Sobre a API do Orçamentador

A API do Orçamentador foi desenvolvida para fornecer acesso estruturado e confiável aos dados de insumos, composições e preços utilizados no setor da construção civil, com base na Tabela SINAPI (Sistema Nacional de Pesquisa de Custos e Índices da Construção Civil).

Finalidade da API

A API tem como objetivo permitir que sistemas externos integrem, consultem e utilizem os dados do Orçamentador em tempo real, viabilizando:

Público-Alvo

Esta API foi criada para atender:

Requisições

Todas as requisições exigem uma API Key, que deve ser enviada como parâmetro na URL:

https://orcamentador.com.br/api/?apikey=SUA_CHAVE
Endpoints disponíveis
Endpoint Descrição Parâmetros
?endpoint=insumos Retorna lista de insumos disponíveis ou informações de um insumo (se codigo e estado forem especificados) page, limit
?endpoint=composicoes Retorna lista de composições ou informações de uma composição (se codigo e estado forem especificados) page, limit
?endpoint=composicao Retorna os itens (insumos ou subcomposições) de uma composição codigo, estado
GET /insumos

Retorna uma lista de insumos paginada.

Parâmetros:
  • apikey (obrigatório)
  • page (obrigatório): Número da página
  • limit (obrigatório): Quantidade por página (máx: 100)
  • codigo: Filtro parcial (obrigatório se usado com o filtro estado)
  • estado: : Sigla do estado (obrigatório se usado com o filtro codigo)
  • nome: Filtro parcial
  • tipo: material, mão de obra, equipamento...
  • sort: codigo, nome, tipo
  • order: asc ou desc
Exemplo:
/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=20&nome=cimento&sort=nome&order=asc
GET /composicoes

Retorna uma lista de composições paginada.

Parâmetros:
  • apikey (obrigatório)
  • page (obrigatório)
  • limit (obrigatório)
  • codigo: Filtro parcial (obrigatório se usado com o filtro estado)
  • estado: obrigatório se usado com o filtro codigo
  • sort: codigo, nome, unidade
  • order: asc ou desc
Exemplo:
/?apikey=SUA_CHAVE&endpoint=composicoes&page=1&limit=10&sort=nome&order=desc
GET /composicao

Retorna os dados de uma composição, incluindo os itens (insumos ou subcomposições).

Parâmetros:
  • apikey (obrigatório)
  • codigo (obrigatório): Código da composição
  • estado: (obrigatório): Sigla do estado
Exemplo:
/?apikey=SUA_CHAVE&endpoint=composicao&codigo=88316
Resposta:
{
  "codigo": "88316",
  "nome": "Alvenaria de vedação",
  "unidade": "m2",
  "itens": [
    {
      "tipo": "INSUMO",
      "codigo": "34353",
      "unidade": "Kg",
      "quantidade": 8.62,
      "nome": "Cimento CP II-E-32"
    },
    {
      "tipo": "COMPOSICAO",
      "codigo": "88309",
      "unidade": "h",
      "quantidade": 0.639,
      "nome": "Servente de pedreiro"
    }
  ]
}
Tratamento de Erros
Código Mensagem Descrição
400 Parâmetros ausentes O endpoint ou parâmetro obrigatório não foi fornecido.
401 API Key inválida Chave de API não reconhecida ou token JWT expirado.
429 Limite de requisições excedido Usuário ultrapassou o número permitido de requisições.
Limite de Requisições

Cada chave gratuita permite até 100 requisições por dia. Após isso, o sistema retorna:

HTTP 429 Too Many Requests

Para acesso ilimitado, assine um plano ou entre em contato para uso profissional.

Exemplos de uso da API

Ex.: Exibir a página 1 de insumos com 5 itens/página

curl "https://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5"
<?php
$apiUrl = "https://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5";
$response = file_get_contents($apiUrl);
$data = json_decode($response, true);
print_r($data);
?>
fetch("hhttps://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5")
  .then(res => res.json())
  .then(data => console.log(data));
import requests

url = "https://orcamentador.com.br/api/"
params = {
    "apikey": "SUA_CHAVE",
    "endpoint": "insumos",
    "page": 1,
    "limit": 5
}

response = requests.get(url, params=params)
print(response.json())
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class ApiExample {
  public static void main(String[] args) throws Exception {
    URL url = new URL("https://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");

    Scanner sc = new Scanner(conn.getInputStream());
    while (sc.hasNext()) {
      System.out.println(sc.nextLine());
    }
    sc.close();
  }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
  static async Task Main() {
    var client = new HttpClient();
    string url = "https://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5";
    var response = await client.GetStringAsync(url);
    Console.WriteLine(response);
  }
}
const https = require('https');

const url = 'https://orcamentador.com.br/api/?apikey=SUA_CHAVE&endpoint=insumos&page=1&limit=5';

https.get(url, res => {
  let data = '';
  res.on('data', chunk => { data += chunk; });
  res.on('end', () => { console.log(JSON.parse(data)); });
}).on('error', err => {
  console.error('Erro: ' + err.message);
});