OpenAI · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for OpenAI Projects API
20 actions
20 updates
phrasing
extends
openapi/openai-projects-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for OpenAI's API. It is a proposal applied on top of the contract, not a document OpenAI publishes.
What the actions change
x-apievangelist-phrasing
Targets 20 · first 16 shown; the file carries all of them
$.info
$.paths['/organization/projects'].get
$.paths['/organization/projects'].post
$.paths['/organization/projects/{project_id}'].get
$.paths['/organization/projects/{project_id}'].post
$.paths['/organization/projects/{project_id}/api_keys'].get
$.paths['/organization/projects/{project_id}/api_keys/{api_key_id}'].get
$.paths['/organization/projects/{project_id}/api_keys/{api_key_id}'].delete
$.paths['/organization/projects/{project_id}/archive'].post
$.paths['/organization/projects/{project_id}/rate_limits'].get
$.paths['/organization/projects/{project_id}/rate_limits/{rate_limit_id}'].post
$.paths['/organization/projects/{project_id}/service_accounts'].get
$.paths['/organization/projects/{project_id}/service_accounts'].post
$.paths['/organization/projects/{project_id}/service_accounts/{service_account_id}'].get
$.paths['/organization/projects/{project_id}/service_accounts/{service_account_id}'].delete
$.paths['/organization/projects/{project_id}/users'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for OpenAI Projects API
version: 1.0.0
extends: openapi/openai-projects-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 19
- target: $.paths['/organization/projects'].get
update:
x-apievangelist-phrasing:
intent: List the projects in my organization
effect: read
questions:
- Which projects exist in my OpenAI organization?
- Can I include archived projects when listing everything in the org?
- How do I page through all the projects in my organization?
instructions:
- text: List every project in my organization.
- text: List projects including archived ones, {limit} at a time.
slots:
limit: query.limit
- text: Show the next page of organization projects after {after}.
slots:
after: query.after
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects'].post
update:
x-apievangelist-phrasing:
intent: Create a new project in the organization
effect: write
questions:
- How do I set up a new project in my organization?
- Can I pick a data residency geography when I create a project?
- Is it possible to delete a project after I create it?
instructions:
- text: Create a new project called {name}.
slots:
name: requestBody.name
- text: Create project {name} in the {geography} geography.
slots:
name: requestBody.name
geography: requestBody.geography
- text: Set up a project named {name} encrypted with external key {external_key_id}.
slots:
name: requestBody.name
external_key_id: requestBody.external_key_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}'].get
update:
x-apievangelist-phrasing:
intent: Get the details of one project
effect: read
questions:
- What are the name and status of a specific project?
- Can I check whether a particular project has been archived?
instructions:
- text: Show me project {project_id}.
slots:
project_id: path.project_id
- text: Look up the status of project {project_id}.
slots:
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}'].post
update:
x-apievangelist-phrasing:
intent: Rename or reconfigure an existing project
effect: write
questions:
- How do I rename a project that already exists?
- Can I change the encryption key used by an existing project?
instructions:
- text: Rename project {project_id} to {name}.
slots:
project_id: path.project_id
name: requestBody.name
- text: Switch project {project_id} to external key {external_key_id}.
slots:
project_id: path.project_id
external_key_id: requestBody.external_key_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/api_keys'].get
update:
x-apievangelist-phrasing:
intent: List the API keys in a project
effect: read
questions:
- Which API keys have been issued inside one of my projects?
- Can I audit all the keys that exist for a single project?
instructions:
- text: List the API keys in project {project_id}.
slots:
project_id: path.project_id
- text: Show {limit} API keys from project {project_id}.
slots:
limit: query.limit
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/api_keys/{api_key_id}'].get
update:
x-apievangelist-phrasing:
intent: Get details of one project API key
effect: read
questions:
- Who owns a particular API key in my project and when was it created?
- Can I look up one project API key by its ID?
instructions:
- text: Show API key {api_key_id} in project {project_id}.
slots:
api_key_id: path.api_key_id
project_id: path.project_id
- text: Check who owns key {api_key_id} in project {project_id}.
slots:
api_key_id: path.api_key_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/api_keys/{api_key_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete an API key from a project
effect: destructive
questions:
- How do I revoke a leaked API key in one of my projects?
- Why can't I delete a project key that belongs to a service account?
instructions:
- text: Delete API key {api_key_id} from project {project_id}.
slots:
api_key_id: path.api_key_id
project_id: path.project_id
- text: Revoke project {project_id}'s key {api_key_id} right away.
slots:
project_id: path.project_id
api_key_id: path.api_key_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/archive'].post
update:
x-apievangelist-phrasing:
intent: Archive a project
effect: destructive
questions:
- How do I retire a project I no longer use, since projects can't be deleted?
- What happens to a project once it is archived?
instructions:
- text: Archive project {project_id}.
slots:
project_id: path.project_id
- text: Retire project {project_id} so nobody can use it anymore.
slots:
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/rate_limits'].get
update:
x-apievangelist-phrasing:
intent: List per-model rate limits for a project
effect: read
questions:
- What are the per-model rate limits for my project?
- Can I see the tokens-per-minute cap each model has in a project?
instructions:
- text: List the model rate limits for project {project_id}.
slots:
project_id: path.project_id
- text: Show the next page of rate limits for project {project_id} after {after}.
slots:
project_id: path.project_id
after: query.after
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/rate_limits/{rate_limit_id}'].post
update:
x-apievangelist-phrasing:
intent: Change a project's rate limit for a model
effect: write
questions:
- How do I lower the requests per minute a project can make to one model?
- Can I cap the daily batch input tokens for a project?
- Is it possible to limit image generations per minute at the project level?
instructions:
- text: Set rate limit {rate_limit_id} in project {project_id} to {max_requests_per_1_minute} requests per minute.
slots:
rate_limit_id: path.rate_limit_id
project_id: path.project_id
max_requests_per_1_minute: requestBody.max_requests_per_1_minute
- text: Cap tokens per minute at {max_tokens_per_1_minute} for rate limit {rate_limit_id} in project {project_id}.
slots:
max_tokens_per_1_minute: requestBody.max_tokens_per_1_minute
rate_limit_id: path.rate_limit_id
project_id: path.project_id
- text: Limit project {project_id} to {max_requests_per_1_day} requests a day on rate limit {rate_limit_id}.
slots:
project_id: path.project_id
max_requests_per_1_day: requestBody.max_requests_per_1_day
rate_limit_id: path.rate_limit_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/service_accounts'].get
update:
x-apievangelist-phrasing:
intent: List service accounts in a project
effect: read
questions:
- Which service accounts exist in one of my projects?
- Can I see all the bot accounts attached to a project?
instructions:
- text: List the service accounts in project {project_id}.
slots:
project_id: path.project_id
- text: Show {limit} service accounts from project {project_id}.
slots:
limit: query.limit
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/service_accounts'].post
update:
x-apievangelist-phrasing:
intent: Create a service account in a project
effect: write
questions:
- How do I create a non-human account for a project that gets its own API key?
- Does creating a service account return its API key in the clear?
instructions:
- text: Create a service account named {name} in project {project_id}.
slots:
name: requestBody.name
project_id: path.project_id
- text: Add a service account {name} to project {project_id} and give me its key.
slots:
name: requestBody.name
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/service_accounts/{service_account_id}'].get
update:
x-apievangelist-phrasing:
intent: Get details of one project service account
effect: read
questions:
- What role does a specific service account have in my project?
- Can I look up a project service account by its ID?
instructions:
- text: Show service account {service_account_id} in project {project_id}.
slots:
service_account_id: path.service_account_id
project_id: path.project_id
- text: Check the role of service account {service_account_id} in project {project_id}.
slots:
service_account_id: path.service_account_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/service_accounts/{service_account_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a service account from a project
effect: destructive
questions:
- How do I remove a service account from a project?
- Why does deleting a service account fail on an archived project?
instructions:
- text: Delete service account {service_account_id} from project {project_id}.
slots:
service_account_id: path.service_account_id
project_id: path.project_id
- text: Remove bot account {service_account_id} from project {project_id}.
slots:
service_account_id: path.service_account_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/users'].get
update:
x-apievangelist-phrasing:
intent: List the users in a project
effect: read
questions:
- Who are the members of a particular project?
- Can I page through every person who has access to a project?
instructions:
- text: List the users in project {project_id}.
slots:
project_id: path.project_id
- text: Show the next page of project {project_id} members after {after}.
slots:
project_id: path.project_id
after: query.after
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/users'].post
update:
x-apievangelist-phrasing:
intent: Add an organization member to a project
effect: write
questions:
- How do I give a teammate access to one of my projects?
- Does someone have to be in the organization before I add them to a project?
instructions:
- text: Add user {user_id} to project {project_id} as {role}.
slots:
user_id: requestBody.user_id
project_id: path.project_id
role: requestBody.role
- text: Add {email} to project {project_id} with the {role} role.
slots:
email: requestBody.email
project_id: path.project_id
role: requestBody.role
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/users/{user_id}'].get
update:
x-apievangelist-phrasing:
intent: Get one user's membership in a project
effect: read
questions:
- What role does a specific person have in my project?
- Can I check whether a given user is a member of a project?
instructions:
- text: Show user {user_id} in project {project_id}.
slots:
user_id: path.user_id
project_id: path.project_id
- text: Check the project role of user {user_id} in project {project_id}.
slots:
user_id: path.user_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/users/{user_id}'].post
update:
x-apievangelist-phrasing:
intent: Change a user's role in a project
effect: write
questions:
- How do I promote a project member to project owner?
- Can I downgrade someone's role within a single project?
instructions:
- text: Change user {user_id}'s role in project {project_id} to {role}.
slots:
user_id: path.user_id
project_id: path.project_id
role: requestBody.role
- text: Make user {user_id} an owner of project {project_id}.
slots:
user_id: path.user_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/organization/projects/{project_id}/users/{user_id}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a user from a project
effect: destructive
questions:
- How do I take away someone's access to a project without removing them from the org?
- Why can't I remove users from an archived project?
instructions:
- text: Remove user {user_id} from project {project_id}.
slots:
user_id: path.user_id
project_id: path.project_id
- text: Revoke user {user_id}'s membership in project {project_id}.
slots:
user_id: path.user_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/openai-projects-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.