Hi, we have created an API gateway to connect to a third party API, we are able to make connections to TM1 REST API via the postman, We are looking to make the connection using these credentials for using TM1py.
The normal connection string (w/o API gateway) for connecting to TM1py looks something like this and is working fine.
--------------------------------------
params = {
"base_url": url,
"user": "apikey",
"password": '',
"async_requests_mode": True,
"ssl": True,
"verify": True,
}
return TM1Service(**params)
-----------------------------------------
In order to use the API gateway we need to pass 2 tokens:
1) "Authorization": f"Bearer {dx_requestor}", (coming from requestor). used to validate on client side
2) "X-Authorization": "Basic XYZ" (using the basic encode) used to validate the IBM side.
Both these tokens need to be passed as headers for TM1py connection.
This is what I am looking to pass
------------------------------------------------------
url = f"{DX_GATEWAY}{endpoint}"
headers = {
"Accept": "application/json;v=1",
"Content-Type": "application/json",
"Authorization": f"Bearer {dx_requestor}",
"X-Authorization": "Basic XYZ",
}
-------------------------------------------------------
My question here is how to pass these tokens as header in TM1py connection string.
Thanks!
TM1py SaaS
-
- Posts: 1
- Joined: Fri Jul 11, 2025 3:06 pm
- OLAP Product: Tm1
- Version: SaaS 12
- Excel Version: 365
-
- Posts: 34
- Joined: Sat Apr 08, 2017 8:40 pm
- OLAP Product: TM1
- Version: 10.2.2.6
- Excel Version: 2016
Re: TM1py SaaS
Currently there is no very elegant way to specify additional custom HTTP headers that TM1py should send with each request to TM1.
However, you can manipulate the HEADERS dictionary in the RestService class that maintains the default set of headers that TM1py uses.
If you do this before you initiate the TM1Service this will work. Below is an example that specifies an additional HTTP Header ("TM1-SessionContext") to overrule what gets displayed in the session context in tools like PAW and Arc.

Marius
However, you can manipulate the HEADERS dictionary in the RestService class that maintains the default set of headers that TM1py uses.
If you do this before you initiate the TM1Service this will work. Below is an example that specifies an additional HTTP Header ("TM1-SessionContext") to overrule what gets displayed in the session context in tools like PAW and Arc.
Code: Select all
from TM1py import TM1Service, RestService
tm1_params = {
"base_url": "https://company.planning-analytics.ibmcloud.com/tm1/api/tm1",
"user": "company01_tm1_automation",
"namespace": "LDAP",
"password": "...",
"ssl": True,
"verify": True,
"async_requests_mode": True,
}
RestService.HEADERS["TM1-SessionContext"] = "The Best TM1 Session"
with TM1Service(**tm1_params) as tm1:
success, status, error_log_file = tm1.processes.execute_with_return(
process_name="}bedrock.server.wait",
pWaitSec=60)

Marius