Skip to main content

# API Endpoints Reference - Krayin CRM v2.1.6

Referência completa de todos os endpoints disponíveis na API REST.


📋 Índice

  1. Autenticação
  2. Leads
  3. Contacts/Persons
  4. Organizations
  5. Products
  6. Activities
  7. Quotes
  8. Webhooks
  9. Tags
  10. Paginação e Filtros

1. Autenticação

POST /api/v1/login

Obter token de acesso.

Request:

curl -X POST "https://crm.memudecore.com.br/api/v1/login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "email=admin@example.com&password=admin123&device_name=MeuApp"

Response:

{
  "token": "1|LargeRandomTokenString",
  "message": "login successfully"
}

2. Leads

GET /api/v1/leads

Listar todos os leads.

curl -X GET "https://crm.memudecore.com.br/api/v1/leads" \
  -H "Authorization: Bearer {token}"

Query Parameters:

Param Tipo Descrição
page int Página atual
per_page int Itens por página (default: 15)
search string Busca por título
source_id int Filtrar por fonte
status_id int Filtrar por status
sales_owner_id int Filtrar por vendedor

Exemplo com Filtros:

curl -X GET "https://crm.memudecore.com.br/api/v1/leads?page=1&per_page=10&source_id=1" \
  -H "Authorization: Bearer {token}"

GET /api/v1/leads/{id}

Obter lead específico.

curl -X GET "https://crm.memudecore.com.br/api/v1/leads/42" \
  -H "Authorization: Bearer {token}"

Response:

{
  "data": {
    "id": 42,
    "title": "Empresa ABC",
    "source_id": 1,
    "lead_type_id": 2,
    "sales_owner_id": 1,
    "status_id": 1,
    "value": 5000,
    "expected_close_date": "2026-02-28",
    "description": "Lead interessado no produto X",
    "contact_person": { ... },
    "organization": { ... },
    "activities": [ ... ],
    "created_at": "2026-01-18T10:30:00Z",
    "updated_at": "2026-01-18T10:30:00Z"
  }
}

POST /api/v1/leads

Criar novo lead.

curl -X POST "https://crm.memudecore.com.br/api/v1/leads" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Novo Lead - Empresa XYZ",
    "source_id": 1,
    "lead_type_id": 2,
    "sales_owner_id": 1,
    "value": 10000,
    "expected_close_date": "2026-03-15",
    "description": "Lead capturado via WhatsApp",
    "contact_person_id": 5,
    "organization_id": 3,
    "product_ids": [1, 2],
    "tags": ["whatsapp", "premium"]
  }'

Campos Obrigatórios:

Campo Tipo Descrição
title string Nome/título do lead
source_id int ID da fonte (Web, WhatsApp, etc)
lead_type_id int ID do tipo de lead
sales_owner_id int ID do vendedor responsável

Campos Opcionais:

Campo Tipo Descrição
value decimal Valor estimado
expected_close_date date Data prevista de fechamento
description string Descrição
contact_person_id int ID do contato
organization_id int ID da empresa
product_ids array IDs dos produtos
tags array Tags do lead

PUT /api/v1/leads/{id}

Atualizar lead.

curl -X PUT "https://crm.memudecore.com.br/api/v1/leads/42" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "value": 15000,
    "status_id": 2,
    "description": "Atualização: cliente confirmou interesse"
  }'

DELETE /api/v1/leads/{id}

Deletar lead.

curl -X DELETE "https://crm.memudecore.com.br/api/v1/leads/42" \
  -H "Authorization: Bearer {token}"

POST /api/v1/leads/{id}/convert

Converter lead para oportunidade/cliente.

curl -X POST "https://crm.memudecore.com.br/api/v1/leads/42/convert" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "create_contact": true,
    "create_organization": true
  }'

3. Contacts/Persons

GET /api/v1/contacts/persons

Listar contatos.

curl -X GET "https://crm.memudecore.com.br/api/v1/contacts/persons?search=joao" \
  -H "Authorization: Bearer {token}"

POST /api/v1/contacts/persons

Criar contato.

curl -X POST "https://crm.memudecore.com.br/api/v1/contacts/persons" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva",
    "emails": [
      {"value": "joao@empresa.com", "label": "work"}
    ],
    "contact_numbers": [
      {"value": "+5511987654321", "label": "work"}
    ],
    "organization_id": 1
  }'

GET /api/v1/contacts/persons/{id}

Obter contato específico.

curl -X GET "https://crm.memudecore.com.br/api/v1/contacts/persons/5" \
  -H "Authorization: Bearer {token}"

PUT /api/v1/contacts/persons/{id}

Atualizar contato.

curl -X PUT "https://crm.memudecore.com.br/api/v1/contacts/persons/5" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva Santos",
    "job_title": "Diretor Comercial"
  }'

DELETE /api/v1/contacts/persons/{id}

Deletar contato.

curl -X DELETE "https://crm.memudecore.com.br/api/v1/contacts/persons/5" \
  -H "Authorization: Bearer {token}"

4. Organizations

GET /api/v1/contacts/organizations

Listar organizações.

curl -X GET "https://crm.memudecore.com.br/api/v1/contacts/organizations" \
  -H "Authorization: Bearer {token}"

POST /api/v1/contacts/organizations

Criar organização.

