Create a new partner app in DRAFT status.
Top-level slugs are globally unique (the slug is the public tenant identifier baked into ChatGPT connector URLs). Brand sub-page slugs are unique per parent. Either collision returns 409.
Phase-3 quotas + tombstone enforcement: per-org partner-app caps surface as 429; archived-slug cooldown surfaces as 409 with a cooldown-aware message.
When ?copy_from=<app-id> is supplied, the new app inherits the
source's draft JSONB blobs verbatim (with tool names cleared per
G3-35b). Versions are NOT copied — the new app starts at DRAFT.
Query parameters
-
Source partner app id (G3-35b). When set, the new app's JSONB blobs (sections, theme, auth_config, sponsored_config) are cloned from the source's current draft state. Tool names are reset to empty strings. Slug uniqueness, tombstone cooldown, and per-org quotas all still apply to the new slug.
curl \
--request POST 'http://api.example.com/v1/admin/orgs/{org_id}/partner-apps' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"slug":"string","display_name":"string","tagline":"string","parent_app_id":"string","catalog_id":"string"}'
{
"slug": "string",
"display_name": "string",
"tagline": "string",
"parent_app_id": "string",
"catalog_id": "string"
}
{
"id": "string",
"org_id": "string",
"slug": "string",
"parent_app_id": "string",
"parent_slug": "string",
"catalog_id": "string",
"display_name": "string",
"tagline": "string",
"status": "DRAFT",
"schema_version": 42,
"sections": [
{
"id": "string",
"capability": "string",
"title": "string",
"description": "string",
"layout": "string",
"enabled": true,
"filters": {},
"ui": {
"empty_state_title": "string",
"empty_state_body": "string",
"max_items": 42,
"sort": "relevance"
},
"tool": {
"name": "string",
"description": "string",
"output_template_uri": "string"
},
"sponsored_ranking_surface": "primary"
}
],
"theme": {
"brand_name": "string",
"logo_url": "string",
"color_scheme": "light",
"colors": {
"primary": "string",
"accent": "string",
"background": "string",
"surface": "string",
"text": "string",
"muted_text": "string",
"border": "string"
},
"typography": {
"font_family": "system",
"heading_weight": 42,
"body_weight": 42
},
"radius": "none"
},
"sponsored_config": {},
"auth_config": {},
"created_at": "2026-05-04T09:42:00Z",
"updated_at": "2026-05-04T09:42:00Z",
"created_by": "string",
"versions": [
{
"id": "string",
"version": 42,
"schema_version": 42,
"published_at": "2026-05-04T09:42:00Z",
"published_by": "string"
}
],
"latest_version": {
"id": "string",
"version": 42,
"schema_version": 42,
"published_at": "2026-05-04T09:42:00Z",
"published_by": "string"
},
"draft_revision": "string",
"published_section_ids": [
"string"
]
}
{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"ctx": {}
}
]
}