🌿 AgroBase API

🌿 AgroBase API v1

Documentação de integração para consultar os dados publicados da AgroBase. Esta página é pública; as chamadas de dados exigem app-key.

Visão geral

A API foi pensada para ser somente leitura para aplicações clientes. O painel administrativo cria empresas e app-keys, e a aplicação cliente usa a chave para consultar culturas, pragas/alvos, agrotóxicos e recomendações.

Base URL de producao: https://agrobase-api.sp1.br.saveincloud.net.br

Para conferência manual, veja a página de fontes de dados por estado e fontes complementares.

Autenticação

Envie a app-key no header x-api-key. O valor completo da chave aparece no painel da empresa.

GET /v1/culturas HTTP/1.1
Host: agrobase-api.sp1.br.saveincloud.net.br
x-api-key: agb_sua_chave_aqui

Se a empresa estiver inativa ou a chave estiver revogada, a API deve retornar 401 ou 403.

GET/v1/configuracoesdisponivel

Mostra como a empresa e a app-key estao configuradas. Use para conferir UF, plano, validade da chave e permissoes antes de carregar dados locais.

GET /v1/configuracoes
x-api-key: agb_sua_chave_aqui
{
  "api": { "nome": "AgroBase API", "versao": "0.1.0", "ambiente": "production" },
  "empresa": {
    "id": 1,
    "nome": "Freeline Informatica Ltda",
    "cnpj": "00000000000000",
    "email": "admin@freeline.inf.br",
    "uf": "SC",
    "plano": "plus",
    "permite_curadoria": true,
    "todas_fontes": true,
    "culturas_preferidas": ["CUL000337", "CUL000208", "CUL000249"]
  },
  "appKey": {
    "id": 7,
    "nome": "agrobase-api1",
    "status": "ativo",
    "expira_em": "2099-12-31T23:59:59.000Z"
  }
}

Padrões da v1

FormatoJSON em UTF-8
DatasISO-8601, exemplo 2026-07-02T12:00:00.000Z
Paginação?pagina=1&limite=100, quando o endpoint retornar listas grandes
StatusRegistros ativos por padrão. Quando existir filtro, use ?status=ativo|inativo|todos
UFA app-key pode ter uma UF associada; endpoints de recomendação devem respeitar esse escopo.

Endpoints disponíveis agora

GET/healthdisponível

Verifica se a aplicação esta online.

{
  "status": "ok",
  "ambiente": "production",
  "agora": "2026-07-02T12:00:00.000Z"
}
GET/health/dbdisponível

Verifica a conexão com PostgreSQL.

{
  "status": "ok",
  "database": "agrobase",
  "agora": "2026-07-02T12:00:00.000Z"
}

Endpoints de dados da AgroBase

Estes são os contratos previstos para a v1. A implementação sera feita em cima das tabelas finais do schema agrobase.

Culturas

GET/v1/culturasdisponível

Lista culturas ativas. Para empresas com UF PR, SC ou RS, retorna apenas culturas que tenham fonte naquela UF. Para outras UFs, retorna a lista geral. O campo id e o identificador inteiro persistente; codigo e o código técnico rastreável.

