Project
Manage your project settings, team members, and API keys. The Project API provides methods to inspect project details, manage team access, and control the full API key lifecycle.
Overview
Your Multisender project is the central workspace for your organization. It holds your team members, API keys, and all associated distributions and lists. Use the Project API to verify your setup, audit team roles, and manage API key permissions. Key rotation, scope restrictions, and access auditing are all handled through this API.
API key secrets are shown only once
When you create a new API key, the secret value is returned only in the creation response. Store it immediately in a secure location — it cannot be retrieved again.
Key Concepts
Project
Your organizational workspace in Multisender. Each project has a unique name, slug, and description. All distributions, lists, and API keys belong to a project.
API Key
A credential that authenticates SDK requests. Each key has a name for identification, permission scopes (read, write), and usage tracking. The secret value is only returned once at creation — store it securely.
Scopes
Permission levels assigned to an API key. "read" allows read-only access (listing, viewing). "write" allows creating, updating, and deleting resources. Assign the minimum scopes needed for each use case.
Member Roles
Team members have roles that control their permissions: OWNER (full access), ADMIN (manage settings), MANAGER (manage distributions), VIEWER (read-only access).
Quick Start
Common Workflows
API key lifecycle
Create, manage, and rotate API keys for different environments.
1
createApiKey()
Create a new key with name and scopes — save the returned secret value
2
listApiKeys()
Audit existing keys, check lastUsedAt for inactive keys
3
updateApiKey()
Rename keys or adjust scopes as requirements change
4
deleteApiKey()
Revoke old keys when rotating or decommissioning
Methods
sdk.project.getInfo()
Retrieve project information including name, slug, and description. A quick way to verify your API key is configured correctly and to inspect the current project context.
Use getInfo() as a health check — if it returns successfully, your API key and base URL are configured correctly.
Parameters
No parameters
Returns
Project
Project object with id, name, slug, description, createdAt, and updatedAt
Example
See Also
getMembers()
Get the list of team members for this project
listApiKeys()
List all API keys for this project
sdk.project.getMembers()
Retrieve all project members with their roles and profile information. Each member has a role (OWNER, ADMIN, MANAGER, VIEWER) that determines their permission level within the project.
Parameters
No parameters
Returns
ProjectMember[]
Array of project members with id, userId, role, email, displayName, and joinedAt
Example
Notes
Member roles: OWNER (full access), ADMIN (manage settings), MANAGER (manage distributions), VIEWER (read-only)
email and displayName may be undefined depending on member privacy settings
See Also
getInfo()
Get the project metadata alongside members
sdk.project.listApiKeys()
List all API keys for the current project. Returns key metadata including name, permission scopes, last usage time, and expiration. The secret key value is never returned — it is only available at creation time.
Parameters
No parameters
Returns
ApiKey[]
Array of API key objects with id, name, scopes, lastUsedAt, expiresAt, and createdAt
Example
Notes
The secret key value is only available at creation time via createApiKey()
See Also
createApiKey()
Create a new API key
updateApiKey()
Update an existing API key
deleteApiKey()
Delete an API key
sdk.project.createApiKey(request)
Create a new API key with a display name and permission scopes. The response includes the secret key value in the key field — this is the only time it will be returned. Store it securely immediately.
Save the key immediately
The key field containing the secret value is only returned in this response. If lost, delete the key and create a new one.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
request.name | string | Yes | Display name for identification (e.g. "Production", "CI/CD", "Staging") |
request.scopes | string[] | Yes | Permission scopes: ["read"] for read-only, ["read", "write"] for full access |
Returns
ApiKey
Created API key with id, name, scopes, createdAt, and the one-time key field containing the secret value
Example
See Also
listApiKeys()
List all existing API keys
updateApiKey()
Update the key name or scopes later
deleteApiKey()
Delete the key when no longer needed
sdk.project.updateApiKey(apiKeyId, request)
Update an existing API key's name or permission scopes. Both fields are optional — only provided fields are changed. Scope changes take effect immediately for all future requests using this key.
Scopes are replaced entirely — pass the full list of desired scopes, not just the ones you want to add.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
apiKeyId | string | Yes | The API key ID (from listApiKeys or createApiKey) |
request.name | string | No | New display name for the key |
request.scopes | string[] | No | New permission scopes — replaces all existing scopes entirely |
Returns
ApiKey
Updated API key metadata (does not include the secret key value)
Example
See Also
listApiKeys()
Find the API key ID to update
createApiKey()
Create a new key instead of updating
deleteApiKey()
Delete the key instead of updating
sdk.project.deleteApiKey(apiKeyId)
Permanently delete an API key. The key stops working immediately for all API requests. Any systems or integrations using this key will lose access.
Irreversible action
This action cannot be undone. Create a replacement key before deleting the old one to avoid service disruption.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
apiKeyId | string | Yes | The API key ID to delete |
Returns
void
No return value on success
Example
See Also
listApiKeys()
Find the API key ID to delete
createApiKey()
Create a replacement key before deleting the old one
Menu
Search
Code
Generated Code