Conecte seu site, aplicativo ou sistema à plataforma. Consuma posts do blog, capture contatos e consulte dados geográficos.
https://api.sispoli.com.br/v1As APIs públicas não requerem autenticação. Para endpoints que necessitam identificar a organização, utilize o parâmetro org_id ou o header X-API-Key.
API Key: Obtenha sua chave em Configurações → Integrações → Chaves de API no painel do SisPoli.
# Exemplo com API Key
curl -H "X-API-Key: sp_live_xxxxxxxxxxxxxxxx" \
https://api.sispoli.com.br/v1/public/captureEndpoints para consumir posts publicados pela organização. A organização é identificada automaticamente pela API Key.
Todos os endpoints de blog requerem o header X-API-Key. A organização é identificada automaticamente pela chave.
/public/blog/postsLista posts publicados com paginação e filtros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | integer | Não | Página (padrão: 1) |
per_page | integer | Não | Itens por página (padrão: 10, máx: 50) |
category | string | Não | Filtrar por slug da categoria |
tag | string | Não | Filtrar por slug da tag |
featured | boolean | Não | Apenas posts em destaque |
search | string | Não | Buscar por título ou resumo |
curl -H "X-API-Key: sp_live_xxxxxxxx" \
"https://api.sispoli.com.br/v1/public/blog/posts?per_page=5&category=noticias"
# Resposta
{
"data": [
{
"id": 1,
"title": "Inauguração da obra no centro",
"slug": "inauguracao-da-obra-no-centro",
"excerpt": "Resumo da notícia...",
"cover_image_url": "https://...",
"category_name": "Notícias",
"author_name": "João Silva",
"published_at": "2026-04-09T15:00:00Z",
"views_count": 42,
"reading_time": 3,
"is_featured": false,
"is_pinned": false,
"tags": [{"name": "Infraestrutura", "slug": "infraestrutura"}]
}
],
"meta": {"total": 15, "page": 1, "per_page": 5, "last_page": 3}
}/public/blog/posts/{slug}Retorna post completo pelo slug (incrementa visualizações automaticamente)
curl -H "X-API-Key: sp_live_xxxxxxxx" \
"https://api.sispoli.com.br/v1/public/blog/posts/inauguracao-da-obra-no-centro"
# Resposta — inclui content (HTML completo), SEO e tags
{
"data": {
"title": "Inauguração da obra no centro",
"slug": "inauguracao-da-obra-no-centro",
"content": "<h2>Detalhes</h2><p>Conteúdo completo...</p>",
"cover_image_url": "https://...",
"seo_title": "Inauguração | Ceci",
"seo_description": "Resumo para SEO...",
"tags": [{"name": "Infraestrutura", "slug": "infraestrutura"}]
}
}/public/blog/posts/categoriesLista categorias ativas com contagem de posts publicados
curl -H "X-API-Key: sp_live_xxxxxxxx" \
"https://api.sispoli.com.br/v1/public/blog/posts/categories"
# Resposta
{
"data": [
{"id": 1, "name": "Notícias", "slug": "noticias", "description": "...", "posts_count": 8},
{"id": 2, "name": "Comunicados", "slug": "comunicados", "posts_count": 3}
]
}/public/blog/posts/tagsLista tags com contagem de posts publicados
curl -H "X-API-Key: sp_live_xxxxxxxx" \
"https://api.sispoli.com.br/v1/public/blog/posts/tags"
# Resposta
{
"data": [
{"id": 1, "name": "Saúde", "slug": "saude", "posts_count": 5},
{"id": 2, "name": "Educação", "slug": "educacao", "posts_count": 3}
]
}/public/blog/posts/{slug}/relatedRetorna até 4 posts relacionados (mesma categoria)
curl -H "X-API-Key: sp_live_xxxxxxxx" \
"https://api.sispoli.com.br/v1/public/blog/posts/inauguracao-da-obra-no-centro/related"
# Resposta — posts da mesma categoria, excluindo o atual
{
"data": [
{"title": "Nova praça inaugurada", "slug": "nova-praca", "excerpt": "...", "cover_image_url": "..."}
]
}Endpoints para captar contatos via formulários configurados no painel. Cada formulário tem um slug único.
/public/forms/{slug}Retorna dados do formulário e da organização (sem autenticação)
curl "https://api.sispoli.com.br/v1/public/forms/ePtN7Wqw"
# Resposta
{
"data": {
"form": {
"name": "Apoio à campanha",
"require_name": true,
"require_phone": true,
"require_email": false,
"require_cpf": false,
"require_city": true
},
"organization": {
"name": "Ceci",
"political_name": "Ceci"
}
}
}/public/forms/{slug}/submitSubmete dados de um contato via formulário
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome completo |
phone | string | Sim | Telefone celular — apenas números, 11 dígitos (DDD + 9 + número). Ex: 82999990000. Sem máscara, sem +55. |
email | string | Não | |
cpf | string | Não | CPF — apenas números, 11 dígitos. Sem pontos ou traço. |
geo_city_id | integer | Não | ID da cidade (via /public/geo) |
birth_date | date | Não | Data de nascimento (YYYY-MM-DD) |
channel | string | Não | Canal: SITE, WHATSAPP, INSTAGRAM, API, OTHER |
gender | string | Não | M, F ou O |
curl -X POST "https://api.sispoli.com.br/v1/public/forms/ePtN7Wqw/submit" \
-H "Content-Type: application/json" \
-d '{
"name": "Maria Silva",
"phone": "82999990000",
"geo_city_id": 2839,
"channel": "SITE"
}'
# Resposta 201
{"message": "Cadastro realizado com sucesso!", "data": {"voter_id": 1052}}
# Resposta 409 (duplicado)
{"message": "Contato já cadastrado", "data": {"voter_id": 1052}}/public/captureCaptação direta via API Key (sem formulário)
Requer: Header X-API-Key
curl -X POST "https://api.sispoli.com.br/v1/public/capture" \
-H "X-API-Key: sp_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "João Oliveira",
"phone": "82988880000",
"email": "joao@email.com"
}'Endpoints para consultar estados, cidades e CEPs. Útil para preencher formulários com dados geográficos.
/geo/statesLista todos os estados brasileiros
/geo/states/{stateId}/citiesLista cidades de um estado
/public/geo/cep/{cep}Consulta CEP e retorna endereço com city_id
# Listar estados
curl "https://api.sispoli.com.br/v1/geo/states"
# Cidades de Alagoas (id=1)
curl "https://api.sispoli.com.br/v1/geo/states/1/cities"
# Consultar CEP
curl "https://api.sispoli.com.br/v1/public/geo/cep/57036410"
# Resposta
{
"data": {
"zip_code": "57036410",
"street": "Rua Exemplo",
"neighborhood": "Centro",
"city_name": "Maceió",
"state_code": "AL",
"geo_city_id": 2839,
"geo_neighborhood_id": 45
}
}| Código | Descrição |
|---|---|
| 200 | Requisição bem-sucedida |
| 201 | Recurso criado com sucesso |
| 401 | API Key inválida, inativa ou não enviada |
| 404 | Recurso não encontrado |
| 409 | Conflito — contato já cadastrado (retorna voter_id) |
| 422 | Validação falhou — campos obrigatórios não enviados |
| 429 | Rate limit excedido |
| 500 | Erro interno do servidor |
Entre em contato com nossa equipe para suporte técnico na integração.
Falar com suporte