npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

legale-sdk

v0.2.3

Published

An unnofficial legale API wrapper

Downloads

6

Readme

legale‑sdk

npm version license: MIT

Unofficial SDK for the Legale API, designed for developer ergonomics:

  • Automatic JSON normalization to camelCase.
  • Single entry point: new Legale({ test: true|false }).
  • Helpers for authentication (API key or bearer token), folders, documents, and pagination.

Disclaimer

This is an unofficial, community‑maintained SDK and is not affiliated with or endorsed by Legale. It is provided "as is" without any warranties, express or implied. API behavior and endpoints may change at any time and break this client. You are responsible for complying with Legale’s terms, handling credentials securely, and validating outputs before using them in production. Use at your own risk.

Installation

npm i --save legale-sdk

Quick start

import { Legale } from 'legale-sdk';

// Using the testing environment
const legale = new Legale({ test: true });

// Log in using the API key method
legale.setAPIKey('xxxx-xxxx-...');

// Getting the first 10 documents
const result = await legale.getDocuments(1, 10);
console.log(result);

Environment

Legale has two environments:

Choose the environment:

import { Legale } from 'legale-sdk';

// Using the testing environment
const legale01 = new Legale({ test: true });

// Using the production environment
const legale02 = new Legale({ test: false });

// Using the production environment as default
const legale03 = new Legale();

Authentication

To use the Legale API you must authenticate using either an API key or a bearer token. You have two authentication methods:

  • API Key: Generated in the web app. The API key is valid until you revoke it.
  • Bearer Token: Generated with your email and password. This method returns a temporary token that expires after a few hours.
import { Legale } from 'legale-sdk';

// Using the testing environment
const legale = new Legale({ test: true });

// Log in using the API key method
legale.setAPIKey('xxxx-xxxx-...');

// Log in using the bearer token method
await legale.getToken('[email protected]', '53cur3-p455w0r1d');

API Reference

Legale.getFolders

Returns a Promise<Folder[]> (go to interface).

import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
await legale.setAPIKey('xxxx-xxxx-...');
const folders = await legale.getFolders();

Legale.deleteFolder

Deletes a folder. Returns a Promise<void>. Arguments:

  • guid: string.
import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
await legale.setAPIKey('xxxx-xxxx-...');
await legale.deleteFolder(
   // The folder GUID
   'aaaa-bbbb-...' 
);

Legale.getDocuments

Gets a document list using pagination. Returns a Promise<GetDocumentsResponse> (go to interface). Arguments:

  • page: number → The page index to show (the first page is 1 by the API).
  • pageSize: number → Number of items per page.
import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
legale.setAPIKey('xxxx-xxxx-...');
const result = await legale.getDocuments(
   1,    // Page index, the first page is 1.
   10    // Page size
);

Legale.getDocumentDetail

Gets detailed information about a document. Returns a Promise<DocumentDetail> (go to interface). Arguments:

  • guid: string.
import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
legale.setAPIKey('xxxx-xxxx-...');
const document = await legale.getDocumentDetail('aaaa-bbbb-...');

Legale.createDocument

Uploads a PDF file into Legale. Returns a Promise<Document> (go to interface). Arguments:

import { Legale } from 'legale-sdk';
import { readFile } from 'fs/promises';

const legale = new Legale({ test: true });
legale.setAPIKey('xxxx-xxxx-...');
const document = await legale.createDocument({
   file: await readFile('/path/to/file.pdf'),
   fileName: 'root/remote/path/to/file.pdf',
   description: 'Testing file'
});

Legale.downloadDocument

Gets the document binary data (the PDF file). Returns a Promise<Buffer>. Arguments:

  • guid: string.
import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
legale.setAPIKey('xxxx-xxxx-...');
const buffer = await legale.downloadDocument('aaaa-bbbb-...');

Legale.deleteDocument

Deletes the document from Legale. Returns a Promise<void>. Arguments:

  • guid: string.
import { Legale } from 'legale-sdk';

const legale = new Legale({ test: true });
legale.setAPIKey('xxxx-xxxx-...');
await legale.deleteDocument('aaaa-bbbb-...');