OpenAI Plugin Listing Success Criteria: 7 Requirements for Marketplace Approval
A plugin must satisfy technical requirements (valid manifest, OpenAPI spec, authentication), policy standards (brand safety, privacy), and stability criteria (functional tests) to be listed in the OpenAI Plugin Marketplace.
The openai/plugins repository defines the infrastructure and validation rules governing the OpenAI Plugin Marketplace. Meeting the success criteria for a plugin to be listed requires satisfying both mandatory technical specifications defined in the manifest structure and internal policy reviews enforced during submission.
Technical Requirements for Plugin Listing
Manifest Presence and Structure (plugin.json)
Every plugin must contain a .codex-plugin/plugin.json file located at plugins/<plugin_name>/.codex-plugin/plugin.json. This manifest serves as the single source of truth for the plugin's metadata and capabilities.
The file must include these required fields:
schema_version– Currentlyv1name_for_human– User-facing display namename_for_model– Machine-readable identifierdescription_for_human– Marketplace listing descriptiondescription_for_model– Context for the AI modelauth– Authentication configuration objectapi– OpenAPI specification referencelogo_url– Icon for marketplace displaycontact_email– Support contact
{
"schema_version": "v1",
"name_for_human": "My Example Plugin",
"name_for_model": "my_example_plugin",
"description_for_human": "A simple example plugin that returns greeting messages.",
"description_for_model": "Provides a /greet endpoint that returns a friendly greeting.",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "openapi.yaml"
},
"logo_url": "https://example.com/logo.png",
"contact_email": "[email protected]"
}
This minimal configuration satisfies the Manifest Presence, OpenAPI Specification, and Human-Readable Metadata criteria.
OpenAPI Specification Compliance
The api.url field in plugin.json must point to a valid OpenAPI document, either as inline JSON/YAML or an external URL. The specification must be syntactically correct and enumerate all supported endpoints with proper response schemas.
openapi: 3.0.1
info:
title: Greeting API
version: "1.0"
paths:
/greet:
get:
summary: Return a greeting
responses:
'200':
description: A friendly greeting
content:
application/json:
schema:
type: object
properties:
message:
type: string
The OpenAPI document must reside at the path specified in the manifest, typically plugins/<plugin_name>/openapi.yaml or openapi.json.
Authentication Declaration Standards
The manifest must explicitly declare the authentication method via the auth.type field. Acceptable values include none, service_http, or oauth.
For OAuth implementations, the manifest must specify additional parameters:
{
"auth": {
"type": "oauth",
"client_id": "YOUR_CLIENT_ID",
"authorization_url": "https://auth.example.com/authorize",
"scopes": ["read", "write"]
}
}
This declaration satisfies the Authentication Declaration criterion required for marketplace approval.
Policy and Safety Requirements
Brand Safety and Content Review
According to the repository's security guidelines enforced during marketplace submission, plugin code must not expose secrets or hardcoded credentials. The implementation must pass OpenAI's internal brand-safety review, which prohibits disallowed content and requires proper rate-limiting mechanisms.
Privacy and Data Handling
Plugins must comply with the marketplace contract defined in .agents/plugins/marketplace.json. This requires publishing a privacy policy, handling user data transparently, and refraining from using prohibited APIs. The contact_email field in the manifest establishes accountability for data handling practices.
Testing and Stability Standards
Plugins must include functional tests, typically located in plugins/<plugin_name>/tests/, that verify each endpoint behaves according to the OpenAPI contract. A stable build must pass all continuous integration checks before the submission review process begins.
The repository structure implies that untested plugins or those failing CI validation will not advance to the public marketplace.
Verification Checklist
Before submitting for review, verify your plugin satisfies all success criteria:
- Manifest validation –
plugin.jsonexists at.codex-plugin/plugin.jsonwith all required fields - OpenAPI integrity – The specification file is syntactically valid and referenced correctly
- Authentication configuration – Auth type is declared and OAuth parameters are complete (if applicable)
- Metadata completeness – Human-readable name, description, and logo URL are present
- Security audit – No exposed secrets, proper rate limiting implemented
- Test coverage – Functional tests exist in
tests/and pass CI checks - Policy compliance – Privacy policy published and marketplace rules satisfied
When all seven items are satisfied, the plugin can be submitted for review. The review process validates each criterion against the source code and manifest before adding the plugin to the public marketplace.
Summary
- Manifest requirement: Every plugin must include a complete
plugin.jsonatplugins/<name>/.codex-plugin/plugin.jsonwith metadata, auth, and API references. - OpenAPI contract: The specification must be valid and accurately describe all endpoints.
- Authentication: Explicit declaration of auth type (
none,service_http, oroauth) with required scopes for OAuth. - Safety review: Code must pass brand-safety checks with no exposed secrets and proper rate limiting.
- Testing: Functional tests in
plugins/<name>/tests/must verify OpenAPI compliance and pass CI. - Policy compliance: Privacy policy publication and adherence to
.agents/plugins/marketplace.jsonrules are mandatory.
Frequently Asked Questions
What happens if my plugin.json is missing required fields?
The plugin will fail the initial automated validation. The README.md in the openai/plugins repository explicitly states that each plugin must contain the mandatory manifest fields including name_for_human, description_for_model, and auth. Missing fields prevent the plugin from entering the review queue.
Can I use external URLs for my OpenAPI specification?
Yes. The api.url field in plugin.json accepts either relative paths (e.g., openapi.yaml) or absolute URLs. However, the specification must remain accessible and the content must match the deployed endpoints during the review process.
How long does the brand-safety review take?
The repository does not specify exact timeframes, but the review process checks that your code contains no secrets, implements proper rate limiting, and complies with content policies. Ensure your contact_email is valid, as reviewers use this for clarification requests during the safety verification phase.
Do I need tests if my plugin is simple?
Yes. The repository structure indicates that plugins should include functional tests in a tests/ folder regardless of complexity. These tests verify that your endpoints behave according to the OpenAPI contract, satisfying the Testing & Stability criterion required for listing.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →