Integre seus dados de pesquisa com seu ERP ou BI
REST + JSON. Autenticação por X-API-Key. Cada chave enxerga apenas os dados do seu cliente. Rate limit de 1.000 requests/hora por chave.
1. Gere uma chave
No portal do cliente, abra "Chaves de API" e crie uma nova chave. Ela aparece apenas uma vez — guarde em local seguro.
2. Consulte seus dados
Liste pesquisas, coletas, produtos, locais e relatórios já consolidados. Tudo via GET com paginacao e filtros.
3. Envie seus preços
POST /prices em bulk (até 5k itens) para comparar seus preços com os dos concorrentes coletados em campo.
Base URL
https://api.workanflow.com.br/api/public/v1
Autenticação
Envie a chave no header X-API-Key em todas as requisicoes.
curl -H "X-API-Key: SUA_CHAVE_AQUI" \ https://api.workanflow.com.br/api/public/v1/researches
Endpoints
POSTEnviar seus preços
Envie os preços da sua empresa para habilitar insights de competitividade e relatórios comparativos. Produtos são identificados pelo EAN. Até 5.000 itens por requisicao.
Preço padrão vs preço por loja
Cada item aceita o campo opcional store_code:
- Vazio / ausente → preco PADRAO do cliente, vale para todas as suas lojas.
- Preenchido → preco ESPECIFICO daquela loja propria. Use o codigo que voce ja definiu na aba "Codigos" (em "Lojas e Concorrentes").
- Upsert composto: chave de unicidade e
(EAN, store_code). O mesmo produto pode ter preco diferente em cada loja sua. - Lookup priorizado: o sistema busca primeiro o preco da loja-foco; se nao houver, usa o padrao.
- Restrição: a loja precisa ser PROPRIA do cliente. Tentar setar preco em loja concorrente ou de outro cliente retorna
403;store_codeinexistente retorna404(na linha — outras linhas seguem normal).
Preço de custo (fornecedor) — opcional
O campo opcional cost_price aceita o custo de aquisicao do produto. Quando informado, habilita:
- Calculo de margem em /portal/cenarios em tempo real conforme você move o slider de preço.
- Alerta no Comparativo 1-vs-1 quando concorrente vende abaixo do seu custo (sinal de guerra de preços).
- Aviso vermelho no simulador quando você arrasta o preço para baixo do custo (margem negativa).
Comportamento: ausente / null / "" preserva o valor anterior (nao zera). Negativos sao rejeitados. Aliases ERP comuns: custo, precoCusto, custo_unitario. Nunca obrigatorio — voce decide se vai compartilhar.
cURL
curl -X POST \
-H "X-API-Key: SUA_CHAVE" \
-H "Content-Type: application/json" \
https://api.workanflow.com.br/api/public/v1/prices \
-d '{"items": [
{"ean": "7891234567890", "price": "5.49"}, // padrão
{"ean": "7891234567890", "price": "5.20", "store_code": "LP-001"}, // loja LP-001
{"ean": "7891234567890", "price": "5.79", "store_code": "LP-002"}, // loja LP-002
{"ean": "7891234567891", "price": "12.99", "is_promotional": true,
"store_code": "LP-001"},
{"ean": "7891234567892", "price": "8.99", "cost_price": "6.20"} // com custo (opcional)
]}'Python
import requests
API_KEY = "SUA_CHAVE_AQUI"
BASE = "https://api.workanflow.com.br/api/public/v1"
payload = {
"items": [
# Preço padrão (vale para todas as lojas)
{"ean": "7891234567890", "price": "5.49"},
# Preço específico por loja (codigo gerenciado em "Codigos")
{"ean": "7891234567890", "price": "5.20", "store_code": "LP-001"},
{"ean": "7891234567891", "price": "12.99",
"is_promotional": True, "store_code": "LP-001"},
# Preço + custo (cost_price opcional — habilita margem em Cenarios)
{"ean": "7891234567892", "price": "8.99", "cost_price": "6.20"},
]
}
res = requests.post(
f"{BASE}/prices",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json=payload,
timeout=30,
)
data = res.json()["data"]
print(f"Importados: {data['imported']}, não encontrados: {data['not_found']}")
for err in data.get("errors", []):
print(f" ! {err['ean']} (loja={err.get('store_code')}): {err['error']}")Resposta
{
"data": {
"imported": 3,
"not_found": 0,
"errors": [
{
"ean": "7891234567892",
"error": "Codigo de loja não encontrado",
"store_code": "LP-XYZ"
}
]
},
"meta": null
}Erros por linha (EAN ausente, store_code invalido, preco invalido) não impedem as outras linhas — vem em errorscom o store_code preservado para depuracao.
POST /prices com vigencia
Cada item aceita valid_from e valid_until (ISO date). Pre-cadastre promocoes (ex: dia das maes) com antecedencia. Sem valid_from assume hoje; sem valid_until vale indefinidamente até próximo upsert em (EAN, store_code).
{
"items": [
{"ean": "7891234567890", "price": "9.90"},
{"ean": "7891234567891", "price": "7.90",
"is_promotional": true,
"valid_from": "2026-05-01",
"valid_until": "2026-05-15"}
]
}GETBuscar seus preços
Le os precos que voce ja enviou. Suporta filtros, paginacao, sync incremental (updated_after) e presets de formato pra integracao direta com ERPs.
Filtros (query params)
| Parâmetro | Tipo | Default | O que faz |
|---|---|---|---|
| ean | string ou lista | - | Filtra por EAN; aceita repeticao (ean=A&ean=B). |
| store_code | string | - | Codigo de loja própria. Vazio = padrão. |
| valid_at | date | - | Preços vigentes na data (valid_from ≤ X ≤ valid_until). |
| valid_from_min/max | date range | - | Janela de criação da vigencia. |
| is_promotional | bool | - | Filtrar so promocoes. |
| source | enum | - | csv_upload, manual, api. |
| updated_after | datetime ISO | - | Sync incremental: so registros > este timestamp. |
| page, per_page | int | 1, 50 | Paginacao. per_page max=500. |
| format | enum | canonical | canonical, consinco, bluesoft, linx, sap, csv, csv_simple. |
| fields | csv string | - | Field selection: ean,price,valid_from,... |
cURL canonical
curl -X GET -H "X-API-Key: SUA_CHAVE" \ "https://api.workanflow.com.br/api/public/v1/prices?ean=7891234567890"
Sync incremental do ERP
# Roda toda madrugada via cron, traz so o que mudou desde ontem, # ja com nomes de campo no padrao Consinco: curl -X GET -H "X-API-Key: SUA_CHAVE" \ "https://api.workanflow.com.br/api/public/v1/prices?updated_after=2026-04-27T00:00:00Z&format=consinco"
Presets de formato (Consinco / Bluesoft / Linx / SAP)
Mesmo dado, nomes de campo diferentes. Use ?format=... e receba a resposta no padrão do seu ERP — sem ETL no meio.
| Canonico | Consinco | Bluesoft | Linx | SAP |
|---|---|---|---|---|
| ean | Codigo | productCode | codigo_produto | MATERIAL |
| price | Preço | priceValue | preco_venda | PRICE |
| valid_from | DataInicioVigencia | validFrom | data_inicio | VALID_FROM |
| valid_until | DataFimVigencia | validTo | data_fim | VALID_TO |
| store_code | CodigoFilial | storeCode | filial | PLANT |
| is_promotional | EmPromocao | isPromo | promocional | IS_PROMO |
Consinco
curl -X GET -H "X-API-Key: SUA_CHAVE" \
"https://api.workanflow.com.br/api/public/v1/prices?format=consinco"
# Resposta
[
{
"Codigo": "7891234567890",
"Preço": "5.49",
"DataInicioVigencia": "2026-04-27",
"DataFimVigencia": null,
"CodigoFilial": "LP-001",
"EmPromocao": false
}
]Bluesoft
curl -X GET -H "X-API-Key: SUA_CHAVE" \
"https://api.workanflow.com.br/api/public/v1/prices?format=bluesoft"
# Resposta
[
{
"productCode": "7891234567890",
"priceValue": "5.49",
"validFrom": "2026-04-27",
"validTo": null,
"storeCode": "LP-001",
"isPromo": false
}
]CSV (download direto)
curl -X GET -H "X-API-Key: SUA_CHAVE" \ "https://api.workanflow.com.br/api/public/v1/prices?format=csv" \ -o preços.csv # preços.csv (UTF-8 com BOM, separador ;) ean;price;valid_from;valid_until;store_code;is_promotional 7891234567890;5.49;2026-04-27;;LP-001;false
💡 Pra integrar com seu ERP: GET /prices?updated_after=ontem&format=SEU_ERP roda toda noite via cron, traz so precos updated_after=ontem, ja com nomes de campo certos. Zero ETL. Combine com fields= pra reduzir payload.
Seguranca e limites
- Toda chave enxerga apenas os dados do cliente dono da chave.
- Rate limit: 1.000 requests/hora por chave. Acima disso: HTTP 429.
- Cada request e logado (endpoint, método, status, IP, user agent) e visível no portal.
- Desative ou exclua uma chave a qualquer momento em
/portal/api-keys. - Chaves são exibidas apenas uma vez no momento da criação. Guarde em local seguro.
Pronto para integrar?
Entre no portal e gere sua primeira chave.
Acessar portal