ParâmetroUso
buscaBusca parcial por nome, código interno, nome científico ou código/nome da fonte.
paginaPágina da lista. Padrão: 1.
limiteItens por pagina. Padrão: 100, máximo: 200.
atualizadoDesdeOpcional. Filtra registros atualizados a partir da data informada.
preferidos=1Retorna apenas as culturas preferidas configuradas para a empresa da app-key.
GET /v1/culturas?busca=soja&pagina=1&limite=5
GET /v1/culturas?preferidos=1
{
  "dados": [
    {
      "id": 4447,
      "codigo": "CUL000170",
      "nome": "Farelo de Soja",
      "status": "ativo",
      "icone_chave": "openfarm-soy-bean",
      "fontes": [
        { "fonte": "agrolink", "uf": null, "codigo": "945", "nome": "Farelo de soja" },
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "731", "nome": "Farelo de Soja" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "66", "nome": "Farelo de Soja" },
        { "fonte": "embrapa", "uf": null, "codigo": "farelo de soja armazenado", "nome": "Farelo de soja - Armazenado" },
        { "fonte": "gedave_sp", "uf": "SP", "codigo": "739", "nome": "FARELO DE SOJA" },
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "226", "nome": "Farelo de soja" }
      ],
      "icone_download_url": "/v1/icones/openfarm-soy-bean"
    },
    {
      "id": 4711,
      "codigo": "CUL000467",
      "nome": "Farinha de Soja",
      "metodo_plantio": "Semente (Direto)",
      "sazonalidade": "Outono / Primavera (Safra)",
      "ciclo_maturacao": "100 a 140 dias",
      "fontes": [
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "295", "nome": "Farinha de Soja" }
      ],
      "icone_download_url": "/v1/icones/openfarm-soy-bean"
    },
    {
      "id": 4599,
      "codigo": "CUL000337",
      "nome": "Soja",
      "metodo_plantio": "Semente (Direto)",
      "sazonalidade": "Outono / Primavera (Safra)",
      "ciclo_maturacao": "100 a 140 dias",
      "status": "ativo",
      "fontes": [
        { "fonte": "agrolink", "uf": null, "codigo": "1", "nome": "Soja" },
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "531", "nome": "Soja" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "129", "nome": "Soja", "status": null },
        { "fonte": "embrapa", "uf": null, "codigo": "soja", "nome": "Soja" },
        { "fonte": "gedave_sp", "uf": "SP", "codigo": "921", "nome": "SOJA" },
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "193", "nome": "Soja" }
      ],
      "icone_download_url": "/v1/icones/openfarm-soy-bean"
    },
    {
      "id": 4759,
      "codigo": "CUL000542",
      "nome": "Soja BT",
      "fontes": [
        { "fonte": "embrapa", "uf": null, "codigo": "soja bt", "nome": "Soja BT" }
      ],
      "icone_download_url": "/v1/icones/openfarm-soy-bean"
    },
    {
      "id": 4600,
      "codigo": "CUL000338",
      "nome": "Soja Cultivance",
      "fontes": [
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "751", "nome": "Soja Cultivance" }
      ],
      "icone_download_url": "/v1/icones/openfarm-soy-bean"
    }
  ],
  "paginacao": { "pagina": 1, "limite": 5, "total": 14 },
  "escopo": { "uf": "SC", "filtroFonteUf": false, "todasFontes": true }
}
GET/v1/culturas/{codigo}disponível

Consulta uma cultura por id inteiro ou código interno CUL..., respeitando o mesmo filtro de UF da app-key.

GET /v1/culturas/337
GET /v1/culturas/CUL000337
{
  "cultura": {
    "id": 337,
    "codigo": "CUL000337",
    "nome": "Soja",
    "nome_normalizado": "soja",
    "status": "ativo",
    "icone_chave": "openfarm-soy-bean",
    "icone_download_url": "/v1/icones/openfarm-soy-bean",
    "fontes": [
      { "fonte": "cidasc_sc", "uf": "SC", "codigo": "129", "nome": "Soja", "status": null }
    ]
  }
}
GET/v1/preferidos/culturasdisponivel

Retorna os codigos das culturas preferidas da empresa dona da app-key.

GET /v1/preferidos/culturas
{
  "culturas": ["CUL000337", "CUL000208", "CUL000249"]
}
POST/v1/preferidos/culturasdisponivel

Substitui a lista inteira de culturas preferidas. Aceita codigos CUL... ou ids inteiros. PUT tambem funciona no mesmo endpoint.

POST /v1/preferidos/culturas
Content-Type: application/json
x-api-key: agb_sua_chave_aqui

