Sample code for 30+ languages & platforms
Chilkat2-Python

OpenAI (ChatGPT) List Models

See more OpenAI ChatGPT Examples

Show how to list available OpenAI models and shows how to parse the JSON model information.

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

http = chilkat2.Http()

# Implements the following CURL command:

# curl https://api.openai.com/v1/models \
#   -H "Authorization: Bearer $OPENAI_API_KEY"

# Use the following online tool to generate HTTP code from a CURL command
# Convert a cURL Command to HTTP Source Code

# Adds the "Authorization: Bearer $OPENAI_API_KEY" header.
# This is NOT a real key.  Change the "sk-vi...." to your own key.
http.AuthToken = "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"

sbResponseBody = chilkat2.StringBuilder()
success = http.QuickGetSb("https://api.openai.com/v1/models",sbResponseBody)
if (success == False):
    print(http.LastErrorText)
    sys.exit()

jResp = chilkat2.JsonObject()
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False

print("Response Body:")
print(jResp.Emit())

respStatusCode = http.LastStatus
print("Response Status Code = " + str(respStatusCode))
if (respStatusCode >= 400):
    print("Response Header:")
    print(http.LastHeader)
    print("Failed.")
    sys.exit()

# Sample JSON response:
# (Sample code for parsing the JSON response is shown below)

# {
#   "object": "list",
#   "data": [
#     {
#       "id": "babbage",
#       "object": "model",
#       "created": 1649358449,
#       "owned_by": "openai",
#       "permission": [
#         {
#           "id": "modelperm-49FUp5v084tBB49tC4z8LPH5",
#           "object": "model_permission",
#           "created": 1669085501,
#           "allow_create_engine": false,
#           "allow_sampling": true,
#           "allow_logprobs": true,
#           "allow_search_indices": false,
#           "allow_view": true,
#           "allow_fine_tuning": false,
#           "organization": "*",
#           "group": null,
#           "is_blocking": false
#         }
#       ],
#       "root": "babbage",
#       "parent": null
#     },
#     {
#       "id": "davinci",
#       "object": "model",
#       "created": 1649359874,
#       "owned_by": "openai",
#       "permission": [
#         {
#           "id": "modelperm-U6ZwlyAd0LyMk4rcMdz33Yc3",
#           "object": "model_permission",
#           "created": 1669066355,
#           "allow_create_engine": false,
#           "allow_sampling": true,
#           "allow_logprobs": true,
#           "allow_search_indices": false,
#           "allow_view": true,
#           "allow_fine_tuning": false,
#           "organization": "*",
#           "group": null,
#           "is_blocking": false
#         }
#       ],
#       "root": "davinci",
#       "parent": null
#     },
# ...
# ...

# Sample code for parsing the JSON response...
# Use the following online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON

v_object = jResp.StringOf("object")
i = 0
count_i = jResp.SizeOfArray("data")
while i < count_i :
    jResp.I = i
    id = jResp.StringOf("data[i].id")
    v_object = jResp.StringOf("data[i].object")
    created = jResp.IntOf("data[i].created")
    owned_by = jResp.StringOf("data[i].owned_by")
    root = jResp.StringOf("data[i].root")
    parent = jResp.StringOf("data[i].parent")
    j = 0
    count_j = jResp.SizeOfArray("data[i].permission")
    while j < count_j :
        jResp.J = j
        id = jResp.StringOf("data[i].permission[j].id")
        v_object = jResp.StringOf("data[i].permission[j].object")
        created = jResp.IntOf("data[i].permission[j].created")
        allow_create_engine = jResp.BoolOf("data[i].permission[j].allow_create_engine")
        allow_sampling = jResp.BoolOf("data[i].permission[j].allow_sampling")
        allow_logprobs = jResp.BoolOf("data[i].permission[j].allow_logprobs")
        allow_search_indices = jResp.BoolOf("data[i].permission[j].allow_search_indices")
        allow_view = jResp.BoolOf("data[i].permission[j].allow_view")
        allow_fine_tuning = jResp.BoolOf("data[i].permission[j].allow_fine_tuning")
        organization = jResp.StringOf("data[i].permission[j].organization")
        group = jResp.StringOf("data[i].permission[j].group")
        is_blocking = jResp.BoolOf("data[i].permission[j].is_blocking")
        j = j + 1

    i = i + 1