Getting started
Installation
pip install intezer-sdk
The SDK requires CPython 3.10 or newer.
The global API object
Almost every SDK call goes through a single IntezerApiClient
instance. The convenient way to configure it is to set a global instance once
at process start; every SDK class then picks it up automatically when its api
parameter is omitted.
from intezer_sdk import api
from intezer_sdk.analysis import FileAnalysis
api.set_global_api('<api_key>')
# No `api=` argument needed — the global one is used.
analysis = FileAnalysis(file_path='/path/to/sample')
analysis.send(wait=True)
Reading the API key from the environment
If you call set_global_api() without a key, the SDK reads
the INTEZER_ANALYZE_API_KEY environment variable:
import os
os.environ['INTEZER_ANALYZE_API_KEY'] = '<api_key>'
from intezer_sdk import api
api.set_global_api() # picks up INTEZER_ANALYZE_API_KEY
Multiple accounts: per-call API instances
Every SDK class accepts an explicit api= argument that overrides the global
one. This is useful when a single process talks to more than one Intezer account
or environment:
from intezer_sdk.api import IntezerApiClient
from intezer_sdk.analysis import FileAnalysis
tenant_a = IntezerApiClient(api_key='<key_a>')
tenant_b = IntezerApiClient(api_key='<key_b>')
analysis_a = FileAnalysis(file_path='sample', api=tenant_a)
analysis_b = FileAnalysis(file_path='sample', api=tenant_b)
US region
Customers on the US tenant must point the SDK at the US base URL:
from intezer_sdk import api
api.set_global_api(
api_key='<api_key>',
base_url='https://us.app.intezer.com/api/',
)
On-premise
Point the global API at your on-premise instance with base_url and
on_premise_version:
from intezer_sdk import api
from intezer_sdk.consts import OnPremiseVersion
api.set_global_api(
api_key='<api_key>',
base_url='https://intezer.your-company.com/api',
on_premise_version=OnPremiseVersion.V22_10,
verify_ssl=True,
)
Common options:
base_url— root URL of your on-premise API.on_premise_version— declared version of the on-premise deployment; the SDK uses this to disable features that are not yet available on your version.verify_ssl— set toFalseto skip TLS verification.proxies— standardrequestsproxies dict.
Custom CA bundle
The SDK uses requests under the hood, so to trust a private CA (typically
when your on-premise instance is fronted by an internal certificate authority)
set the REQUESTS_CA_BUNDLE environment variable to the CA bundle path before
importing the SDK:
export REQUESTS_CA_BUNDLE=/path/to/corporate-ca-bundle.pem
requests picks this up automatically; you don’t need to pass anything to
set_global_api().
Account information and quota
Once the global API is configured you can introspect the current account or look up other accounts in the organization:
from intezer_sdk.account import Account
me = Account.from_myself()
print(me.name, me.email)
quota = Account.get_my_quota()
print(quota)
for account in Account.get_organization_account():
print(account.account_id, account.name)
Error handling
All SDK exceptions inherit from intezer_sdk.errors.IntezerError.
Specific subclasses identify common failures so you can catch them precisely:
from intezer_sdk import errors
from intezer_sdk.analysis import FileAnalysis
try:
analysis = FileAnalysis(file_hash='<sha256>')
analysis.send(wait=True)
except errors.HashDoesNotExistError:
print('Hash not seen by Intezer yet — submit the file instead.')
except errors.InsufficientQuotaError:
print('No quota left for this account.')
except errors.IntezerError as exc:
print(f'Other Intezer failure: {exc}')
See the intezer_sdk.errors module reference for the full hierarchy.