SendlySendly
API ReferenceProjects

List the projects the authenticated user belongs to

GET
/api/users/me/projects

Every project the caller is a member of, in any role. Answers a bare JSON array — no { success, data } envelope — of raw project rows, each carrying the derived sandboxAddress alongside its columns.

This is the project picker for a connected app. It is user-scoped rather than project-scoped, so it is the one operation that takes no x-project-id header; the id of the project the user chooses here is what every subsequent call sends in that header.

The body depends on the credential. A delegated (OAuth) token receives ProjectPickerEntry — the project, and nothing about the account behind it. A browser session receives ProjectListEntry, the raw row including the account's Stripe identifiers and billing ceilings, because that is the account holder reading their own account. Build against ProjectPickerEntry.

Requires the projects:read scope — View your projects and their settings.

Authorization

better-auth.session_token<token>

BetterAuth session cookie. Used by the dashboard / browser clients. When present, the active project is taken from the x-project-id header.

In: cookie

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/users/me/projects"
[
  {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "disabled": true,
    "sandboxAddress": "string",
    "sesRegion": "string",
    "tracking": "ENABLED",
    "language": "string",
    "createdAt": "2019-08-24T14:15:22Z"
  }
]
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}