Skip to main content

Authentication

All API requests require authentication using a valid API key.

For launch there is no domain or IP whitelisting. You can call the API from anywhere (production, staging, localhost, preview deploys, Postman, etc.).  

When we open the API to more partners in 2026 we plan to add a domain allow-list (max 10 domains you control yourself).

API Keys

Email partners@finmatch.io for your API key. Treat your API keys like passwords - never commit them to source control or expose them in client-side code.

Making Authenticated Requests

Include your API key in the Authorization header:

Authorization: Bearer sk_apikey

Example Request

curl -X POST https://api.finmatch.io/v1/finance-quote \
-H "Authorization: Bearer sk_apikey" \
-H "Content-Type: application/json" \
-d '{ ... }'

Example with JavaScript

const response = await fetch('https://api.finmatch.io/v1/finance-quote', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_apikey',
'Content-Type': 'application/json'
},
body: JSON.stringify({
merchant_id: 'M000100',
partner_id: 'P000001',
loan_amount: 5000.00,
merchant_finance_url: 'https://www.xyzsolar.co.uk/finance'
})
});

const data = await response.json();

Security Best Practices

1. Keep Keys Secure

  • Never expose API keys in client-side code
  • Use environment variables or secret management systems

2. Server-Side Only

Make API calls from your backend server, not from browsers or mobile apps.

3. Use HTTPS

Always make requests over HTTPS. HTTP requests will be rejected.

Rate Limiting

API keys are subject to rate limits:

  • 100 requests per minute per API key
  • Rate limit headers included in responses
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1609459200

Error Responses

401 Unauthorized

Missing or invalid API key:

{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid authorization header. Use: Authorization: Bearer sk_apikey"
}
}

429 Too Many Requests

Rate limit exceeded:

{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Maximum 100 requests per minute."
}
}

Getting Help

Need an API key? Email partners@finmatch.io.

Issues with authentication? Contact us.