{"record":{"id":"f090ef6f7653352c","repo":"openai/openai-python","slug":"expected-a-non-empty-value-for-key-id-but-receiv","errorCode":null,"errorMessage":"Expected a non-empty value for `key_id` but received {key_id!r}","messagePattern":"Expected a non-empty value for `key_id` but received (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/openai/resources/admin/organization/admin_api_keys.py","lineNumber":118,"sourceCode":"        extra_body: Body | None = None,\n        timeout: float | httpx2.Timeout | None | NotGiven = not_given,\n    ) -> AdminAPIKey:\n        \"\"\"\n        Retrieve a single organization API key\n\n        Args:\n          key_id: The ID of the API key.\n\n          extra_headers: Send extra headers\n\n          extra_query: Add additional query parameters to the request\n\n          extra_body: Add additional JSON properties to the request\n\n          timeout: Override the client-level default timeout for this request, in seconds\n        \"\"\"\n        if not key_id:\n            raise ValueError(f\"Expected a non-empty value for `key_id` but received {key_id!r}\")\n        return self._get(\n            path_template(\"/organization/admin_api_keys/{key_id}\", key_id=key_id),\n            options=make_request_options(\n                extra_headers=extra_headers,\n                extra_query=extra_query,\n                extra_body=extra_body,\n                timeout=timeout,\n                security={\"admin_api_key_auth\": True},\n            ),\n            cast_to=AdminAPIKey,\n        )\n\n    def list(\n        self,\n        *,\n        after: Optional[str] | Omit = omit,\n        limit: int | Omit = omit,\n        order: Literal[\"asc\", \"desc\"] | Omit = omit,","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/openai/openai-python/blob/9917c6e28e66e90e1227b3d223c06a8c5441515a/src/openai/resources/admin/organization/admin_api_keys.py#L100-L136","documentation":"The sync Admin APIKeys `retrieve` method requires a non-empty `key_id` path parameter; passing an empty string or None means the URL /organization/admin_api_keys/{key_id} cannot be formed, so the SDK raises ValueError before any HTTP request.","triggerScenarios":"client.admin.api_keys.retrieve('') or retrieve(None), typically because an ID variable failed to populate (empty DB field, missed parsing step).","commonSituations":"Iterating records where some lack a key id, or an upstream API response shape change leaving key_id empty.","solutions":["Ensure the key_id is set before calling retrieve (fetch it from create/list first)","Add an upstream check/guard for empty IDs when looping over data"],"exampleFix":"# before\nclient.admin.api_keys.retrieve(key_id)\n# after\nif not key_id:\n    raise ValueError('missing key_id')\nclient.admin.api_keys.retrieve(key_id)","handlingStrategy":"validation","validationCode":"if not key_id:\n    raise ValueError('key_id is required')\nclient.admin.api_keys.retrieve(key_id)","typeGuard":"def is_nonempty_id(v: object) -> bool:\n    return isinstance(v, str) and bool(v.strip())","tryCatchPattern":null,"preventionTips":["Persist ids from create/list responses","Validate ids at the boundary of your data layer"],"tags":["admin","api-keys","path-parameter","validation"],"backgroundTag":"missing-resource-id","analyzedSha":"9917c6e28e66e90e1227b3d223c06a8c5441515a","analyzedAt":"2026-08-28T11:46:34.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}