OpenAI

Managing projects in the API platform

Create and manage API projects, including member access, service accounts, API keys, model access, usage, and spend limits.

Updated: 7 minutes ago

Overview

Projects organize work within an API organization. Use them to manage access, configure model and rate limits, create service accounts, and track usage, billing, and spend limits for a defined set of resources, such as models, capabilities, threads, assistants, fine-tuning, and storage.

Organization owners can view all active and archived projects on the Projects page.

Image

Before you begin

You need the organization owner role to create a project. Organizations can create up to 2,000 projects by default.

If your organization uses consolidated billing, sub-organizations appear separately in the organization selector. You can’t create projects within a sub-organization.

To switch organizations, open the organization selector and select the organization you want to use.

Projects page with the organization switcher open, listing Personal and Staging organizations
Image

Default project

Every organization includes a Default project, which can’t be deleted. It inherits the organization’s full configuration. You can configure its rate limits, virtual model permissions, and spend limits.

You can’t add members or service accounts directly to the Default project. You can include Default-project access when inviting someone to the organization, using the organization-invitation steps in this article.

Create a project

  1. Open the project selector and select Create project.

  2. Enter a name, description, and website for your project.

  3. Select Create.

API platform project menu with Create project highlighted under Default project
Create a new project dialog in the API platform with fields for project name, use case, and business website

Organization owners are automatically added as owners to new projects.

Understand roles and access

The table summarizes the organization owner and reader roles and the project owner and member roles used in these steps. Project members have permissions similar to organization readers.

RoleScopePermissions
OwnerOrganizationCreate and view all projects, users, and API keys. Monitor projects on the Projects page. Set organization and project spend limits. Grant access to other users’ usage information. Archive projects.
ReaderOrganizationBe added to projects, perform inference, use resources, and create keys in those projects. Can’t create projects or manage users.
OwnerProjectAll member permissions, plus add users, manage project members and settings, rename the project, set its spend limits, and archive it.
MemberProjectPerform inference, use resources, create project-level keys, and make API requests that read or modify data.

For organization role details, see: organization roles. For additional roles, custom roles, and complete permissions, see the API roles and permissions guide.

Project visibility

With these standard roles, users who aren’t organization owners can see only the projects they belong to. Organization owners can see all projects, members, and project-level API keys, and can access the Projects page.

Project members can see the other members of their project and each member’s role. Only project members and organization owners can see the fine-tuned models, assistant threads, and files created or added within that project.

You can belong to as many projects as you need. A personal API key created within a project is scoped to that project and its resources.

Resource boundaries

Files, assistants, storage, and threads are scoped to their project. Non-admin members outside that project can’t access its resources, and resources can’t be moved between projects.

Fine-tuned models in the Default project are an exception: they can be accessed from other projects.

Manage project members

Invite someone to your organization

Someone must belong to your organization before you can add them to a project.

When you invite someone to the organization, you can include access to the Default project by selecting that option in the invitation form. Leave it unselected if you don’t want to grant Default-project access. New organization members aren’t automatically added to the Default project.

You don’t need to create another project before inviting someone. You can also add someone to a project after they accept the organization invitation.

Invitations sent through the Admin API follow the rules for the /organization/invites endpoint.

Add an organization member to a project

Organization and project owners can add members:

  1. Go to organization settings.

  2. Select the project, then open Members.

  3. Select + Add member.

  4. Select the user and assign the Member or Owner role.

The user list shows organization users with the Reader role. It doesn’t include service accounts.

Project members with Add team members dialog assigning a user the Member role

If an invitation fails in the UI or Admin API, confirm that the target project exists and isn’t archived before you resend the invitation.

Change a role or remove a member

Organization and project owners can change a user’s project role or remove a user from that project.

  1. Go to organization settings.

  2. Select the project, then open Members.

  3. Set the user’s role to Member or Owner, or select Remove to remove them.

Create and manage service accounts

A service account provides system access rather than representing an individual user. Service accounts are scoped to projects.

Creating service accounts requires service-account management permissions. Organization and project owners have these permissions.

Create a service account

  1. Choose the project in the project selector.

  2. Go to organization settings and select the project.

  3. Open Members and select + Service account.

  4. Enter a unique service account ID using letters, numbers, and hyphens.

  5. Select Create.

API platform project switcher open with options to create a project or manage projects
Project Members page with Create a service account dialog after selecting the Service account option

