BugBoardDocs

Quickstart

Send your first card in a few minutes. The fastest path is an SDK: install it, copy one setup file, then report errors with a single call.

1. Create an API key

  1. Open your project → Settings → API Keys.
  2. Click Create key and choose a type:
    • Publishable (bb_pub_…) for browsers and mobile apps — sent as a bearer token.
    • Secret for servers — a key id (bbk_…) sent with every request, plus a signing secret (bb_sec_…) used to sign it and never transmitted.
  3. Copy the value(s) immediately. BugBoard stores only a hash and can't show them again.

See Choosing a key type if you're not sure which to pick.

2. Install the SDK

Pick your language:

npm i bugboard
composer require bugboard/sdk

3. Add the setup file

Create one file that configures a shared client. Set your key in the environment first.

// utils/bugboard.ts
import { createClient } from 'bugboard';

export default createClient({
    apiKey: import.meta.env.VITE_BUGBOARD_API_KEY,
});
// app/Services/BugBoard.php
namespace App\Services;

use BugBoard\Client;
use BugBoard\ClientBuilder;
use BugBoard\Config;

class BugBoard
{
    public static function __callStatic(string $method, array $args): void
    {
        once(fn (): Client => ClientBuilder::create(new Config(
            keyId: env('BUGBOARD_KEY_ID'),
            signingSecret: env('BUGBOARD_SIGNING_SECRET'),
        )))->{$method}(...$args);
    }
}

4. Report your first error

import bugboard from '@/utils/bugboard';

bugboard.critical('My first BugBoard card');
use App\Services\BugBoard;

BugBoard::critical('My first BugBoard card');

Open your project board — the card is there. Report the same title again and BugBoard deduplicates it: instead of a second card, the existing one's occurrence_count is bumped.

The reports don't have to be identical. Matching on the title or the description is enough, so a stable title with a per-event description still groups onto one card — and each distinct payload is kept beneath it as a variant, with its own count and last-seen time. Put the details that change every time (ids, amounts, stack traces) in the description, and keep the title stable. Full rules in Deduplication.

For everything the SDK can do — priority variants, sampling, payload encryption — open your language guide in Install an SDK.

Prefer raw HTTP?

No SDK for your language yet? Any language can POST to the API directly — only severity is required:

curl -i -X POST "https://bugboard.dev/api/v1/tasks" \
  -H "Authorization: Bearer $BUGBOARD_PUBLISHABLE_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"severity":"major","title":"My first BugBoard card"}'

A first POST returns 201 Created; an identical second POST returns 200 OK with "deduplicated": true. Servers should use a secret key and sign each request — the full signing algorithm and every payload field live in the API Reference.

This example gets the created card back in data, which is what you want for a smoke test. The SDKs instead send X-Bb-Hide-Response by default, so the server withholds the card and returns only the outcome flags — a report you encrypted should never come back in plaintext.

Hand it to an AI assistant

Working with Claude Code, Copilot, or Cursor? Paste this prompt into your assistant and let it do the wiring: install the SDK, enable payload encryption, add global error handling, wire up accurate source locations, and report back with a checklist of what's left for you.

Integrate the bugboard.dev SDK into this project: enable payload encryption, add global error handling, keep the config in-memory with debug mode off, and prioritize live reports over local logging. Apply the SDK's debugging methods at likely failure points.

Then make sure every card points at the file that actually failed:

1. Pass the caught error or exception itself as the description argument, never just its message - the SDK reads the throw site off it.

2. If this is a bundled JS/TS project, add the BugBoard plugin for this bundler - 'bugboard/vite', 'bugboard/rollup', 'bugboard/webpack', 'bugboard/esbuild', or 'bugboard/webpack' via turbopack.rules - or cards will report a minified chunk name instead of my source file. List any non-bugboard-named client module in the plugin's clientModules option.

3. Once that plugin is in place, add lineNumbers: true to the client config for exact line numbers.

4. For a bundled Node server, import 'bugboard/preload' as the very first line of the entry file.

5. For PHP, leave project_root auto-detection alone unless deploys path-map the source, then set BUGBOARD_PROJECT_ROOT.

Finally, tell me which of the above applied to this project, and give me a step-by-step checklist of what's left.

Next steps