Appearance
Projects
SendAPI allows you to organize your channels, API keys, and message logs into separate isolated environments called Projects. A single user account operates within a Team, and that Team can contain multiple projects (e.g., "Production", "Staging", "Marketing Campaigns").
The X-Project-Id Header
When your team has multiple projects, you must specify which project an API request applies to by including the X-Project-Id HTTP header.
http
Authorization: Bearer sk_live_YOUR_API_KEY
X-Project-Id: 14Default Fallback
If you omit the X-Project-Id header, SendAPI will automatically route the request to your team's Default Project.
List Projects
Retrieve all active projects belonging to your current team.
GET /v1/team/projects
Response
json
{
"data": [
{
"id": 14,
"name": "Production Project",
"slug": "production-project-14",
"is_default": true,
"credit_budget_usd": 150.0,
"api_keys_count": 2,
"created_at": "2026-03-09T14:30:00.000000Z"
},
{
"id": 15,
"name": "Staging",
"slug": "staging-15",
"is_default": false,
"credit_budget_usd": null,
"api_keys_count": 1,
"created_at": "2026-03-10T09:15:00.000000Z"
}
],
"meta": {
"projects_used": 2,
"projects_limit": -1,
"plan_name": "Pro"
}
}Create a Project
Create a new project within your team. The number of projects you can create depends on your subscription plan.
POST /v1/team/projects
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The display name of the new project (max 255 chars). |
bash
curl -X POST https://sendapi.co/v1/team/projects \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Marketing Campaigns"
}'Response
json
{
"success": true,
"data": {
"id": 16,
"name": "Marketing Campaigns",
"slug": "marketing-campaigns-16",
"is_default": false
}
}Update a Project
Update an existing project's name or set it as your team's default project.
PUT /v1/team/projects/{id}
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | The new name for the project. |
is_default | boolean | No | If true, this project becomes the fallback for API requests lacking an X-Project-Id header. |
Delete a Project
Archive a project. This revokes all API keys associated with the project and disables any active WhatsApp sessions. Historical message logs are retained for auditing purposes but are hidden from the dashboard.
DELETE /v1/team/projects/{id}
Cannot Delete Default Project
You cannot delete a project if it is currently set as your team's is_default. You must assign another project as the default first.