# API Integration

You can use this API to create new sessions or get existing session link

### Generate hmac signature

{% tabs %}
{% tab title="NodeJS" %}

```javascript
const crypto = require('crypto');

const generateHmac = (httpMethod, url, body, contentType, xAuthClient, secretKey) => {
  const requestUrl = new URL(url);
  const requestPath = requestUrl.pathname;
  const queryParams = requestUrl.searchParams.toString();

  const dataToHash = `${httpMethod}\n${requestPath}\n${queryParams}\n${xAuthClient}\n${contentType}\n${body}`;

  const hmac = crypto.createHmac('sha256', secretKey);
  hmac.update(dataToHash);
  return hmac.digest('hex');
};
let httpMethod = "POST";
const url = "https://start.faceverify.ai/api/v1/session";
const body = JSON.stringify({
    country: country,
    uniqueIdentifier,
});
const contentType = "application/json";
//xAuthClient is your apiKey
const xAuthClient = "xxx-xxx-xxx-xxx-xxx"
const secretKey = "xxx-xxx-xxx-xxx-xxx";
const hmacSignature = generateHmac(httpMethod,url,body,contentType,xAuthClient,secretKey);
console.log(hmacSignature);
```

{% endtab %}

{% tab title="Python" %}

```python
import hashlib
import hmac
from urllib.parse import urlparse

def generate_hmac(http_method, url, body, content_type, x_auth_client, secret_key):
    parsed_url = urlparse(url)
    request_path = parsed_url.path
    query_params = parsed_url.query

    data_to_hash = f"{http_method}\n{request_path}\n{query_params}\n{x_auth_client}\n{content_type}\n{body}"
    hmac_signature = hmac.new(secret_key.encode('utf-8'), data_to_hash.encode('utf-8'), hashlib.sha256).hexdigest()
    return hmac_signature

http_method = "POST"
url = "https://start.faceverify.ai/api/v1/session"
body = '{"country": "US", "uniqueIdentifier": "user123"}'
content_type = "application/json"
x_auth_client = "xxx-xxx-xxx-xxx-xxx"  # Your API key
secret_key = "xxx-xxx-xxx-xxx-xxx"  # Your secret key

hmac_signature = generate_hmac(http_method, url, body, content_type, x_auth_client, secret_key)
print(hmac_signature)
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
function generateHmac($httpMethod, $url, $body, $contentType, $xAuthClient, $secretKey) {
    $parsedUrl = parse_url($url);
    $requestPath = $parsedUrl['path'];
    $queryParams = isset($parsedUrl['query']) ? $parsedUrl['query'] : '';

    $dataToHash = $httpMethod . "\n" . $requestPath . "\n" . $queryParams . "\n" . $xAuthClient . "\n" . $contentType . "\n" . $body;

    $hmacSignature = hash_hmac('sha256', $dataToHash, $secretKey);
    return $hmacSignature;
}

$httpMethod = "POST";
$url = "https://start.faceverify.ai/api/v1/session";
$body = json_encode(array(
    'country' => 'US',
    'uniqueIdentifier' => 'user123'
));
$contentType = "application/json";
// $xAuthClient is your API key
$xAuthClient = "xxx-xxx-xxx-xxx-xxx";
$secretKey = "xxx-xxx-xxx-xxx-xxx"; // Your secret key

$hmacSignature = generateHmac($httpMethod, $url, $body, $contentType, $xAuthClient, $secretKey);
echo $hmacSignature;
?>
```

{% endtab %}
{% endtabs %}

{% openapi src="/files/x2MyBaMZMX3iyeLJQEZq" path="/session" method="post" %}
[faceverify1.yaml](https://1053046052-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDvMwHcGuRndvUobPaqDt%2Fuploads%2FcaiwM2qtdhD560WMnXGM%2Ffaceverify1.yaml?alt=media\&token=bd6c0944-c88e-4f66-b241-63776f753d32)
{% endopenapi %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.faceverify.io/setup/api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