{
  "culturas": ["CUL000337", "CUL000208", 249]
}
{
  "culturas": ["CUL000337", "CUL000208", "CUL000249"]
}
POST/v1/preferidos/culturas/{idOuCodigo}disponivel

Adiciona uma cultura na lista sem apagar as demais.

POST /v1/preferidos/culturas/CUL000337
DELETE/v1/preferidos/culturas/{idOuCodigo}disponivel

Remove uma cultura da lista de preferidas.

DELETE /v1/preferidos/culturas/337
GET/v1/culturas-variantesdisponível

Lista combinada de cultura + variante. Quando a cultura não possui variante, ela também aparece com campos de variante vazios. Usa o mesmo critério de UF da lista de culturas. A busca parcial filtra a cultura; a variante e apenas a forma de exibição. Também aceita preferidos=1.

GET /v1/culturas-variantes?busca=soja&pagina=1&limite=50
GET /v1/culturas-variantes?preferidos=1
{
  "dados": [
    {
      "cultura_codigo": "CUL000001",
      "cultura_nome": "Soja",
      "variante_id": 15,
      "variante_nome": "Soja geneticamente modificada",
      "variante_tipo": "variedade",
      "variante_codigo_fonte": "SOJA-GM"
    }
  ],
  "paginacao": { "pagina": 1, "limite": 50, "total": 1 },
  "escopo": { "uf": "SC", "filtroFonteUf": true }
}
GET/v1/culturas-variantes/{id}disponível

Consulta uma variante pelo id inteiro da variante, usando o variante_id retornado em /v1/culturas-variantes. Nao busca pelo id da cultura.

O variante_id pode ser um número grande. Ele é calculado pelo exportador a partir da cultura, fonte, código da fonte e nome normalizado para permanecer estável entre importações.

GET /v1/culturas-variantes/{variante_id}
{
  "variante": {
    "id": 15,
    "cultura_id": 337,
    "cultura_codigo": "CUL000337",
    "cultura_nome": "Soja",
    "nome": "Soja geneticamente modificada",
    "tipo": "variedade",
    "codigo_fonte": "SOJA-GM",
    "status": "ativo"
  }
}

Agrotóxicos

GET/v1/agrotoxicosdisponível

Lista agrotóxicos autorizados conforme a base e escopo da app-key. Para empresas com UF PR, SC ou RS, exige fonte da própria UF.

GET /v1/agrotoxicos?busca=quallis
GET /v1/agrotoxicos?cultura=CUL000337&praga=PRG000010
{
  "dados": [
    {
      "id": 943,
      "codigo": "PRO000943",
      "nome": "QUALLIS",
      "registro_mapa": "26818",
      "fabricante": { "nome": "OURO FINO QUÍMICA S.A." },
      "classe": "Herbicida",
      "fontes": [
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1363", "nome": "QUALLIS", "registro_mapa": "26818" },
        { "fonte": "agrolink", "uf": null, "codigo": "10736", "nome": "Quallis", "registro_mapa": "26818" }
      ],
      "bula_download_url": "/v1/agrotoxicos/PRO000943/documentos/bula"
    }
  ],
  "paginacao": { "pagina": 1, "limite": 100, "total": 1 }
}
GET/v1/agrotoxicos/{idOuCodigo}disponível

Consulta agrotóxico por id inteiro ou código interno PRO.... Use completa=1 para retornar recomendações e textos. Os filtros cultura, praga e método limitam os detalhes retornados.

