Python Examples — UnicyFalcon API
This guide shows how to integrate the UnicyFalcon API in Python.API access requires the API plan or higher.
1) Install dependencies
Copy
pip install requests
2) Reusable Python client
Copy
import requests
import time
import hmac
import hashlib
import base64
import json
from urllib.parse import urlparse
class UnicyFalconApiClient:
def __init__(self, api_key: str, hmac_secret: str, base_url: str, timeout: int = 30):
self.api_key = api_key
self.hmac_secret = hmac_secret
self.base_url = base_url.rstrip('/')
self.timeout = timeout
self.session = requests.Session()
def _sign(self, method: str, uri: str, body: str, timestamp: int) -> str:
payload = f"{method.upper()}|{uri}|{body}|{timestamp}"
signature = hmac.new(
self.hmac_secret.encode('utf-8'),
payload.encode('utf-8'),
hashlib.sha256
).digest()
return base64.b64encode(signature).decode('utf-8')
def request(self, method: str, endpoint: str, data=None, params=None):
url = f"{self.base_url}/{endpoint.lstrip('/')}"
timestamp = int(time.time())
body = json.dumps(data) if data else ''
parsed_url = urlparse(self.base_url)
base_path = parsed_url.path or ''
uri = f"{base_path}/{endpoint.lstrip('/')}"
signature = self._sign(method, uri, body, timestamp)
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': self.api_key,
'X-Timestamp': str(timestamp),
'X-Signature': signature,
}
response = self.session.request(
method=method.upper(),
url=url,
headers=headers,
json=data if data else None,
params=params,
timeout=self.timeout
)
payload = response.json()
if response.status_code >= 400:
message = payload.get('message', 'Unknown error')
raise Exception(f"API Error (HTTP {response.status_code}): {message}")
return payload
def get(self, endpoint: str, params=None):
return self.request('GET', endpoint, params=params)
def post(self, endpoint: str, data=None):
return self.request('POST', endpoint, data=data)
def put(self, endpoint: str, data=None):
return self.request('PUT', endpoint, data=data)
def delete(self, endpoint: str):
return self.request('DELETE', endpoint)
3) Usage examples
Copy
client = UnicyFalconApiClient(
api_key='ak_your_api_key_here',
hmac_secret='your_hmac_secret_here',
base_url='https://your-subdomain.unicyfalcon.com/api/v1'
)
# List customers
customers = client.get('/customers')
# Create an order
order = client.post('/orders', {
'customer_id': 'uuid',
'order_number': 'ORD-2026-001',
'order_items': [
{'product_id': 'uuid', 'quantity': 2, 'unit_price': 99.99}
],
'status': 'pending',
'pickup_address_id': 'uuid',
'dropoff_address_id': 'uuid'
})
