Step 1: Create a Project
Create a project to organize your webhook buffers.
Projects group related buffers, for example production and staging. Every account gets a Default Project at sign-up; you can use it and skip to Step 2.
Create via API
When you create resources through the API you choose their IDs. IDs must be unique across Webbu, so add a random suffix in real use; the dashboard generates IDs like p_1767225600000_k3j9x2m1q. The examples below use short IDs for readability.
curl -X POST https://webbu.dev/api/v1/admin/projects \
-H "Content-Type: application/json" \
-H "X-API-Key: $WEBBU_API_KEY" \
-d '{"projectId": "p_shop", "name": "Shop"}'const res = await fetch('https://webbu.dev/api/v1/admin/projects', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.WEBBU_API_KEY!,
},
body: JSON.stringify({ projectId: 'p_shop', name: 'Shop' }),
});
const project = await res.json();
console.log(res.status, project.projectId); // 201 "p_shop"import os, requests
resp = requests.post(
"https://webbu.dev/api/v1/admin/projects",
headers={"X-API-Key": os.environ["WEBBU_API_KEY"]},
json={"projectId": "p_shop", "name": "Shop"},
)
print(resp.status_code, resp.json()["projectId"]) # 201 p_shopResponse (201 Created):
{
"projectId": "p_shop",
"customerId": "c_your_account",
"name": "Shop",
"enabled": true,
"createdAt": 1767225600000,
"updatedAt": 1767225600000
}The project belongs to the account of the API key; you don't need to send customerId.
Common errors
| Status | Cause | Fix |
|---|---|---|
400 | projectId or name missing | Send both fields |
401 | Missing, invalid or revoked API key | Check the X-API-Key header |
403 | The key's role can't create projects | Use an admin or owner key |
409 | A project with this projectId already exists | Choose another ID |
Create via dashboard
- Sign in at webbu.dev
- Click Projects in the sidebar
- Click New Project, enter a name and save