Skip to main content

šŸ“š Documentação da API Krayin CRM

Guia completoCompleto parade instalação, configuraçIntegração e usoUso

da
API

VersĆ£o: REST2.1.1 doData: KrayinJaneiro CRM.2026 URL Base: https://crm.memudecore.com.br/api/v1/ Documentação Interativa: https://crm.memudecore.com.br/api/documentation


šŸ“‹šŸŽÆ ƍndice

VISƃO
  1. Visão Geral
  2. Instalação
  3. Autenticação
  4. Estrutura de URLs
  5. Rate Limiting
  6. Primeiros Passos
  7. Troubleshooting

Visão GeralGERAL

A API REST do Krayin CRM Ʃpermite construƭdaintegrar sobrefacilmente Laravelo Sanctumsistema de CRM com aplicaƧƵes externas, automatizaƧƵes e forneceoutros sistemas empresariais. Esta API oferece acesso completo aaos todasrecursos asde entidadesleads, docontatos, CRM:atividades e configuraƧƵes.

šŸ”‘

CaracterĆ­sticasPrincipais
  • LaravelSanctum(Token-based)
  • Formato:JSONAPI
  • Protocolo:HTTPS
  • Documentação:Swagger/OpenAPI3.0
  • Rate Limiting:ConfigurĆ”vel
  • Versionamento:v1(atual)
    RecursoOperaçõesEndpointAutenticação: Base
    Leads CRUD,REST Conversão /api/v1/leads
    Contacts/PersonsCRUD /api/v1/contacts/persons
    OrganizationsCRUD /api/v1/contacts/organizations
    Products CRUD /api/v1/products
    ActivitiesCRUD/api/v1/activities
    QuotesCRUD/api/v1/quotes
    WebhooksCRUD/api/v1/webhooks
    TagsCRUD/api/v1/tags

    InstalaçãošŸš€ INƍCIO RƁPIDO

    Passo1. 1: Instalar o Pacote da API

    # Dentro do container
    docker exec -it krayin bash
    
    # Instalar pacote
    composer require krayin/rest-api
    

    Passo 2: Executar Instalação

    php artisan krayin-rest-api:install
    

    Passo 3: Configurar .env

    # Adicionar ao .env
    SANCTUM_STATEFUL_DOMAINS=crm.memudecore.com.br
    
    # Para desenvolvimento local
    # SANCTUM_STATEFUL_DOMAINS=localhost
    

    Passo 4: Verificar Instalação

    Acesse a documentação interativa:

    https://crm.memudecore.com.br/api/admin/documentation
    

    Autenticação

    Obter Token de Acesso

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

    Resposta:

    {
      "token"data": {
        "id": 1,
        "name": "1|LargeRandomTokenString1234567890"Example Admin",
        "email": "admin@example.com",
        "role": {
          "name": "Administrador",
          "permission_type": "all"
        }
      },
      "message": "loginLogin successfully"successful.",
      "token": "4|TqQU5H7ExZbrM8ErdwxXGC4Q2yWWFGZ5DjarC5q0050411c7"
    }
    

    2. Usar o Token nas RequisiƧƵes

    curl -X GET "https://crm.memudecore.com.br/api/v1/leads" \
      -H "Authorization: Bearer 1|LargeRandomTokenString1234567890"4|TqQU5H7ExZbrM8ErdwxXGC4Q2yWWFGZ5DjarC5q0050411c7" \
      -H "Accept: application/json"
    

    šŸ“‹ RECURSOS DISPONƍVEIS

    CaracterĆ­sticasšŸŽÆ doLeads Token/api/v1/leads

    Gerenciamento completo de prospects e oportunidades de vendas.

    logindesegura,nuncaexpornofrontend
    AspectoMétodo DetalheEndpointDescrição
    FormatoGET `{id}/leadsListar todos os leads
    ValidadePOST Até/leadsCriar novo login ou revogaçãolead
    MĆŗltiplos TokensGET Cada/leads/{id} Obter geralead novo token, invalida anterioresespecĆ­fico
    ArmazenamentoPUT Guardar/leads/{id} Atualizar formalead
    DELETE /leads/{id} Excluir lead

    CriaršŸ‘„ TokenContatos Permanente (via Tinker)/api/v1/contacts

    docker exec -it krayin php artisan tinker
    
    $user = User::where('email', 'admin@example.com')->first();
    $token = $user->createToken('Integration-Token');
    echo $token->plainTextToken;
    // SaĆ­da: 1|abc123xyz...
    

    Token com Expiraçã

    Gestão

    // Token vƔlido por 30 dias
    $token = $user->createToken('API-Token', ['*'], now()->addDays(30));
    

    Estrutura de URLs

    pessoas

    Basee URL

    https://crm.memudecore.com.br/api/v1
    

    Exemplos de Endpoints

    organizaƧƵes.

    OperaçãoMétodo EndpointDescrição
    LoginGET/contacts/personsListar pessoas
    POST /api/v1/logincontacts/personsCriar pessoa
    Listar Leads GET /api/v1/leadscontacts/organizationsListar organizaƧƵes
    Criar Lead POST /api/v1/leadscontacts/organizations
    Criar
    Ver LeadGET/api/v1/leads/{id}
    Atualizar LeadPUT/api/v1/leads/{id}
    Deletar LeadDELETE/api/v1/leads/{id}
    Converter LeadPOST/api/v1/leads/{id}/convert
    DocumentaçorganizaçãoGET/api/admin/documentation

    āš ļø Importante

    • šŸ“‹ NƃOAtividades use /publicapi/v1/activities na

      Registro URL

    • de
    • tarefas, NƃOreuniƵes usee barra final (/leads/ āŒ → /leads āœ…)
    • SEMPRE use HTTPS em produção

    Rate Limiting

    Limites Recomendados

    interaƧƵes.

    bruteObterAtualizar
    MétodoEndpoint LimiteMotivoDescrição
    GET/api/v1/loginactivities 10/minListar atividades
    POST Prevenir/activities Criar forceatividade
    GET /api/v1/*activities/{id} 100/min Leituras são segurasatividade
    POSTPUT /api/v1/*activities/{id} 50/min Escritas requerem cuidado
    Default60/minSeguranƧa geralatividade

    Headersāš™ļø deConfiguraƧƵes Rate Limit

    X-RateLimit-Limit: 60
    X-RateLimit-Remaining: 45
    X-RateLimit-Reset: 1705425600
    /api/v1/configuration

    Resposta Quando Excede

    HTTP/1.1 429 Too Many Requests
    
    {
      "message": "Too Many Requests"
    }
    

    Configurar Rate Limiting Personalizado

    EditeAcesso routes/api.php:Ơs configuraƧƵes do sistema.

    Route::middleware(['throttle:60,1'])->group(function () {
        Route::get('/leads', [LeadController::class, 'index']);
    });
    

    PrimeirosšŸ’” PassosEXEMPLOS PRƁTICOS

    Exemplo Completo:šŸ“ Criar um Novo Lead

    #!/bin/bash
    
    # 1. Obter token
    TOKEN_RESPONSE=$(curl -s -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=Script")
    
    TOKEN=$(echo $TOKEN_RESPONSE | jq -r '.token')
    echo "Token obtido: $TOKEN"
    
    # 2. Criar lead
    curl -X POST "https://crm.memudecore.com.br/api/v1/leads" \
      -H "Authorization: Bearer $TOKEN"{SEU_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "title": "Novo ClienteLead - Empresa ABC",
        "source_id"description": "Interesse em nosso produto premium",
        "lead_value": 5000,
        "sales_owner_id": 1,
        "lead_source_id": 1,
        "lead_type_id": 1,
        "sales_owner_id"person": 1,{
          "name": "João Silva",
          "emails": [
            {"value": 5000,"joao@empresaabc.com", "description"label": "Leadwork"}
          criado],
          via"contact_numbers": API"[
            {"value": "11999999999", "label": "mobile"}
          ]
        }
      }'
    

    šŸ“Š Listar Leads com Filtros

    curl -X GET "https://crm.memudecore.com.br/api/v1/leads?page=1&limit=10&sort=created_at&order=desc" \
      -H "Authorization: Bearer {SEU_TOKEN}" \
      -H "Accept: application/json"
    

    šŸ“‹ Criar uma Atividade

    curl -X POST "https://crm.memudecore.com.br/api/v1/activities" \
      -H "Authorization: Bearer {SEU_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "title": "Reunião com Cliente",
        "type": "meeting",
        "comment": "Discussão sobre proposta comercial",
        "schedule_from": "2026-01-20 14:00:00",
        "schedule_to": "2026-01-20 15:00:00",
        "lead_id": 1,
        "user_id": 1
      }'
    

    šŸ” AUTENTICAƇƃO E SEGURANƇA

    Token de Acesso

    • Tipo: Bearer Token
    • Formato: Laravel Sanctum
    • Localização: Header Authorization: Bearer {token}
    • Expiração: ConfigurĆ”vel (padrĆ£o: 365 dias)

    Boas PrƔticas de SeguranƧa

    1. Armazene tokens de forma segura (variĆ”veis de ambiente)
    2. Use HTTPS apenas para todas as requisiƧƵes
    3. Implemente rate limiting em sua aplicação
    4. Renove tokens periodicamente
    5. Monitore logs de acesso

    Exemplo JavaScript/Fetchde Configuração Segura

    // LoginNode.js/Express exemplo
    const loginResponseAPI_BASE = await fetch('https://crm.memudecore.com.br/api/v1/login',v1';
    const API_TOKEN = process.env.KRAYIN_API_TOKEN;
    
    const headers = {
      method:'Authorization': 'POST'`Bearer ${API_TOKEN}`,
      headers: {
      'Content-Type': 'application/x-www-form-urlencoded'json',
      },
      body:'Accept': 'email=admin@example.com&password=admin123&device_name=WebApp'application/json'
    });
    

    šŸ”„ INTEGRAƇƕES COMUNS

    🌐 Integração com Site/Landing Page

    // Capturar lead do formulƔrio web
    async function criarLead(dadosFormulario) {
      const { token } = await loginResponse.json();
    
    // Criar Lead
    const leadResponseresponse = await fetch('https://crm.memudecore.com.br/api/v1/leads', {
        method: 'POST',
        headers: {
          'Authorization': `'Bearer ${token}`,' + API_TOKEN,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          title: '`Lead viado JavaScript'site - ${dadosFormulario.empresa}`,
          source_id:description: 1,dadosFormulario.mensagem,
          lead_type_id:lead_value: 1,dadosFormulario.valorEstimado,
          sales_owner_id:person: 1,{
            name: dadosFormulario.nome,
            emails: [{value: 3000dadosFormulario.email, label: 'work'}],
            contact_numbers: [{value: dadosFormulario.telefone, label: 'mobile'}]
          }
        })
      });
    
      constreturn lead = await leadResponse.response.json();
    console.log('Lead criado:', lead);}
    

    šŸ“±

    Troubleshooting

    Integração

    Errocom 401 UnauthorizedWhatsApp/Chat

    Causa: Token invĆ”lido ou expirado

    Solução:

    # Gerar novo token
    curlPython -X POSTSync com WhatsApp Business API
    import requests
    
    def sincronizar_contato_whatsapp(numero_whatsapp, nome):
        url = "https://crm.memudecore.com.br/api/v1/login"contacts/persons"
        \headers -d= {
            "email=admin@example.com&password=admin123"Authorization": f"Bearer {API_TOKEN}",
            "Content-Type": "application/json"
        }
        data = {
            "name": nome,
            "contact_numbers": [
                {"value": numero_whatsapp, "label": "whatsapp"}
            ]
        }
    
        response = requests.post(url, json=data, headers=headers)
        return response.json()
    

    ErrošŸ”— Integração com N8N (Automação)

    {
      "nodes": [
        {
          "type": "n8n-nodes-base.webhook",
          "webhook": {
            "path": "novo-lead"
          }
        },
        {
          "type": "n8n-nodes-base.httpRequest",
          "url": "https://crm.memudecore.com.br/api/v1/leads",
          "method": "POST",
          "headers": {
            "Authorization": "Bearer {{$env.KRAYIN_TOKEN}}"
          }
        }
      ]
    }
    

    šŸ“Š Integração com BI/Analytics

    -- Exemplo de extração para Power BI/Tableau
    -- Via script Python que consome a API
    
    import pandas as pd
    import requests
    
    def extrair_leads_para_bi():
        headers = {'Authorization': f'Bearer {API_TOKEN}'}
        response = requests.get(
            'https://crm.memudecore.com.br/api/v1/leads?limit=1000',
            headers=headers
        )
    
        leads_data = response.json()
        df = pd.DataFrame(leads_data['data'])
    
        # Salvar em CSV para BI
        df.to_csv('leads_export.csv', index=False)
        return df
    

    ⚔ CASOS DE USO PRÁTICOS

    1. E-commerce → CRM

    Sincronizar automaticamente novos pedidos como leads:

    // Webhook no e-commerce
    app.post('/webhook/novo-pedido', async (req, res) => {
      const pedido = req.body;
    
      await criarLead({
        title: `Pedido #${pedido.id} - ${pedido.cliente.nome}`,
        lead_value: pedido.total,
        person: {
          name: pedido.cliente.nome,
          emails: [{value: pedido.cliente.email, label: 'work'}]
        }
      });
    });
    

    2. Sistema de Tickets → CRM

    Converter tickets em atividades:

    // PHP - Converter ticket em atividade
    function converterTicketEmAtividade($ticket) {
        $data = [
            'title' => "Suporte: " . $ticket['assunto'],
            'type' => 'call',
            'comment' => $ticket['descricao'],
            'lead_id' => buscarLeadPorEmail($ticket['email_cliente'])
        ];
    
        return chamarApiKrayin('POST', '/activities', $data);
    }
    

    3. Marketing Automation → CRM

    Sync de campanhas com leads:

    # Mailchimp/RD Station → Krayin
    def sincronizar_campanha_email():
        # Obter dados da campanha
        campanhas = obter_campanhas_mailchimp()
    
        for campanha in campanhas:
            for contato in campanha['contatos_convertidos']:
                criar_lead_krayin({
                    'title': f"Lead da campanha: {campanha['nome']}",
                    'description': f"Converteu via email: {campanha['assunto']}",
                    'person': contato
                })
    

    šŸ“Š MONITORAMENTO E LOGS

    Logs da API

    # Verificar logs em tempo real
    docker exec krayin_krayin.1.xxxxx tail -f storage/logs/laravel.log
    
    # Filtrar por API requests
    docker exec krayin_krayin.1.xxxxx grep "api/v1" storage/logs/laravel.log
    

    MƩtricas Importantes

    • Taxa de sucesso das requisiƧƵes
    • Tempo de resposta mĆ©dio
    • Picos de uso
    • Tipos de erro mais comuns

    šŸ”§ TROUBLESHOOTING

    Erros Comuns

    401 Unauthorized

    {"message": "Unauthenticated."}
    

    Solução: Verificar se o token estĆ” correto e nĆ£o expirado.

    422 Validation Error

    Causa: Campos obrigatórios faltando

    Resposta tĆ­pica:

    {
      "message": "The given data was invalid.",
      "errors": {
        "title"email": ["The title field is required."],
        "source_id": ["The source idemail field is required."]
      }
    }
    

    Erro 429 Too Many Requests

    Causa: Rate limit excedido

    Solução: Aguardar tempo indicado no header X-RateLimit-Reset

    Erro 500 Internal Server Error

    Causa: Erro no servidor

    Verificar:

    docker exec krayin tail -50 storage/logs/laravel.log
    

    CORS Error (Browser)

    Causa: DomĆ­nio nĆ£o autorizado

    Solução: Verificar campos obrigatórios na documentação.

    429 Too Many Requests

    config/cors.php{"message": "Too many attempts."}
    
    e

    Solução: Implementar rate limiting na aplicação cliente.

    Testes de Conectividade

    SANCTUM_STATEFUL_DOMAINS# Testar conectividade bƔsica
    curl -I https://crm.memudecore.com.br/api/v1/
    
    # Testar autenticação
    curl -H "Authorization: Bearer {TOKEN}" \
      https://crm.memudecore.com.br/api/v1/leads?limit=1
    


    šŸ“ššŸ“– DocumentaçãoRECURSOS RelacionadaADICIONAIS

    DocumentoConteĆŗdo
    API-ENDPOINTS.mdLista completa de endpoints
    WEBHOOKS.mdConfiguração de webhooks
    INTEGRATIONS.mdN8N, WhatsApp, Operaes

    • Documentação Oficial: https://devdocs.krayincrm.com
    • API Docs Interativo:Interativa: https://crm.memudecore.com.br/api/admin/documentation
    • GitHubSwagger REST API:UI: https://github.com/krayin/rest-apiInterface para testar endpoints
    • Fóruns:Postman Collection: https://forums.krayincrm.comImportar collection (se disponĆ­vel)

    Contato TƩcnico

    • Suporte: [seu-email-suporte]
    • Documentação: Este documento
    • Updates: Acompanhar releases do Krayin CRM

    šŸ“ CHANGELOG E VERSIONING

    v2.1.1 (Atual)

    • āœ… API REST completa implementada
    • āœ… Autenticação Sanctum
    • āœ… Documentação Swagger
    • āœ… Endpoints CRUD completos
    • āœ… Suporte a webhooks

    Próximas Versões

    • šŸ”„ Webhooks customizĆ”veis
    • šŸ”„ Filtros avanƧados
    • šŸ”„ Bulk operations
    • šŸ”„ GraphQL support

    āš–ļø TERMOS DE USO

    Rate Limits

    • PadrĆ£o: 60 requisiƧƵes/minuto por token
    • Burst: 1000 requisiƧƵes/hora
    • Enterprise: Limites customizĆ”veis

    SLA

    • Disponibilidade: 99.9%
    • Tempo de resposta: < 200ms (mĆ©dia)
    • Suporte: HorĆ”rio comercial

    ÚltimaDocumentação atualização:gerada em Janeiro 2026 Versão 1.0 - API Krayin CRM v2.1.1