The Beam Node SDK gives web developers an easy way to interact with their Beam apps.

Installation

Install the package with npm:

npm install @beamcloud/beam-js

…or using yarn:

yarn add @beamcloud/beam-js

Importing

Import the package:

import beam from "@beamcloud/beam-js";

Then, initialize the Beam Client, passing your Beam Token as a parameter:

const client = await beam.init('YOUR_BEAM_TOKEN');

You can find your Beam Token in the API Keys section of the dashboard.

Usage

Deployments

list

Retrieves a list of all deployments.

const deployments = await client.deployments.list()	

get

Fetches a deployment by ID.

const deployment = await client.deployments.get('DEPLOYMENT_ID');

delete

Deletes a deployment by ID.

await client.deployments.delete('DEPLOYMENT_ID');

refresh

Reloads the deployment data.

const deployment = await client.deployments.get('DEPLOYMENT_ID');
await deployment.refresh();

call

Makes an API request to the deployment.

await client.deployments.call('DEPLOYMENT_ID');

realtime

Opens a WebSocket connection for real-time updates.

const stream = deployment.realtime();
stream.on('data', (data) => {
  console.log(data);
});

Here’s a more complete example:

import beam from "@beamcloud/beam-js";

const streamResponse = async () => {
  const client = await beam.init(process.env.BEAM_TOKEN);
  const deployment = await client.deployments.get({ id: process.env.BEAM_DEPLOYMENT_ID });

  const connection = await deployment.realtime();
  
  const payload = {
    "event": "Echo this back",
  }

  connection.onmessage = (message) => {
      console.log(`🎉 Response: ${message.data}`);
  };

  connection.send(JSON.stringify(payload));

  setTimeout(() => {
    connection.close();
  }, 1000);
};

streamResponse();

Tasks

list

Retrieves a list of all tasks.

const tasks = await client.tasks.list();

get

Fetches a specific task by ID.

const task = await client.tasks.get('TASK_ID');
console.log(task.data);

delete

Deletes a task by ID.

await client.tasks.delete('TASK_ID');

cancel

Cancel a task.

const task = await client.tasks.get('TASK_ID');
await task.cancel();

refresh

Reloads the task data.

const task = await client.tasks.get('TASK_ID');
await task.refresh();