Help Center

API Reference

Build custom integrations, automations, and dashboards on top of Gryphin. Our REST API exposes the same surface our own product uses — boards, cards, comments, members, and events.

10 min readUpdated May 2026

Overview

The Gryphin API is a RESTful service that returns JSON. The base URL is https://api.gryphin.app/v1. Every endpoint is versioned, idempotent where it makes sense, and follows standard HTTP semantics.

  • REST + JSONpredictable URLs, standard verbs, cursor pagination
  • Bearer authAPI keys scoped to workspaces with granular permissions
  • Webhookssubscribe to 30+ events with signed HMAC payloads
  • Generous limits1,000 requests/minute on Pro, 5,000 on Business
  • Official SDKsTypeScript, Python, Go, and Ruby — all open source

Authentication

1

Generate an API key

Go to Settings → Developer → API Keys and click "Create key". Give it a name (e.g. "Backup script") and choose a scope.

2

Store it securely

Keys are shown once. Save them to a secret manager — never commit to source control or expose to a client browser.

3

Authenticate every request

Pass your key in the Authorization header as a Bearer token. All requests must use HTTPS.

4

Build with confidence

Every endpoint is documented with example requests, response schemas, and error codes. Start with a GET to verify auth, then build from there.

Authenticated request
1curl https://api.gryphin.app/v1/me \
2 -H "Authorization: Bearer gryph_live_sk_••••••••••••••" \
3 -H "Content-Type: application/json"
⚠️
Warning
Treat API keys like passwords. If a key is leaked, revoke it immediately in Settings → Developer; we'll show you the last four characters and the last-used timestamp to help identify it.

Rate limits

Each response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. If you exceed the limit you'll receive a 429 — retry after the reset timestamp using exponential backoff.

Limits by plan

  • Free: 60 requests / minute
  • Pro: 1,000 requests / minute
  • Business: 5,000 requests / minute
  • Enterprise: custom, contact sales

Core endpoints

GET/v1/boards
List all boards in the authenticated workspace, with cursor pagination.
Request
bash
1curl https://api.gryphin.app/v1/boards?limit=20 \
2 -H "Authorization: Bearer $GRYPHIN_API_KEY"
Response
json
1{
2 "data": [
3 {
4 "id": "brd_1a2b3c",
5 "name": "Q2 Roadmap",
6 "workspace_id": "wks_abc123",
7 "created_at": "2026-04-01T10:30:00Z"
8 }
9 ],
10 "next_cursor": null
11}
POST/v1/cards
Create a new card on a board.
Request
bash
1curl https://api.gryphin.app/v1/cards \
2 -X POST \
3 -H "Authorization: Bearer $GRYPHIN_API_KEY" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "board_id": "brd_1a2b3c",
7 "column_id": "col_todo",
8 "title": "Ship the API docs",
9 "labels": ["docs", "p1"]
10 }'
Response
json
1{
2 "id": "crd_xyz789",
3 "title": "Ship the API docs",
4 "column_id": "col_todo",
5 "position": 4096,
6 "created_at": "2026-05-14T09:12:00Z"
7}
PATCH/v1/cards/{id}
Update fields on an existing card. Only include keys you want to change.
Request
bash
1curl https://api.gryphin.app/v1/cards/crd_xyz789 \
2 -X PATCH \
3 -H "Authorization: Bearer $GRYPHIN_API_KEY" \
4 -d '{ "due_date": "2026-06-01" }'
DELETE/v1/cards/{id}
Archive a card. Archived cards are recoverable for 30 days before permanent deletion.

Webhooks

Subscribe to events to get push notifications when things change. Every payload is signed with HMAC-SHA256 using your endpoint's signing secret — verify it before processing.

Verifying a webhook signature (Node.js)
1import crypto from 'node:crypto';
2
3export function verify(payload, header, secret) {
4 const expected = crypto
5 .createHmac('sha256', secret)
6 .update(payload)
7 .digest('hex');
8 return crypto.timingSafeEqual(
9 Buffer.from(expected),
10 Buffer.from(header)
11 );
12}

Official SDKs

Skip the curl. Our SDKs handle auth, retries, pagination, and webhook verification automatically. All are open source on GitHub.

TypeScript example
1import { Gryphin } from '@gryphin/sdk';
2
3const gryphin = new Gryphin({ apiKey: process.env.GRYPHIN_API_KEY });
4
5const card = await gryphin.cards.create({
6 boardId: 'brd_1a2b3c',
7 columnId: 'col_todo',
8 title: 'Ship the API docs',
9});
10
11console.log(card.id);

Full API reference

Every endpoint, schema, and example in one interactive playground — try requests live with your own API key.

Open the API explorer

Was this article helpful?

Let us know how we can improve