Skip to main content

API Authentication

All API requests to Taktikal require authentication using HTTP Basic Authentication. This page explains how to properly authenticate your requests.

Understanding Basic Authentication

HTTP Basic Authentication is a simple authentication scheme built into the HTTP protocol. It requires sending a username and password with each request.

How Basic Auth Works

  1. Credentials: Combine your username and password with a colon (:) between them
  2. Encoding: Encode the combined string using Base64 encoding
  3. Header: Send the encoded string in the Authorization header prefixed with Basic

Example:

Username: mycompanykey
Password: api-1234567890abcdef
Combined: mycompanykey:api-1234567890abcdef
Base64 Encoded: bXljb21wYW55a2V5OmFwaS0xMjM0NTY3ODkwYWJjZGVm
Authorization Header: Basic bXljb21wYW55a2V5OmFwaS0xMjM0NTY3ODkwYWJjZGVm

Taktikal Authentication Credentials

For Taktikal API authentication:

  • Username: Your companyKey
  • Password: Your API-Key

Where to Find Your Credentials

You can find your authentication credentials in the Taktikal settings:

Implementation Examples

Raw HTTP Request

POST /signing-processes HTTP/1.1
Host: onboarding.taktikal.is
Authorization: Basic MTNhNGU3YjdlNzI0OmFwaS0zZmY0MDkxZDFkOWU0NzQwYmJiMTNkMWI2MmZi
Content-Type: application/json

{
"documentName": "Contract.pdf",
"document": "base64encodeddocument..."
}

cURL

curl -X POST "https://onboarding.taktikal.is/api/signing-processes" \
-H "Authorization: Basic MTNhNGU3YjdlNzI0OmFwaS0zZmY0MDkxZDFkOWU0NzQwYmJiMTNkMWI2MmZi" \
-H "Content-Type: application/json" \
-d '{
"documentName": "Contract.pdf",
"document": "base64encodeddocument..."
}'

JavaScript (Axios)

const axios = require('axios');

const response = await axios.post('https://onboarding.taktikal.is/api/signing-processes', {
documentName: 'Contract.pdf',
document: 'base64encodeddocument...'
}, {
headers: {
'Authorization': 'Basic MTNhNGU3YjdlNzI0OmFwaS0zZmY0MDkxZDFkOWU0NzQwYmJiMTNkMWI2MmZi',
'Content-Type': 'application/json'
}
});

JavaScript (Fetch)

const response = await fetch('https://onboarding.taktikal.is/api/signing-processes', {
method: 'POST',
headers: {
'Authorization': 'Basic MTNhNGU3YjdlNzI0OmFwaS0zZmY0MDkxZDFkOWU0NzQwYmJiMTNkMWI2MmZi',
'Content-Type': 'application/json'
},
body: JSON.stringify({
documentName: 'Contract.pdf',
document: 'base64encodeddocument...'
})
});

C# (RestSharp)

using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://onboarding.taktikal.is/api/");
client.Authenticator = new HttpBasicAuthenticator("YOUR_COMPANYKEY", "YOUR_API_KEY");

var request = new RestRequest("signing-processes", Method.Post);
request.AddJsonBody(new {
documentName = "Contract.pdf",
document = "base64encodeddocument..."
});

var response = await client.ExecuteAsync(request);

Python (Requests)

import requests
import base64

# Encode credentials
credentials = base64.b64encode(b'YOUR_COMPANYKEY:YOUR_API_KEY').decode('utf-8')

response = requests.post(
'https://onboarding.taktikal.is/api/signing-processes',
headers={
'Authorization': f'Basic {credentials}',
'Content-Type': 'application/json'
},
json={
'documentName': 'Contract.pdf',
'document': 'base64encodeddocument...'
}
)

Common Authentication Issues

Invalid Credentials Error (401)

If you receive a 401 Unauthorized error:

  1. Verify your credentials - Check that your companyKey and API-Key are correct
  2. Check the environment - Make sure you're using the right credentials for the right environment (dev vs. production)
  3. Verify Base64 encoding - Ensure your credentials are properly Base64 encoded
  4. Check the header format - The header should be Authorization: Basic <encoded-credentials>

Missing Authorization Header

Always include the Authorization header in your requests. Some endpoints may work without authentication, but it's recommended to always include it for security.

Environment Mismatch

Make sure you're using:

  • Development credentials with https://onboardingdev.taktikal.is/api/
  • Production credentials with https://onboarding.taktikal.is/api/

Security Best Practices

  1. Never expose credentials - Don't hardcode API keys in client-side code or public repositories
  2. Use environment variables - Store credentials in environment variables or secure configuration files
  3. Use HTTPS only - Always use HTTPS endpoints to ensure credentials are encrypted in transit

Testing Authentication

You can test your authentication by making a simple request to any API endpoint. If authentication fails, you'll receive a 401 Unauthorized response.

Example test request:

curl -X GET "https://onboarding.taktikal.is/api/management/apikeys" \
-H "Authorization: Basic YOUR_BASE64_ENCODED_CREDENTIALS"

If successful, you should receive a response with info on your API keys.