GET /v1/agrotoxicos/PRO000943
GET /v1/agrotoxicos/943?completa=1
GET /v1/agrotoxicos/PRO000943?completa=1&cultura=CUL000337&praga=PRG000010&metodo=aerea
{
  "agrotoxico": {
    "id": 943,
    "codigo": "PRO000943",
    "nome": "QUALLIS",
    "registro_mapa": "26818",
    "fabricante": { "nome": "OURO FINO QUÍMICA S.A." },
    "classe": "Herbicida",
    "fontes": [
      { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1363", "nome": "QUALLIS" }
    ],
    "bula_download_url": "/v1/agrotoxicos/PRO000943/documentos/bula"
  }
}
GET/v1/agrotoxicos/{idOuCodigo}/documentos/{tipo}disponível

Atalho para documentos de agrotóxico. tipo aceita bula, ficha_emergencia ou fds.

GET /v1/agrotoxicos/PRO000061/documentos/bula
GET /v1/agrotoxicos/PRO000061/documentos/ficha_emergencia
GET /v1/agrotoxicos/61/documentos/fds
GET/v1/agrotoxicos/{idOuCodigo}/recomendacoesdisponível

Consulta recomendações de um agrotóxico. O agrotóxico é sempre obrigatório na rota. Pode filtrar por cultura e praga/alvo.

GET /v1/agrotoxicos/PRO000943/recomendacoes
GET /v1/agrotoxicos/943/recomendacoes?cultura=CUL000337&praga=PRG000010
{
  "agrotoxico": { "id": 943, "codigo": "PRO000943", "nome": "QUALLIS" },
  "dados": [
    {
      "dosagem_texto": "4 l/ha",
      "calda_texto": "100 l/ha",
      "intervalo_seguranca_texto": "NÃO DETERMINADO",
      "epoca_aplicacao_texto": "Realizar a aplicação em qualquer época do ano.",
      "cultura": { "codigo": "CUL000293", "nome": "Pastagem" },
      "praga": { "codigo": "PRG002010", "nome": "Serra-goela, Unha-de-gato, Barbadinho, Sessenta-feridas" }
    }
  ]
}
GET/v1/agrotoxicos/{idOuCodigo}/textosdisponível

Retorna textos base de precaução, EPI, manejo e devolução, além dos textos condicionais por cultura e método de aplicação. O texto base sempre volta, mesmo quando o filtro não encontra textos condicionais.

GET /v1/agrotoxicos/PRO000943/textos
GET /v1/agrotoxicos/PRO000943/textos?tipo=precaucoes_uso&cultura=CUL000337&metodo=aerea
{
  "textos": {
    "agrotoxico": { "id": 943, "codigo": "PRO000943", "nome": "QUALLIS" },
    "base": {
      "precaucoes_uso": "Consulte as precauções de uso constantes na bula do produto.",
      "manejo_integrado_resistencia": "Sempre que houver disponibilidade de informações, incluir práticas de manejo integrado."
    },
    "condicionais": []
  }
}

Pragas / alvos

GET/v1/pragasdisponível

Lista pragas/alvos ativos. A busca parcial consulta nome comum e nome científico ao mesmo tempo. Para empresas com UF PR, SC ou RS, respeita a fonte da UF quando existir.

ParâmetroDescrição
buscaBusca por id, código PRG..., nome comum, nome científico ou nomes das fontes.
culturaOpcional. Filtra pragas com recomendação para uma cultura. Aceita id inteiro ou código CUL....
agrotoxicoOpcional. Filtra pragas com recomendação para um agrotóxico. Aceita id inteiro ou código PRO....
paginaPágina. Padrão: 1.
limiteQuantidade por página. Máximo: 200.
GET /v1/pragas?busca=broca&pagina=1&limite=5
GET /v1/pragas?cultura=CUL000337
GET /v1/pragas?agrotoxico=PRO000943
GET /v1/pragas?cultura=337&agrotoxico=943
{
  "dados": [
    {
      "id": 32592,
      "codigo": "PRG000157",
      "nome": "Arlequim-pequeno, Broca-do-tronco",
      "nome_cientifico": "Macropophora accentifer",
      "categoria": "inseto",
      "fontes": [
        { "fonte": "agrolink", "uf": null, "codigo": "2982", "nome": "Besouro do tronco" },
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "320", "nome": "Arlequim-pequeno, Broca-do-tronco" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1006", "nome_cientifico": "Macropophora accentifer" },
        { "fonte": "embrapa", "uf": null, "codigo": "macropophora accentifer", "nome": "Arlequim-pequeno" },
        { "fonte": "gedave_sp", "uf": "SP", "codigo": "2104", "nome_cientifico": "Macropophora accentifer" },
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "2317", "nome": "Broca-do-tronco, Arlequim-pequeno" }
      ],
      "icone_download_url": "/v1/icones/praga-inseto"
    },
    {
      "id": 32662,
      "codigo": "PRG000228",
      "nome": "Besouro, Broca-do-colmo",
      "nome_cientifico": "Migdolus fonsecai",
      "categoria": "inseto",
      "fontes": [
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "312", "nome": "Besouro, Broca-do-colmo" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1054", "nome_cientifico": "Migdolus fonsecai" }
      ],
      "icone_download_url": "/v1/icones/praga-inseto"
    },
    {
      "id": 32676,
      "codigo": "PRG000242",
      "nome": "Bicho-tromba, Broca-da-batatinha",
      "nome_cientifico": "Phyrdenus muriceus",
      "categoria": "inseto",
      "fontes": [
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "291", "nome": "Bicho-tromba, Broca-da-batatinha" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1217", "nome_cientifico": "Phyrdenus muriceus" },
        { "fonte": "embrapa", "uf": null, "codigo": "phyrdenus muriceus", "nome": "Bicho-tromba" },
        { "fonte": "gedave_sp", "uf": "SP", "codigo": "2257", "nome_cientifico": "Phyrdenus muriceus" },
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "1185", "nome_cientifico": "Phyrdenus muriceus" }
      ],
      "icone_download_url": "/v1/icones/praga-inseto"
    },
    {
      "id": 32701,
      "codigo": "PRG000267",
      "nome": "Broca-da-amendoa",
      "nome_cientifico": "Cryptophlebia illepida",
      "categoria": "inseto",
      "fontes": [
        { "fonte": "agrolink", "uf": null, "codigo": "3451", "nome": "Broca-da-amendoa" },
        { "fonte": "celepar_pr", "uf": "PR", "codigo": "3120", "nome": "Broca-da-amendoa" },
        { "fonte": "cidasc_sc", "uf": "SC", "codigo": "1932", "nome_cientifico": "Cryptophlebia illepida" },
        { "fonte": "embrapa", "uf": null, "codigo": "cryptophlebia illepida", "nome": "Broca-da-amendoa" },
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "2731", "nome_cientifico": "Cryptophlebia illepida" }
      ],
      "icone_download_url": "/v1/icones/praga-inseto"
    },
    {
      "id": 35160,
      "codigo": "PRG002772",
      "nome": "Broca da cana",
      "nome_cientifico": "Diatraea saccharilis",
      "categoria": "inseto",
      "fontes": [
        { "fonte": "seapi_rs", "uf": "RS", "codigo": "873", "nome": "Broca da cana" }
      ],
      "icone_download_url": "/v1/icones/praga-inseto"
    }
  ],
  "paginacao": { "pagina": 1, "limite": 5, "total": 69 },
  "escopo": { "uf": "SC", "filtroFonteUf": false, "todasFontes": true }
}
GET/v1/pragas/{idOuCodigo}disponível

