@kanvas/core SDK

The official JavaScript/TypeScript SDK for Kanvas. Wraps the GraphQL API with typed methods for every module.

Installation

npm install @kanvas/core

Setup with Super Admin Key

For agents and server-to-server — no login required:

import KanvasCore from "@kanvas/core";

const kanvas = new KanvasCore({
  url: process.env.KANVAS_API_URL,
  key: process.env.KANVAS_ADMIN_KEY,  // X-Kanvas-Key (super admin)
});

Setup with App Key + User Auth

For frontend apps with user sessions:

import KanvasCore, { genericAuthMiddleware } from "@kanvas/core";

const kanvas = new KanvasCore({
  url: process.env.KANVAS_API_URL,
  key: process.env.KANVAS_APP_KEY,    // X-Kanvas-App (app key)
  middlewares: [
    genericAuthMiddleware(() => {
      return localStorage.getItem("kanvas_token") || "";
    }),
  ],
});

Available Modules

FieldTypeDescription
kanvas.authAuthLogin, logout, register, refresh token, password reset
kanvas.usersUsersUser management, invites, device linking
kanvas.leadsLeadsCreate, update, delete, fetch leads
kanvas.peoplePeopleContact management
kanvas.companiesCompaniesCompany data
kanvas.companiesBranchesBranchesBranch management
kanvas.inventoryInventoryProducts, variants, warehouses, categories, attributes
kanvas.orderOrderOrder creation, payment intents
kanvas.cartCartShopping cart operations
kanvas.messagesMessagesMessaging with file uploads
kanvas.messagesTypesTypesMessage type definitions
kanvas.rolesRolesRole management
kanvas.customFieldsCustomFieldsCustom field CRUD
kanvas.filesystemFilesystemFile uploads
kanvas.tagsTagsTag management
kanvas.channelsChannelsChannel management
kanvas.followFollowFollow relationships
kanvas.agentsAgentsAI agent management
kanvas.workflowWorkflowWorkflow automation
kanvas.receiverReceiverWebhook receivers
kanvas.notificationsNotificationsNotification handling
kanvas.eventEventEvent management

Authentication

// Login
const { token, user } = await kanvas.auth.login("agent@example.com", "password");

// Register
const { token, user } = await kanvas.auth.register({
  displayname: "My Agent",
  email: "agent@example.com",
  password: "password",
  password_confirmation: "password",
});

// Logout
await kanvas.auth.logout();

CRM Operations

// Create a lead
const lead = await kanvas.leads.createLead({
  title: "New deal",
  people_id: 1,
  pipeline_stage_id: 1,
});

// Create a person
const person = await kanvas.people.createPeople({
  firstname: "Jane",
  lastname: "Doe",
  email: "jane@example.com",
});

// Update a person
await kanvas.people.updatePeople(personId, { firstname: "Janet" });

Inventory Operations

// Create a product
const product = await kanvas.inventory.createProduct({
  input: {
    name: "Widget",
    slug: "widget",
    description: "A great widget",
    productsTypes: { id: 1 },
  },
});

// Upload a file
const file = await kanvas.filesystem.uploadFile(fileBlob);

Direct GraphQL with Apollo Client

For custom queries, use the underlying Apollo Client:

import { gql } from "@apollo/client";

const result = await kanvas.client.query({
  query: gql`
    query {
      leads(first: 10) { data { id title } }
    }
  `,
  fetchPolicy: "no-cache",
});