Skip to content

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: 14

Default 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

ParameterTypeRequiredDescription
namestringYesThe 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

ParameterTypeRequiredDescription
namestringNoThe new name for the project.
is_defaultbooleanNoIf 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.

Released under the MIT License.