Consulta uma praga/alvo por id inteiro ou código interno PRG.... Quando usar id, retorna mesmo se estiver inativo; ainda respeita a UF da app-key.

GET /v1/pragas/10
GET /v1/pragas/PRG000010
{
  "praga": {
    "id": 10,
    "codigo": "PRG000010",
    "nome": "Ácaro",
    "nome_cientifico": "Brevipalpus chilensis",
    "categoria": "acaro",
    "status": "ativo"
  }
}

Metodos de aplicação

GET/v1/metodos-aplicacaodisponível

Lista os métodos estáveis usados nos textos condicionais: costal, tratoral, irrigacao e aerea.

GET /v1/metodos-aplicacao?busca=aerea
{
  "dados": [
    { "id": 4, "codigo": "MET000004", "nome": "Aérea", "nome_normalizado": "aerea", "status": "ativo" }
  ],
  "paginacao": { "pagina": 1, "limite": 100, "total": 1 }
}
GET/v1/metodos-aplicacao/{idOuCodigo}disponível

Consulta por id inteiro ou código interno MET....

GET /v1/metodos-aplicacao/4
GET /v1/metodos-aplicacao/MET000004
{
  "metodo": { "id": 4, "codigo": "MET000004", "nome": "Aérea", "nome_normalizado": "aerea", "status": "ativo" }
}

