Delta Exchange API Authentication Fix Guide
Problem Summary
Your Delta Exchange trading bot is encountering a 401 invalid_api_key error, preventing it from
executing trades and accessing account information.
Root Cause Analysis
After comparing your [Link] file with the API credentials shown in your Delta Exchange
screenshot, I identified the primary issue:
API Key Mismatch: The API key in your [Link] file contains incorrect characters compared to
the actual API key generated by Delta Exchange.
Screenshot API Key: EqzsIHJof0Q0OrNCbe4t7JFosM5LIZ
[Link] API Key: EqzsIHJof0GOQrNCbe4t7JFosM5LIZ
Difference: Characters at positions 10-12 are incorrect (GOQ instead of Q0O)
Immediate Fix
Step 1: Update API Credentials
Replace the API key in your [Link] file:
# CORRECTED CONFIGURATION
API_KEY = "EqzsIHJof0Q0OrNCbe4t7JFosM5LIZ" # Fixed typo
API_SECRET = "O86GWFXkekLVjL78WoOiUvfyJe6Do9tPCywODxPcNDDgxUoNCN6KQFlG0Tkd" # This appea
DRY_RUN = True # Set to True for testing first
Step 2: Verify API Key Permissions
Ensure your Delta Exchange API key has the required permissions:
✅ Read Data permission (for market data and account info)
✅ Trading permission (for placing/canceling orders)
Step 3: Check IP Whitelisting
If you enabled IP whitelisting when creating the API key:
1. Go to Delta Exchange → API Management
2. Verify your current IP address is whitelisted
3. Add your IP if missing (you can find your IP in the error response)
Additional Improvements
Enhanced Signature Function
Your current signature function is good, but consider adding the User-Agent header as required
by Delta Exchange:
def sign_headers(method: str, path: str, params: dict = None, body: dict = None):
timestamp = str(int([Link]()))
query = ""
if params:
query = "&".join(f"{k}={params[k]}" for k in sorted([Link]()))
body_str = [Link](body) if body else ""
prehash = [Link]() + timestamp + path + (query or "") + body_str
signature = [Link](API_SECRET.encode(), [Link](), hashlib.sha256).hexdigest
headers = {
"api-key": API_KEY,
"timestamp": timestamp,
"signature": signature,
"Content-Type": "application/json",
"User-Agent": "python-trading-bot" # REQUIRED by Delta Exchange
}
return headers
API Connection Test Function
Add this function to test your API connection before running the main bot:
def test_api_connection(base_url):
print(f"Testing API connection to {base_url}")
# Test public endpoint
try:
r = [Link](f"{base_url}/v2/products", timeout=10)
if r.status_code == 200:
print("✓ Public API endpoint accessible")
else:
print(f"✗ Public API failed: {r.status_code}")
return False
except Exception as e:
print(f"✗ Public API error: {e}")
return False
# Test authenticated endpoint
try:
path = "/v2/orders"
params = {"state": "open"}
headers = sign_headers("GET", path, params)
r = [Link](f"{base_url}{path}", params=params, headers=headers, timeout=10)
if r.status_code == 200:
print("✓ Authenticated API endpoint working")
return True
elif r.status_code == 401:
print("✗ Authentication failed - check API key and secret")
return False
else:
print(f"✗ API error: {r.status_code}")
return False
except Exception as e:
print(f"✗ Authenticated API error: {e}")
return False
Testing Steps
1. Update the API key in [Link] with the correct value
2. Set DRY_RUN = True for initial testing
3. Run the test function to verify API connectivity:
base = detect_base_url()
if test_api_connection(base):
print("API connection successful! Ready to trade.")
else:
print("API connection failed. Check credentials.")
4. Monitor the logs for any remaining authentication errors
5. Set DRY_RUN = False only after successful testing
Common Delta Exchange API Issues to Avoid
1. Wrong Environment: Ensure you're using the correct API base URL for your account type
2. Signature Expiry: Delta Exchange requires signatures to be used within 5 seconds
3. Missing User-Agent: Some endpoints require the User-Agent header
4. Rate Limiting: Don't exceed 500 operations per second per product
5. IP Whitelisting: Keep your whitelisted IPs updated if using dynamic IP
Security Reminders
Never share your API secret key
Use strong IP whitelisting when possible
Start with minimal permissions and add as needed
Monitor your API key usage regularly
Rotate API keys periodically for security
Next Steps
After fixing the API key:
1. Test with small position sizes
2. Monitor the bot's behavior closely
3. Implement proper error handling and logging
4. Consider implementing additional risk management features
5. Set up monitoring alerts for your trading bot
This fix should resolve your 401 authentication error and get your Delta Exchange trading bot
working properly.