The same ID format applies whether you create the service account from organization-level or project-level settings.

A service account created for a project is unique to that project and can’t be used outside it.

Save the secret key

Creating the service account immediately creates an API key and displays its secret key. Save the secret key securely. You can’t view it again through your OpenAI account. If you lose it, generate a new key.

Members page with Save your key modal after creating a service account

By default, the service account key can read and write all API resources in its project. You can change those permissions afterward in the project’s API Keys settings.

Update or remove a service account

Service accounts appear alongside users in the project’s Members settings. Manage their project access using the same role-change and removal steps as other project members.

All service accounts also appear alongside users on the organization’s Members page, including accounts created from organization-level and project-level settings.

From the organization’s Members menu, you can change a service account’s role or select Remove.

OpenAI API Members settings with a service account role menu open for Reader or Owner

Create and manage API keys

Each project has its own API keys:

  1. Go to organization settings.

  2. Select the project, then open API Keys.

  3. Select + Create new secret key to create a key, or select the edit icon next to an existing key to change its permissions.

API keys page for a project with the Create new secret key button highlighted

Choose key permissions

For user-owned keys, you can set permissions when creating a key or edit them later:

  • All: Full permissions. This is the default.

  • Restricted: Choose scopes for specific resources or endpoints. The available options depend on the resource and can include None, Read, Write, or request-specific permissions.

  • Read Only: Read permissions for all endpoints.

For example, a restricted key can exclude read and write access to the /v1/assistants endpoint.

Create new secret key dialog in the API platform with Restricted permissions selected

Creating service account keys requires service-account management permissions. If you don’t see that option, ask an organization or project owner to create the service account key. The key-creation dialog doesn’t show these permission controls for service account keys; change their permissions afterward in the project’s API Keys settings.

Configure model access and rate limits

Managing project rate limits requires administrative permissions. Organization owners have these permissions, and project owners can also manage project rate limits through the management API.

  1. Go to organization settings.

  2. Select the project, then open Limits.

  3. Use Model usage to choose which models the project can use.

  4. Set a rate limit for each model as needed.

Set spend limits and alerts

Monthly API spend limits are available at both the organization and project levels. You need permission to manage the applicable organization or project settings before changing a limit.

A spend limit can monitor spending without stopping requests. Turn on Enforce a hard limit if you want API requests to fail after tracked spending reaches the limit. Enforcement isn’t instantaneous, so recorded spending can slightly exceed the configured amount.

Spend alerts notify you when a threshold is reached; they don’t stop requests.

Set an organization spend limit

  1. Go to organization settings.

  2. Open Limits and find Spend.

Project Limits page with organization budget controls, usage alerts, and model rate limits table

Set a project spend limit

  1. Go to organization settings.

  2. Select the project, then open Limits.

  3. Set the Monthly spend limit and Alert when spend reaches values.

  4. Turn on Enforce a hard limit if you want to stop API traffic after the tracked limit is reached.

You can also change Model usage on this page.

Manage spend alerts

Creating a project spend limit also creates an alert at 100% of the limit by default. Select Add Alert to add alerts at other thresholds.

Organization and project owners receive project spend alerts. You can add other email recipients in the alert settings.

Project Limits page with Add budget alert dialog set to notify at 90% budget usage

For current configuration steps and enforcement behavior, see the spend limits guide.

View usage and billing

Usage activity can be broken down by project, and you can view billing and set spend limits for individual projects.

Access to a project’s Usage Dashboard depends on your organization role and the Usage Dashboard visibility settings. Being a project owner doesn’t by itself grant access.

Project setting for Usage dashboard visibility with Visible to organization owners selected

If you can’t see a project’s Usage Dashboard, check whether visibility is set to Visible to organization owners.

Manage file storage

Each project has a file storage quota of 100 GB. If you exceed it, you may see this error:

You have exceeded your file storage quota. Organizations are limited to 100 GB of files. Please reduce the file size or contact support.

Delete unused files to free storage. You can list stored files through the API to identify files you no longer need.

Archive a project

Organization and project owners can archive projects from the Projects page or the individual project’s settings. Enter the project’s name when prompted to confirm.

Archiving is permanent: an archived project can’t be restored.

To view archived projects, open the Archived tab on the Projects page.

API platform Projects page with the Archived tab selected to view archived projects

Projects can’t be deleted. OpenAI keeps their history for usage and billing tracking.

Was this article helpful?