Cadastros auxiliares

GET/v1/cadastros/{chave}disponível

Lista cadastros pequenos vindos da CIDASC e do RS. Use busca, pagina e limite. Quando pesquisar por id inteiro, a API retorna mesmo registros inativos.

ChaveCadastro
cidasc-unidades-medidaUnidades de medida CIDASC
cidasc-unidades-derivadasUnidades derivadas CIDASC
cidasc-agrotoxico-medidasMedidas de agrotóxico CIDASC
cidasc-localidadesLocalidades CIDASC
cidasc-tipos-logradouroTipos de logradouro CIDASC
seapi-rs-unidadesUnidades SEAPI/RS
seapi-rs-tipos-logradouroTipos de logradouro SEAPI/RS
GET /v1/cadastros/cidasc-unidades-medida?busca=litro
GET /v1/cadastros/cidasc-localidades?busca=joinville
GET /v1/cadastros/seapi-rs-unidades/12
{
  "dados": [
    { "id": 1, "codigo_cidasc": 1, "descricao": "Litro", "sigla": "L", "status": "ativo" }
  ],
  "paginacao": { "pagina": 1, "limite": 100, "total": 1 }
}
GET/v1/cadastros/{chave}/{idOuCodigo}disponível

Consulta um item por id inteiro ou pelo código da fonte.

{
  "cadastro": { "id": 1, "codigo_cidasc": 1, "descricao": "Litro", "sigla": "L", "status": "ativo" }
}

Fornecedores

GET/v1/fornecedoresdisponível

Lista fornecedores/fabricantes. A busca consulta nome, código interno, CNPJ, UF, grupo e nome curto.

GET /v1/fornecedores?busca=bayer
GET /v1/fornecedores?busca=12345678000199
{
  "dados": [
    {
      "id": 9,
      "codigo": "FAB000009",
      "nome": "BAYER S.A.",
      "nome_curto": "Bayer",
      "site": "https://www.bayer.com.br",
      "status": "ativo"
    }
  ],
  "paginacao": { "pagina": 1, "limite": 100, "total": 1 }
}
GET/v1/fornecedores/{idOuCodigo}disponível

Consulta fornecedor por id inteiro ou código interno FAB.... Quando usar id, retorna mesmo se estiver inativo.

GET /v1/fornecedores/9
GET /v1/fornecedores/FAB000009
{
  "fornecedor": {
    "id": 9,
    "codigo": "FAB000009",
    "nome": "BAYER S.A.",
    "nome_curto": "Bayer",
    "site": "https://www.bayer.com.br",
    "status": "ativo"
  }
}

Arquivos, imagens e PDFs

GET/v1/arquivosdisponível

Consulta arquivos de uma entidade específica. Este endpoint não faz lista grande: informe sempre a entidade, o tipo e o id/codigo. A resposta não expõe a URL real de armazenamento; use download_url.

