v0.9.0 — Private Beta

Quickstart

Ship your first background job in under 15 minutes.

1 Install the SDK

Install the RELAY SDK via your package manager:

Terminal
$ npm install @relay/sdk

The SDK is fully typed. No additional @types packages needed.

2 Initialize RELAY

Create a RELAY client with your API key. Generate one from the dashboard.

relay.ts
import  Relay  from "@relay/sdk";

export const relay = new Relay(
  apiKey: process.env.RELAY_API_KEY,
);

Keep your API key secret

Never hardcode API keys. Use environment variables and .env files. See our secrets management guide.

3 Define your first job

Use relay.defineJob() to create a typed job handler. The payload type flows from enqueue to handler with full TypeScript inference.

jobs/send-welcome-email.ts
import  relay  from "../relay";

interface WelcomeEmailPayload 
  userId: string;
  email: string;
  firstName: string;


export const sendWelcomeEmail = relay.defineJob<WelcomeEmailPayload>(
  id:      "send-welcome-email",
  queue:   "notifications",
  retries: 3,

  async handler(payload) 
    // payload is fully typed — no casting needed
    await mailer.send(
      to:       payload.email,
      template: "welcome",
      data:      firstName: payload.firstName ,
    );
  ,
);

4 Enqueue a job

Call .enqueue() from anywhere — your API route, webhook handler, or another job.

api/auth/signup.ts
import  sendWelcomeEmail  from "../jobs/send-welcome-email";

export async function POST(request: Request) 
  const user = await db.createUser(await request.json());

  // Enqueue asynchronously — don't block the response
  await sendWelcomeEmail.enqueue(
    userId:    user.id,
    email:     user.email,
    firstName: user.firstName,
  );

  return Response.json( user ,  status: 201 );

You're done!

Open the RELAY dashboard to see your job execute in real time. The "notifications" queue should show your job within 2 seconds of enqueueing.

Next steps