Why can't get the remaining times of my API usage with python code?

I get some code in the web to check the remaining times of API usage:


import requests
import json
import os

def get_usage(api_key):
    url = 'https://api.openai.com/v1/usage'
    headers = {
      'Content-Type': 'application/json',
      'Authorization': f'Bearer {api_key}'
    }
    response = requests.get(url, headers=headers)
    data = response.json()
    return data

I use local port 2080 as proxy:

sudo nmap 127.0.0.1  -p2081
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000054s latency).
PORT     STATE SERVICE
2081/tcp open  kme-trap-port
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Set https proxy in terminal:

export https_proxy=http://127.0.0.1:2081

Enter into python terminal:
api_key = ‘xxxxxxxx’ # i am sure the key is correct
usage_data = get_usage(api_key)

It run into errors:

Traceback (most recent call last):
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 776, in urlopen
    self._prepare_proxy(conn)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1045, in _prepare_proxy
    conn.connect()
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connection.py", line 625, in connect
    self._tunnel()  # type: ignore[attr-defined]
  File "/usr/lib/python3.9/http/client.py", line 900, in _tunnel
    (version, code, message) = response._read_status()
  File "/usr/lib/python3.9/http/client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 844, in urlopen
    retries = retries.increment(
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/util/retry.py", line 470, in increment
    raise reraise(type(error), error, _stacktrace)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/util/util.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 776, in urlopen
    self._prepare_proxy(conn)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1045, in _prepare_proxy
    conn.connect()
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connection.py", line 625, in connect
    self._tunnel()  # type: ignore[attr-defined]
  File "/usr/lib/python3.9/http/client.py", line 900, in _tunnel
    (version, code, message) = response._read_status()
  File "/usr/lib/python3.9/http/client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 7, in get_usage
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/adapters.py", line 501, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
>>> usage_data = get_usage(api_key)
Traceback (most recent call last):
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 776, in urlopen
    self._prepare_proxy(conn)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1045, in _prepare_proxy
    conn.connect()
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connection.py", line 625, in connect
    self._tunnel()  # type: ignore[attr-defined]
  File "/usr/lib/python3.9/http/client.py", line 900, in _tunnel
    (version, code, message) = response._read_status()
  File "/usr/lib/python3.9/http/client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 844, in urlopen
    retries = retries.increment(
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/util/retry.py", line 470, in increment
    raise reraise(type(error), error, _stacktrace)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/util/util.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 776, in urlopen
    self._prepare_proxy(conn)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1045, in _prepare_proxy
    conn.connect()
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/urllib3/connection.py", line 625, in connect
    self._tunnel()  # type: ignore[attr-defined]
  File "/usr/lib/python3.9/http/client.py", line 900, in _tunnel
    (version, code, message) = response._read_status()
  File "/usr/lib/python3.9/http/client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 7, in get_usage
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/home/debian/python-chatgpt/venv/lib/python3.9/site-packages/requests/adapters.py", line 501, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

How can fix it?

You can’t fix it. The usage API is locked down to session authentication methods only used by the usage page in an account, and for a previous version of the usage page, which is for costs of API consumption. No API key.

Depending on what you mean by “remaining times”, you can get the current state of rate limits as return headers in an API request.

1 Like