ParâmetroDescrição
entidadecultura, praga_alvo ou agrotoxico. Também aceita atalhos como praga e agrotoxico.
tipoimagem, bula, ficha_emergencia, fds ou documento.
idId inteiro persistente da entidade.
codigoCódigo interno, como CUL..., PRG... ou PRO....
itemAlternativa genérica para enviar id ou codigo.
GET /v1/arquivos?entidade=cultura&tipo=imagem&codigo=CUL000337
GET /v1/arquivos?entidade=praga_alvo&tipo=imagem&id=17
GET /v1/arquivos?entidade=agrotoxico&tipo=bula&codigo=PRO000061
GET /v1/arquivos?entidade=agrotoxico&tipo=ficha_emergencia&item=61
{
  "arquivos": [
    {
      "id": 10081,
      "entidade_tipo": "agrotoxico",
      "agrotoxico_id": 61,
      "tipo": "bula",
      "titulo": "PRO000061-BULA.pdf",
      "download_url": "/v1/arquivos/10081/download"
    }
  ]
}

O id do arquivo é gerado na importação da base. O exemplo acima usa um produto com bula, ficha de emergência e FDS publicados: PRO000061.

GET/v1/arquivos/{id}/downloaddisponível

Baixa ou abre o arquivo pelo proxy da API.

POST/v1/ficha-emergencia/{modelo}.pdfdisponível

Gera um PDF complementar para ficha de emergência com dados enviados pelo aplicativo cliente. O modelo aceita verso, envelope-frente e envelope-verso.

POST /v1/ficha-emergencia/verso.pdf
Content-Type: application/json
x-api-key: agb_sua_chave_aqui

{
  "empresa": {
    "razaoSocial": "Teste Agrícola Ltda",
    "cnpj": "00.000.000/0001-00",
    "endereco": "Rua Exemplo, 123",
    "telefone": "(47) 3473-0001",
    "contato": "Responsável técnico",
    "email": "contato@empresa.com.br"
  },
  "transportador": {
    "nome": "Motorista Exemplo",
    "cpf": "000.000.000-00",
    "telefone": "(47) 99999-0000",
    "placa": "ABC1D23"
  }
}
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: inline; filename="ficha-emergencia-verso.pdf"

%PDF-1.3 ...

Ícones

GET/v1/iconesdisponível

Lista as chaves de icone usadas na base e o endpoint de download de cada uma.

GET /v1/icones
{
  "pacote_download_url": "/v1/icones/pacote.zip",
  "icones": [
    { "chave": "openfarm-soy-bean", "download_url": "/v1/icones/openfarm-soy-bean" },
    { "chave": "agrotoxico-herbicida", "download_url": "/v1/icones/agrotoxico-herbicida" }
  ]
}
GET/v1/icones/{chave}disponível

Retorna o SVG de um icone, por exemplo cultura-soja, praga-inseto ou agrotoxico-fungicida.

GET /v1/icones/cultura-soja
GET/v1/icones/pacote.zipdisponível

Baixa um pacote ZIP com todos os icones para cache local/offline do aplicativo cliente.

Notificações e curadoria

POST/v1/notificacoesdisponível

Registra erro, reclamação ou pedido de atualização enviado pelo aplicativo cliente. Qualquer app-key ativa pode usar.

POST /v1/notificacoes
Content-Type: application/json
x-api-key: agb_sua_chave_aqui

{
  "tipo": "recomendacao_errada",
  "entidade": "agrotoxico",
  "entidadeCodigo": "PRO000943",
  "titulo": "Dose divergente para pastagem",
  "mensagem": "O agrônomo conferiu a bula e acredita que a dose exibida para pastagem está incorreta.",
  "contato": "tecnico@cliente.com.br",
  "payload": {
    "cultura": "CUL000293",
    "praga": "PRG002010",
    "tela": "receita/recomendacoes"
  }
}
{
  "notificacao": {
    "id": 42,
    "tipo": "recomendacao_errada",
    "entidade_tipo": "agrotoxico",
    "entidade_codigo": "PRO000943",
    "titulo": "Dose divergente para pastagem",
    "status": "novo",
    "criado_em": "2026-07-04T12:00:00.000Z"
  }
}
POST/v1/acertosdisponível