curl -X POST "https://crm.memudecore.com.br/api/v1/contacts/organizations" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Empresa ABC Ltda",
    "address": {
      "address": "Rua das Flores, 123",
      "city": "São Paulo",
      "state": "SP",
      "postcode": "01234-567",
      "country": "BR"
    }
  }'

5. Products

GET /api/v1/products

Listar produtos.

curl -X GET "https://crm.memudecore.com.br/api/v1/products" \
  -H "Authorization: Bearer {token}"

POST /api/v1/products

Criar produto.

curl -X POST "https://crm.memudecore.com.br/api/v1/products" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Plano Premium",
    "description": "Plano com todos os recursos",
    "sku": "PLAN-PREMIUM",
    "price": 299.90,
    "quantity": 1
  }'

6. Activities

GET /api/v1/activities

Listar atividades.

curl -X GET "https://crm.memudecore.com.br/api/v1/activities?lead_id=42" \
  -H "Authorization: Bearer {token}"

Filtros:

Param Descrição
lead_id Filtrar por lead
type Tipo: call, meeting, lunch, email, note
is_done Status: 0 ou 1

POST /api/v1/activities

Criar atividade.

curl -X POST "https://crm.memudecore.com.br/api/v1/activities" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "call",
    "title": "Ligação de follow-up",
    "description": "Confirmar interesse no plano premium",
    "lead_id": 42,
    "scheduled_from": "2026-01-20T14:00:00",
    "scheduled_to": "2026-01-20T14:30:00",
    "is_done": 0
  }'

Tipos de Atividade:

Tipo Descrição
call Ligação telefônica
meeting Reunião
lunch Almoço de negócios
email Email
note Nota/Observação

7. Quotes

GET /api/v1/quotes

Listar cotações.

curl -X GET "https://crm.memudecore.com.br/api/v1/quotes?lead_id=42" \
  -H "Authorization: Bearer {token}"

POST /api/v1/quotes

Criar cotação.

curl -X POST "https://crm.memudecore.com.br/api/v1/quotes" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Proposta Comercial - Plano Premium",
    "lead_id": 42,
    "person_id": 5,
    "billing_address": {
      "address": "Rua das Flores, 123",
      "city": "São Paulo",
      "state": "SP",
      "postcode": "01234-567",
      "country": "BR"
    },
    "items": [
      {
        "product_id": 1,
        "quantity": 1,
        "price": 299.90,
        "discount_percent": 10
      }
    ],
    "discount_percent": 5,
    "expired_at": "2026-02-18"
  }'

8. Webhooks

GET /api/v1/webhooks

Listar webhooks configurados.

curl -X GET "https://crm.memudecore.com.br/api/v1/webhooks" \
  -H "Authorization: Bearer {token}"

POST /api/v1/webhooks

Criar webhook.

curl -X POST "https://crm.memudecore.com.br/api/v1/webhooks" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "N8N - Novos Leads",
    "entity_type": "leads",
    "events": ["created", "updated"],
    "url": "https://n8n.memudecore.com.br/webhook/krayin-leads",
    "headers": {
      "Authorization": "Bearer webhook_secret_token"
    },
    "is_active": true
  }'

9. Tags

GET /api/v1/tags

Listar tags.

curl -X GET "https://crm.memudecore.com.br/api/v1/tags" \
  -H "Authorization: Bearer {token}"

POST /api/v1/tags

Criar tag.

curl -X POST "https://crm.memudecore.com.br/api/v1/tags" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WhatsApp",
    "color": "#25D366"
  }'

10. Paginação e Filtros

Estrutura de Resposta Paginada

{
  "data": [ ... ],
  "links": {
    "first": "https://crm.memudecore.com.br/api/v1/leads?page=1",
    "last": "https://crm.memudecore.com.br/api/v1/leads?page=5",
    "prev": null,
    "next": "https://crm.memudecore.com.br/api/v1/leads?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "per_page": 15,
    "to": 15,
    "total": 72
  }
}

Parâmetros de Paginação

Param Default Descrição
page 1 Página atual
per_page 15 Itens por página (máx: 100)

Exemplo de Iteração por Páginas

async function getAllLeads() {
  let allLeads = [];
  let page = 1;
  let hasMore = true;
  
  while (hasMore) {
    const response = await fetch(
      `https://crm.memudecore.com.br/api/v1/leads?page=${page}&per_page=50`,
      { headers: { 'Authorization': `Bearer ${token}` } }
    );
    const data = await response.json();
    
    allLeads = [...allLeads, ...data.data];
    hasMore = data.links.next !== null;
    page++;
  }
  
  return allLeads;
}

📊 Tabela Resumo

Recurso Create Read Update Delete Filtros
Leads ✅ POST ✅ GET ✅ PUT ✅ DELETE source_id, status_id, sales_owner_id
Persons ✅ POST ✅ GET ✅ PUT ✅ DELETE organization_id, search
Organizations ✅ POST ✅ GET ✅ PUT ✅ DELETE search
Products ✅ POST ✅ GET ✅ PUT ✅ DELETE search
Activities ✅ POST ✅ GET ✅ PUT ✅ DELETE lead_id, type
Quotes ✅ POST ✅ GET ✅ PUT ✅ DELETE lead_id
Webhooks ✅ POST ✅ GET ✅ PUT ✅ DELETE entity_type
Tags ✅ POST ✅ GET ✅ PUT ✅ DELETE -

Última atualização: Janeiro 2026