Implementation:Openai Openai python API Resource Base
| Knowledge Sources | |
|---|---|
| Domains | SDK_Infrastructure |
| Last Updated | 2026-02-15 00:00 GMT |
Overview
Concrete tool for base API resource classes provided by the openai-python SDK.
Description
The _resource module defines two base classes, SyncAPIResource and AsyncAPIResource, from which all concrete API resource classes inherit. Each base class stores a reference to the parent OpenAI or AsyncOpenAI client and binds the HTTP verb methods (_get, _post, _patch, _put, _delete, _get_api_list) directly from the client for convenient use in subclasses. SyncAPIResource provides a _sleep() method using time.sleep(), while AsyncAPIResource provides an async _sleep() using anyio.sleep(). This file is auto-generated from the OpenAPI spec by Stainless.
Usage
Use these base classes when implementing new API resource wrappers. All existing resources (Chat, Files, Models, Moderations, etc.) inherit from one of these two classes.
Code Reference
Source Location
- Repository: openai-python
- File: src/openai/_resource.py
- Lines: 1-43
Signature
class SyncAPIResource:
_client: OpenAI
def __init__(self, client: OpenAI) -> None: ...
def _sleep(self, seconds: float) -> None: ...
class AsyncAPIResource:
_client: AsyncOpenAI
def __init__(self, client: AsyncOpenAI) -> None: ...
async def _sleep(self, seconds: float) -> None: ...
Import
from openai._resource import SyncAPIResource, AsyncAPIResource
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| client | OpenAI / AsyncOpenAI | Yes | The parent client instance providing HTTP methods and configuration |
| seconds | float | Yes | Duration in seconds for the _sleep method |
Outputs
| Name | Type | Description |
|---|---|---|
| (instance) | SyncAPIResource / AsyncAPIResource | Initialized resource with bound HTTP verb methods |
Usage Examples
Basic Usage
from openai._resource import SyncAPIResource
class MyCustomResource(SyncAPIResource):
def list_items(self):
return self._get("/my-endpoint", cast_to=dict)
# Resources are always instantiated by the client:
# client = OpenAI()
# resource = MyCustomResource(client)