EdgeGrid for Python
This library implements an Authentication handler for HTTP requests using the Akamai EdgeGrid Authentication scheme for Python.
Install
To use the library, you need to have Python 3.10 or later installed on your system. You can download it from https://www.python.org/downloads/.
NOTE: Python 2 is no longer supported by the Python Software Foundation. You won't be able to use the library with Python 2.
Then, install the edgegrid-python authentication handler from sources by running this command from the project root directory:
pip install .
Alternatively, you can install it from PyPI (Python Package Index) by running:
pip install edgegrid-python
Authentication
We provide authentication credentials through an API client. Requests to the API are signed with a timestamp and are executed immediately.
-
Place your credentials in an EdgeGrid resource file,
.edgerc, under a heading of[default]at your local home directory.[default] client_secret = C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN= host = akab-h05tnam3wl42son7nktnlnnx-kbob3i3v.luna.akamaiapis.net access_token = akab-acc35t0k3nodujqunph3w7hzp7-gtm6ij client_token = akab-c113ntt0k3n4qtari252bfxxbsl-yvsdj -
Use your local
.edgercby providing the path to your resource file and credentials' section header.import requests from akamai.edgegrid import EdgeGridAuth, EdgeRc edgerc = EdgeRc('~/.edgerc') section = 'default' baseurl = 'https://%s' % edgerc.get(section, 'host') session = requests.Session() session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
Or hard code them as variables.
import requests from akamai.edgegrid import EdgeGridAuth session = requests.Session() session.auth = EdgeGridAuth( client_token='akab-c113ntt0k3n4qtari252bfxxbsl-yvsdj', client_secret='C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN=', access_token='akab-acc35t0k3nodujqunph3w7hzp7-gtm6ij' )
Use
To use the library, provide the path to your .edgerc, your credentials section header, and the appropriate endpoint information.
import requests
import json
from akamai.edgegrid import EdgeGridAuth, EdgeRc
from urllib.parse import urljoin
edgerc = EdgeRc('~/.edgerc')
section = 'default'
baseurl = 'https://%s' % edgerc.get(section, 'host')
session = requests.Session()
session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
path = '/identity-management/v3/user-profile'
headers = {
"Accept": "application/json"
}
querystring = {
"actions": True,
"authGrants": True,
"notifications": True
}
result = session.get(urljoin(baseurl, path), headers=headers, params=querystring)
print(result.status_code)
print(json.dumps(result.json(), indent=2))
Query string parameters
When entering query parameters use the querystring property. Set up the parameters as name-value pairs in an object.
edgerc = EdgeRc('~/.edgerc')
section = 'default'
baseurl = 'https://%s' % edgerc.get(section, 'host')
session = requests.Session()
session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
path = '/identity-management/v3/user-profile'
querystring = {
"actions": True,
"authGrants": True,
"notifications": True
}
result = session.get(urljoin(baseurl, path), params=querystring)
Headers
Enter request headers in the headers property as name-value pairs in an object.
NOTE: You don't need to include the
Content-TypeandContent-Lengthheaders. The authentication layer adds these values.
edgerc = EdgeRc('~/.edgerc')
section = 'default'
baseurl = 'https://%s' % edgerc.get(section, 'host')
session = requests.Session()
session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
path = '/identity-management/v3/user-profile'
headers = {
"Accept": "application/json"
}
result = session.get(urljoin(baseurl, path), headers=headers)
Body data
Provide the request body as an object in the payload property.
edgerc = EdgeRc('~/.edgerc')
section = 'default'
baseurl = 'https://%s' % edgerc.get(section, 'host')
session = requests.Session()
session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
path = '/identity-management/v3/user-profile/basic-info'
payload = {
"contactType": "Billing",
"country": "USA",
"firstName": "John",
"lastName": "Smith",
"preferredLanguage": "English",
"sessionTimeOut": 30,
"timeZone": "GMT",
"phone": "3456788765"
}
result = session.put(urljoin(baseurl, path), json=payload)
As the data parameter for the session methods, EdgeGrid for Python
currently supports the bytes and requests_toolbelt.MultipartEncoder
types or a file-like object.
Debug
Enable debugging to get additional information about a request.
To log requests, use the built-in request logging. Add this before making a request:
import logging
from http.client import HTTPConnection
HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
urllib_log = logging.getLogger("urllib3")
urllib_log.setLevel(logging.DEBUG)
urllib_log.propagate = True
This will print everything apart from the HTTP response body. See the Requests library for Python for the original recipe.
To log specific parts like URL, status code, headers, or body, add this:
import requests
import logging
import json
from akamai.edgegrid import EdgeGridAuth, EdgeRc
from urllib.parse import urljoin
logger = logging.getLogger('requests_logger')
logging.basicConfig(level=logging.DEBUG)
edgerc = EdgeRc('~/.edgerc')
section = 'default'
baseurl = 'https://%s' % edgerc.get(section, 'host')
session = requests.Session()
session.auth = EdgeGridAuth.from_edgerc(edgerc, section)
path = '/identity-management/v3/user-profile'
result = session.get(urljoin(baseurl, path))
logger.debug(f'URL: {result.url}')
logger.debug(f'Status Code: {result.status_code}')
logger.debug(f'Headers: {result.headers}')
logger.debug(f'Body: {result.json()}')
Virtual environment
A virtual environment is a tool to keep dependencies required by different projects in separate places. The venv module is included in Python 3 by default.
Set up a virtual environment:
-
Initialize your environment in a new directory.
// Unix/macOS python3 -m venv ~/Desktop/myenv // Windows py -m venv ~/Desktop/myenvThis creates a
venvin the specified directory as well as copies pip into it. -
Activate your environment.
// Unix/macOS source ~/Desktop/myenv/bin/activate // Windows ~/Desktop/myenv/Scripts/activateYour prompt will change to show you're working in a virtual environment, for example:
(myenv) jsmith@abc-de12fg $ -
To recreate the environment, install the required dependencies within your project.
pip install -r dev-requirements.txt -
Run the tests.
// Unix/macOS pytest -v // Windows py -m pytest -v -
To deactivate your environment, run the
deactivatecommand.
Reporting issues
To report an issue or make a suggestion, create a new GitHub issue.
License
Copyright 2026 Akamai Technologies, Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Release files for edgegrid-python 2.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| edgegrid_python-2.0.8.tar.gz | 23.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| edgegrid_python-2.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.1 kB
Release files / edgegrid_python-2.0.8.tar.gz
| Download URL | edgegrid_python-2.0.8.tar.gz |
|---|---|
| Size | 23.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
868c25a963b5e239ae56f6c5baa88a0def2c783942feb4babb9f96c0f35c8998
|
|
BLAKE2b-256 checksum How to use checksums |
30ba25e83e81355486968aa6c0b1436143466b02e3f9d1f5cfb2d69889d28fe9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / edgegrid_python-2.0.8-py3-none-any.whl
| Download URL | edgegrid_python-2.0.8-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf8266ccc518cc78357d309ca34945744c26b958ac505c6bf34fc488ced2d438
|
|
BLAKE2b-256 checksum How to use checksums |
66059a1c1ec64f20c3ff19d66b22f18449bcda4c6dd27a80dfcc397e39720b07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log