Registra uma alteração sugerida por empresa parceira autorizada. A API salva a proposta em fila; a aplicação/exportador ainda não aplica automaticamente essa curadoria na AgroBase final.

POST /v1/acertos
Content-Type: application/json
x-api-key: agb_sua_chave_aqui

{
  "operacao": "corrigir",
  "entidade": "cultura",
  "entidadeCodigo": "CUL000337",
  "campo": "nome",
  "valorAnterior": "Soja",
  "valorNovo": "Soja comum",
  "justificativa": "Padronização interna do parceiro.",
  "dados": {
    "fonte": "curadoria_cliente",
    "observacao": "Validado pelo responsável técnico."
  }
}
{
  "acerto": {
    "id": 18,
    "operacao": "corrigir",
    "entidade_tipo": "cultura",
    "entidade_codigo": "CUL000337",
    "campo": "nome",
    "status": "pendente",
    "criado_em": "2026-07-04T12:05:00.000Z"
  }
}

Provisionamento interno Freeline

POST/v1/provisionamento/empresasdisponivel

Cria empresa, usuario inicial e app-key. Este endpoint nao usa x-api-key; ele exige a chave interna x-provision-key configurada em FREELINE_PROVISION_KEY.

POST /v1/provisionamento/empresas
Content-Type: application/json
x-provision-key: chave-interna-da-freeline

{
  "empresa": {
    "nome": "Cliente Exemplo Ltda",
    "cnpj": "00000000000000",
    "email": "tecnico@cliente.com.br",
    "uf": "SC",
    "plano": "plus",
    "permiteCuradoria": false
  },
  "usuario": {
    "nome": "Responsavel Tecnico",
    "email": "tecnico@cliente.com.br",
    "senhaInicial": "senha-temporaria",
    "papel": "gerencial"
  },
  "appKey": {
    "nome": "cliente-receituario",
    "descricao": "Integracao inicial"
  }
}
{
  "empresa": { "id": 12, "nome": "Cliente Exemplo Ltda", "uf": "SC", "plano": "plus" },
  "usuario": { "id": 5, "email": "tecnico@cliente.com.br", "papel": "gerencial" },
  "appKey": {
    "id": 18,
    "nome": "cliente-receituario",
    "status": "ativo",
    "expira_em": "2099-12-31T23:59:59.000Z",
    "chave": "agb_chave_completa_aparece_uma_vez"
  }
}

Erros

HTTPQuando ocorreExemplo
400Parâmetro inválido{"erro":"parametro_invalido","mensagem":"..."}
401App-key ausente ou inválida{"erro":"nao_autenticado","mensagem":"..."}
403Empresa sem permissão para o escopo{"erro":"sem_permissao","mensagem":"..."}
404Registro não encontrado{"erro":"nao_encontrado","mensagem":"..."}
500Erro inesperado{"erro":"erro_interno","mensagem":"..."}

Exemplos

cURL

curl -H "x-api-key: agb_sua_chave_aqui" \
  "https://agrobase-api.sp1.br.saveincloud.net.br/v1/agrotoxicos?busca=quallis"

JavaScript

const resposta = await fetch("https://agrobase-api.sp1.br.saveincloud.net.br/v1/culturas", {
  headers: {
    "x-api-key": "agb_sua_chave_aqui"
  }
});

const dados = await resposta.json();

POST previsto

A v1 ja aceita notificacoes e acertos. Se criarmos simulacoes de montagem de texto no futuro, o formato sera semelhante a este:

POST /v1/receita/textos
Content-Type: application/json
x-api-key: agb_sua_chave_aqui

{
  "agrotoxico": "PRO000943",
  "cultura": "CUL000001",
  "praga": "PRG000001",
  "metodoAplicacao": "aerea"
}