Our app has version 1.1.0 in APPROVED status, but it can’t be published, and a new draft version can’t be created either. Both fail server-side on the same image authorization check.
Publish (Publish → Publish Version):
POST /v1/dashapi/versions/{version_id}/publish
→ 400
{"error":{"message":"App image is not authorized. Upload the image again for this app.",
"type":"invalid_request_error","param":null,"code":null}}
Create Draft (three-dot menu on the app):
POST /v1/dashapi/apps/{app_id}/draft
→ 400 (identical error body)
Nothing is surfaced in the UI in either case — the publish confirmation modal just stays open. The failure is only visible in the console/network tab.
The deadlock: the error says to upload the image again, but image upload fields only exist inside a draft version, and draft creation is exactly what the check blocks. The approved version is read-only (“Viewing the approved version. Only draft versions can be edited.”). There is no path through the UI to satisfy the validation.
The failing asset looks like the ChatGPT composer icon. In the App Info view the Directory icon renders fine in light and dark mode, but the composer icon shows empty upload placeholders in both. The icon endpoints line up with that:
icon?icon_type=icon&shape=square → 200
icon?icon_type=icon&shape=circle → 200
icon?icon_type=icon_dark&shape=square → 200
icon?icon_type=icon_dark&shape=circle → 200
icon?icon_type=composer&shape=square → 404
icon?icon_type=composer_dark&shape=square → 404
The version record returned by GET /v1/dashapi/apps/{app_id} still contains a populated composer_icon with a file_id and a files.openai.com URL — so it references a file the backend can no longer resolve. It 404s on read and fails authorization on write. The composer icon is a required field, which would explain why both publish and draft are gated.
Also on this version: logo_url and logo_url_dark are null, and the three screenshots entries have cdn_url: null and return 403 {"detail":"File stream access denied."}.
Because param and code are both null in the error response, the API never says which asset is at fault, so this is inference rather than confirmation.
We have emailed the review team on our approval thread. Posting here in case others have hit the same wall — has anyone found a way to clear a broken image reference on an approved version without creating a new app? There are several older threads about corrupted or unreachable app icons, but none I found with a resolution.