Skip to content

Examples

drrobl0xx edited this page Jul 28, 2026 · 2 revisions

Examples


JavaScript

Create a card and set a custom field

import { JokelboardClient } from '@yeetgodpro1324/jokelboard-js';

const client = new JokelboardClient({ token: process.env.JOKELBOARD_TOKEN });

const BOARD_ID = 'your-board-id';
const LIST_ID  = 'your-list-id';

// Create a card
const card = await client.createCard(BOARD_ID, LIST_ID, 'New application', {
  categoryId: 'P2',
  labels: [{ name: 'applicant', color: '#4ea8de' }],
});

// Set a custom field (e.g. Discord ID)
await client.updateCard(BOARD_ID, card.id, {
  fieldValues: { 'discord-id': '123456789012345678' },
});

// Add a comment
await client.addComment(BOARD_ID, card.id, 'Application received.');

// Get a shareable link
const link = await client.getCardLink(BOARD_ID, card.id);
console.log(link.url);

Move a card between lists

const lists = await client.getLists(BOARD_ID);
const doneList = lists.find(l => l.title === 'Done');

await client.moveCard(BOARD_ID, card.id, doneList.id);

TypeScript

Create a card and set a custom field

import { JokelboardClient } from '@yeetgodpro1324/jokelboard-ts';
import type { BoardCard } from '@yeetgodpro1324/jokelboard-ts';

const client = new JokelboardClient({ token: process.env.JOKELBOARD_TOKEN! });

const BOARD_ID = 'your-board-id';
const LIST_ID  = 'your-list-id';

const card: BoardCard = await client.createCard(BOARD_ID, LIST_ID, 'New application', {
  categoryId: 'P2',
  labels: [{ name: 'applicant', color: '#4ea8de' }],
});

await client.updateCard(BOARD_ID, card.id, {
  fieldValues: { 'discord-id': '123456789012345678' },
});

await client.addComment(BOARD_ID, card.id, 'Application received.');

const link = await client.getCardLink(BOARD_ID, card.id);
console.log(link.url);

Error handling with types

import { JokelboardClient, RateLimitError, RevisionConflictError, JokelboardError } from '@yeetgodpro1324/jokelboard-ts';

const client = new JokelboardClient({ token: process.env.JOKELBOARD_TOKEN! });

async function safeCreate(boardId: string, listId: string, title: string) {
  try {
    return await client.createCard(boardId, listId, title);
  } catch (err) {
    if (err instanceof RateLimitError) {
      console.warn(`Rate limited, retry in ${err.retryAfter}s`);
    } else if (err instanceof RevisionConflictError) {
      console.warn(`Conflict at revision ${err.currentRevision}`);
    } else if (err instanceof JokelboardError) {
      console.error(`API error ${err.status}: ${err.message}`);
    }
    throw err;
  }
}

Python

Create a card and set a custom field

import os
from jokelboard import JokelboardClient

BOARD_ID = "your-board-id"
LIST_ID  = "your-list-id"

with JokelboardClient(token=os.environ["JOKELBOARD_TOKEN"]) as client:
    card = client.create_card(
        BOARD_ID,
        LIST_ID,
        "New application",
        category_id="P2",
        labels=[{"name": "applicant", "color": "#4ea8de"}],
    )

    client.update_card(BOARD_ID, card["id"], {
        "fieldValues": {"discord-id": "123456789012345678"},
    })

    client.add_comment(BOARD_ID, card["id"], "Application received.")

    link = client.get_card_link(BOARD_ID, card["id"])
    print(link["url"])

Move a card between lists

with JokelboardClient(token=os.environ["JOKELBOARD_TOKEN"]) as client:
    lists = client.get_lists(BOARD_ID)
    done_list = next(l for l in lists if l["title"] == "Done")
    client.move_card(BOARD_ID, card["id"], done_list["id"])

Error handling

from jokelboard import JokelboardClient, RateLimitError, RevisionConflictError, JokelboardError

with JokelboardClient(token="jkb_...") as client:
    try:
        client.create_card("board-id", "list-id", "My card")
    except RateLimitError as e:
        print(f"Rate limited — retry in {e.retry_after}s")
    except RevisionConflictError as e:
        print(f"Conflict at revision {e.current_revision}")
    except JokelboardError as e:
        print(f"{e.code} ({e.status}): {e}")

Clone this wiki locally