RESTful API v1.1

API Documentation

Integrate electronic signature into your applications in just minutes

🚀 Quick Start

1. Get your API key

Create an account and generate your API key from your dashboard.

Note : Keep your API key secret and never share it publicly.

2. Make your first request

Use your API key to authenticate and retrieve your user information :

curl -X GET https://api.giga-signature.com/api/v1/user \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

3. Create your first signature process

Upload a document then create a complete signature process :

# 1. Document upload
curl -X POST https://api.giga-signature.com/api/v1/documents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -F "file=@contract.pdf" \
  -F "name=Contrat de service"
# 2. Create a signature process
curl -X POST https://api.giga-signature.com/api/v1/signature-processes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Client contract signature",
    "documents": [{"id": 123, "order": 1}],
    "signers": [{
      "name": "Jean Dupont",
      "email": "jean@example.com",
      "order": 1
    }]
  }'

🔐 Authentication

Bearer Token

The API uses Bearer Token authentication. Include your API key in the header Authorization de chaque requête.

Important: Never share your API key. Treat it like a password.

Header format

Authorization: Bearer YOUR_API_KEY

Example with different languages

curl -X GET https://api.giga-signature.com/api/v1/user \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.giga-signature.com/api/v1/user', [
    'headers' => [
        'Authorization' => 'Bearer YOUR_API_KEY',
        'Accept' => 'application/json',
    ],
]);

$user = json_decode($response->getBody(), true);
const response = await fetch('https://api.giga-signature.com/api/v1/user', {
    method: 'GET',
    headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Accept': 'application/json'
    }
});

const user = await response.json();
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get('https://api.giga-signature.com/api/v1/user', headers=headers)
user = response.json()

📡 Available endpoints

Authentification API

POST /api/v1/auth/login
User login

Authenticates a user and returns an access token.

Show more details
Request body
{
    "email": "user@example.com",
    "password": "your-password"
}
Response (200 OK)
{
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
        "token_type": "bearer",
        "expires_in": 3600,
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "user@example.com"
        }
    }
}
Code examples
curl -X POST https://api.giga-signature.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "your-password"
  }'
POST /api/v1/auth/logout
Déconnexion
POST /api/v1/auth/refresh
Refresh token

Refreshes an expired access token.

Show more details
Code examples
curl -X POST https://api.giga-signature.com/api/v1/auth/refresh \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Accept: application/json"

Compte & Quotas

GET /api/v1/account
Account information and quotas

Retrieve tenant information, quotas and connected user.

Show more details
Response (200 OK)
{
    "data": {
        "tenant": {
            "name": "ACME Corp",
            "subscription_type": "premium",
            "quotas": {
                "documents_limit": 1000,
                "documents_used": 245,
                "signatures_limit": 5000,
                "signatures_used": 823
            }
        },
        "user": {
            "id": 1,
            "name": "Jean Dupont",
            "email": "jean.dupont@acme.com",
            "role": "tenant_admin"
        }
    }
}
Code examples
curl -X GET https://api.giga-signature.com/api/v1/account \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
GET /api/v1/account/usage
Usage statistics

Retrieves tenant usage statistics.

Show more details
Code examples
curl -X GET https://api.giga-signature.com/api/v1/account/usage \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Documents

GET /api/v1/documents
List documents

Retrieves the list of tenant documents.

Show more details
Code examples
curl -X GET https://api.giga-signature.com/api/v1/documents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
POST /api/v1/documents
Upload a document

Uploads a new PDF document.

Show more details
Code examples
curl -X POST https://api.giga-signature.com/api/v1/documents \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -F "file=@/path/to/document.pdf" \
  -F "name=Contrat de service"
GET /api/v1/documents/{id}
Get a document
DELETE /api/v1/documents/{id}
Delete a document

RECOMMENDED Multi-Document Signature Processes

POST /api/v1/signature-processes
Create a multi-document process

Creates a new signature process with multiple documents and signers. Supports sequential or parallel workflows.

See full example
{
    "name": "Service contract 2025",
    "description": "Annual maintenance contract",
    "documents": [
        {
            "id": 123,
            "order": 1
        },
        {
            "id": 124,
            "order": 2
        }
    ],
    "signers": [
        {
            "name": "Jean Dupont",
            "email": "jean.dupont@example.com",
            "order": 1,
            "type": "sequential"
        },
        {
            "name": "Marie Martin",
            "email": "marie.martin@example.com",
            "order": 2,
            "type": "sequential"
        }
    ],
    "options": {
        "enable_otp": true,
        "enable_notifications": true
    }
}
Code examples
curl -X POST https://api.giga-signature.com/api/v1/signature-processes \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Contrat de vente 2024",
    "documents": [{"id": 123, "order": 1}],
    "signers": [{
        "name": "Jean Dupont",
        "email": "jean.dupont@example.com",
        "order": 1,
        "type": "sequential"
    }],
    "options": {
        "enable_otp": true,
        "enable_notifications": true
    }
  }'
POST /api/v1/signature-processes/{id}/send
Send to signers

Sends the process to signers.

Show more details
Code examples
curl -X POST https://api.giga-signature.com/api/v1/signature-processes/123/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
POST /api/v1/signature-processes/{id}/cancel
Cancel process
POST /api/v1/signature-processes/{id}/fields
Define signature fields
GET /api/v1/signature-processes/{id}/download-signed-pdf
Download signed PDF

Archives

GET /api/v1/archives
List archived processes
GET /api/v1/archives/{id}/download
Download ZIP archive

api_docs.endpoints.vault.title

GET /api/v1/vault/documents
api_docs.endpoints.vault.list_documents

Récupère la liste des documents signés stockés dans le coffre-fort numérique.

Paramètres de requête :
  • search - Recherche dans les noms et tags
  • status - active, archived, expiring, expired
  • date_from / date_to - Filtrage par date
  • tags - Filtrer par tags (séparés par virgules)
  • per_page - Nombre de résultats par page (défaut: 15)
Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/vault/documents?status=active&tags=contract,2025" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents?status=active&tags=contract,2025', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const data = await response.json();
console.log(data);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents?status=active&tags=contract,2025');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents'
params = {
    'status': 'active',
    'tags': 'contract,2025'
}
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)
GET /api/v1/vault/documents/{id}
api_docs.endpoints.vault.get_document

Récupère les informations détaillées d'un document spécifique dans le coffre-fort.

Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/vault/documents/123" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const document = await response.json();
console.log(document);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$document = json_decode($response, true);
print_r($document);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents/123'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(url, headers=headers)
document = response.json()
print(document)
GET /api/v1/vault/documents/{id}/download
api_docs.endpoints.vault.download_pdf

Télécharge directement le fichier PDF signé.

Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/vault/documents/123/download" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o "document-signed.pdf"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123/download', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  const blob = await response.blob();
  const url = window.URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'document-signed.pdf';
  a.click();
}
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123/download');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY'
]);

$pdfContent = curl_exec($ch);
curl_close($ch);

file_put_contents('document-signed.pdf', $pdfContent);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents/123/download'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY'
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    with open('document-signed.pdf', 'wb') as f:
        f.write(response.content)
GET /api/v1/vault/documents/{id}/package
api_docs.endpoints.vault.download_package

Télécharge un package ZIP contenant le document signé, le certificat de signature et l'audit trail.

Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/vault/documents/123/package" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o "document-package.zip"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123/package', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  const blob = await response.blob();
  const url = window.URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'document-package.zip';
  a.click();
}
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123/package');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY'
]);

$zipContent = curl_exec($ch);
curl_close($ch);

file_put_contents('document-package.zip', $zipContent);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents/123/package'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY'
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    with open('document-package.zip', 'wb') as f:
        f.write(response.content)
POST /api/v1/vault/documents/{id}/archive
api_docs.endpoints.vault.archive

Archive un document du coffre-fort. Les documents archivés restent accessibles mais sont filtrés par défaut.

Exemples :
cURL
curl -X POST "https://api.giga-signature.com/api/v1/vault/documents/123/archive" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123/archive', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const result = await response.json();
console.log(result);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123/archive');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
print_r($result);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents/123/archive'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.post(url, headers=headers)
result = response.json()
print(result)
POST /api/v1/vault/documents/{id}/unarchive
api_docs.endpoints.vault.unarchive

Restaure un document archivé dans le coffre-fort actif.

Exemples :
cURL
curl -X POST "https://api.giga-signature.com/api/v1/vault/documents/123/unarchive" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123/unarchive', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const result = await response.json();
console.log(result);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123/unarchive');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
print_r($result);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/vault/documents/123/unarchive'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.post(url, headers=headers)
result = response.json()
print(result)
PUT /api/v1/vault/documents/{id}/tags
api_docs.endpoints.vault.update_tags

Met à jour les tags d'un document pour faciliter la recherche et l'organisation.

Exemples :
cURL
curl -X PUT "https://api.giga-signature.com/api/v1/vault/documents/123/tags" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tags": ["contract", "2025", "important", "client-abc"]
  }'
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/vault/documents/123/tags', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    tags: ['contract', '2025', 'important', 'client-abc']
  })
});

const result = await response.json();
console.log(result);
PHP
$data = [
    'tags' => ['contract', '2025', 'important', 'client-abc']
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/vault/documents/123/tags');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json',
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
print_r($result);
Python
import requests
import json

url = 'https://api.giga-signature.com/api/v1/vault/documents/123/tags'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
data = {
    'tags': ['contract', '2025', 'important', 'client-abc']
}

response = requests.put(url, headers=headers, data=json.dumps(data))
result = response.json()
print(result)
GET /api/v1/vault/statistics
api_docs.endpoints.vault.statistics

Récupère des statistiques sur l'utilisation du coffre-fort numérique.

Réponse :
{
  "success": true,
  "data": {
    "total_documents": 150,
    "active_documents": 120,
    "archived_documents": 30,
    "expiring_soon": 5,
    "total_size": 1073741824,
    "total_size_formatted": "1 GB",
    "documents_by_month": [
      {
        "month": "2025-01",
        "count": 15
      }
    ],
    "top_tags": [
      {
        "tag": "contract",
        "count": 45
      }
    ]
  }
}

Templates

GET /api/v1/templates
List templates
POST /api/v1/templates/{id}/duplicate
Duplicate a template

Webhooks

POST /api/v1/webhooks
Configure a webhook

Configure a webhook to receive real-time notifications.

See available events
Supported events:
  • document.uploaded - Document uploaded
  • document.deleted - Document deleted
  • document.completed - Document completed
  • signature.created - Signature created
  • signature.completed - Signature completed
  • signature.refused - Signature refused
  • process.completed - Process completed
GET /api/v1/webhooks/{id}/logs
Webhook call history

api_docs.endpoints.users.title

GET /api/v1/users
api_docs.endpoints.users.list

Récupère la liste paginée des utilisateurs du tenant.

Paramètres de requête :
  • search - Recherche par nom ou email
  • role - Filtrer par rôle (tenant_admin, user, viewer)
  • per_page - Nombre de résultats par page
Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/users?search=john&role=user&per_page=20" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const params = new URLSearchParams({
  search: 'john',
  role: 'user',
  per_page: 20
});

const response = await fetch(`https://api.giga-signature.com/api/v1/users?${params}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const users = await response.json();
console.log(users);
PHP
$params = http_build_query([
    'search' => 'john',
    'role' => 'user',
    'per_page' => 20
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users?' . $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$users = json_decode($response, true);
print_r($users);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/users'
params = {
    'search': 'john',
    'role': 'user',
    'per_page': 20
}
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(url, params=params, headers=headers)
users = response.json()
print(users)
POST /api/v1/users
api_docs.endpoints.users.create

Crée un nouvel utilisateur dans le tenant.

Exemples :
cURL
curl -X POST "https://api.giga-signature.com/api/v1/users" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
    "password": "SecurePass123!",
    "role": "user",
    "send_invitation": true
  }'
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/users', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    name: 'Jane Doe',
    email: 'jane.doe@example.com',
    password: 'SecurePass123!',
    role: 'user',
    send_invitation: true
  })
});

const newUser = await response.json();
console.log(newUser);
PHP
$data = [
    'name' => 'Jane Doe',
    'email' => 'jane.doe@example.com',
    'password' => 'SecurePass123!',
    'role' => 'user',
    'send_invitation' => true
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json',
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$newUser = json_decode($response, true);
print_r($newUser);
Python
import requests
import json

url = 'https://api.giga-signature.com/api/v1/users'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
data = {
    'name': 'Jane Doe',
    'email': 'jane.doe@example.com',
    'password': 'SecurePass123!',
    'role': 'user',
    'send_invitation': True
}

response = requests.post(url, headers=headers, data=json.dumps(data))
newUser = response.json()
print(newUser)
GET /api/v1/users/{id}
api_docs.endpoints.users.get

Récupère les informations détaillées d'un utilisateur spécifique.

Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/users/456" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/users/456', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const user = await response.json();
console.log(user);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users/456');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$user = json_decode($response, true);
print_r($user);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/users/456'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(url, headers=headers)
user = response.json()
print(user)
PUT /api/v1/users/{id}
api_docs.endpoints.users.update

Met à jour les informations d'un utilisateur existant.

Exemples :
cURL
curl -X PUT "https://api.giga-signature.com/api/v1/users/456" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Smith",
    "role": "tenant_admin"
  }'
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/users/456', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    name: 'Jane Smith',
    role: 'tenant_admin'
  })
});

const updatedUser = await response.json();
console.log(updatedUser);
PHP
$data = [
    'name' => 'Jane Smith',
    'role' => 'tenant_admin'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users/456');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json',
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$updatedUser = json_decode($response, true);
print_r($updatedUser);
Python
import requests
import json

url = 'https://api.giga-signature.com/api/v1/users/456'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
data = {
    'name': 'Jane Smith',
    'role': 'tenant_admin'
}

response = requests.put(url, headers=headers, data=json.dumps(data))
updatedUser = response.json()
print(updatedUser)
DELETE /api/v1/users/{id}
api_docs.endpoints.users.delete

Supprime définitivement un utilisateur du tenant.

Exemples :
cURL
curl -X DELETE "https://api.giga-signature.com/api/v1/users/456" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/users/456', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

if (response.ok) {
  console.log('User deleted successfully');
}
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users/456');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 204) {
    echo "User deleted successfully";
}
Python
import requests

url = 'https://api.giga-signature.com/api/v1/users/456'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.delete(url, headers=headers)

if response.status_code == 204:
    print('User deleted successfully')
POST /api/v1/users/{id}/reset-password
api_docs.endpoints.users.reset_password

Envoie un email de réinitialisation du mot de passe à l'utilisateur.

Exemples :
cURL
curl -X POST "https://api.giga-signature.com/api/v1/users/456/reset-password" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/users/456/reset-password', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const result = await response.json();
console.log(result.message);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/users/456/reset-password');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
echo $result['message'];
Python
import requests

url = 'https://api.giga-signature.com/api/v1/users/456/reset-password'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.post(url, headers=headers)
result = response.json()
print(result['message'])

api_docs.endpoints.api_keys.title

GET /api/v1/api-keys
api_docs.endpoints.api_keys.list

Récupère la liste de toutes les clés API du tenant.

Exemples :
cURL
curl -X GET "https://api.giga-signature.com/api/v1/api-keys" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/api-keys', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

const apiKeys = await response.json();
console.log(apiKeys);
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/api-keys');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$apiKeys = json_decode($response, true);
print_r($apiKeys);
Python
import requests

url = 'https://api.giga-signature.com/api/v1/api-keys'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(url, headers=headers)
apiKeys = response.json()
print(apiKeys)
POST /api/v1/api-keys
api_docs.endpoints.api_keys.create

Crée une nouvelle clé API pour accéder à l'API.

Important : La clé API complète n'est affichée qu'une seule fois lors de la création. Conservez-la en lieu sûr.

Exemples :
cURL
curl -X POST "https://api.giga-signature.com/api/v1/api-keys" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production API Key",
    "expires_at": "2026-12-31T23:59:59Z"
  }'
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/api-keys', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    name: 'Production API Key',
    expires_at: '2026-12-31T23:59:59Z'
  })
});

const newApiKey = await response.json();
console.log('New API Key:', newApiKey.key); // Sauvegardez cette clé !
PHP
$data = [
    'name' => 'Production API Key',
    'expires_at' => '2026-12-31T23:59:59Z'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/api-keys');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json',
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$newApiKey = json_decode($response, true);
echo 'New API Key: ' . $newApiKey['key']; // Sauvegardez cette clé !
Python
import requests
import json

url = 'https://api.giga-signature.com/api/v1/api-keys'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}
data = {
    'name': 'Production API Key',
    'expires_at': '2026-12-31T23:59:59Z'
}

response = requests.post(url, headers=headers, data=json.dumps(data))
newApiKey = response.json()
print(f"New API Key: {newApiKey['key']}")  # Sauvegardez cette clé !
DELETE /api/v1/api-keys/{id}
api_docs.endpoints.api_keys.delete

Supprime définitivement une clé API. Cette action est irréversible.

Exemples :
cURL
curl -X DELETE "https://api.giga-signature.com/api/v1/api-keys/789" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
JavaScript
const response = await fetch('https://api.giga-signature.com/api/v1/api-keys/789', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});

if (response.ok) {
  console.log('API key deleted successfully');
}
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.giga-signature.com/api/v1/api-keys/789');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Accept: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 204) {
    echo "API key deleted successfully";
}
Python
import requests

url = 'https://api.giga-signature.com/api/v1/api-keys/789'
headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.delete(url, headers=headers)

if response.status_code == 204:
    print('API key deleted successfully')

💡 Usage examples

Complete signature workflow

  1. 1. Upload PDF document
  2. 2. Create signature process
  3. 3. Configure signature zones
  4. 4. Send to signers
  5. 5. Receive status webhooks
  6. 6. Download signed document

Complete PHP example

<?php
use GigaSignature\Client;
use GigaSignature\Models\SignatureProcess;

// Initialiser le client
$client = new Client('YOUR_API_KEY');

// 1. Upload a document
$document = $client->documents->upload([
    'file' => '/path/to/contract.pdf',
    'name' => 'Contrat de service 2024'
]);

// 2. Create a multi-document signature process
$process = $client->processes->create([
    'name' => 'Signature contrat client',
    'documents' => [
        ['id' => $document->id, 'order' => 1]
    ],
    'signers' => [
        [
            'name' => 'Jean Dupont',
            'email' => 'jean@example.com',
            'order' => 1,
            'type' => 'sequential'
        ]
    ],
    'options' => [
        'enable_otp' => true,
        'enable_notifications' => true
    ]
]);

// Configure signature zones
$client->processes->defineFields($process->id, [
    'fields' => [
        [
            'document_id' => $document->id,
            'signer_id' => 1,
            'type' => 'signature',
            'page' => 5,
            'x' => 100,
            'y' => 200,
            'width' => 200,
            'height' => 80,
            'required' => true
        ]
    ]
]);

// 4. Envoyer le processus aux signataires
$client->processes->send($process->id);

echo "Process sent successfully!";

⚠️ Error handling

The API returns standard HTTP error codes with detailed JSON messages.

Code Meaning Recommended action
400 Bad Request Check request parameters
401 Unauthorized Check your API key
403 Forbidden Insufficient permissions
404 Not Found Resource not found
429 Too Many Requests Rate limit exceeded, wait before retrying
500 Internal Server Error Contact support if error persists

Error format

{
    "error": {
        "code": "validation_error",
        "message": "The provided data is invalid",
        "errors": {
            "email": [
                "The email field is required",
                "The email format is invalid"
            ]
        }
    }
}

📦 Official SDKs

PHP SDK

For Laravel, Symfony and vanilla PHP

composer require gigasignature/php-sdk
GitHub Documentation

JavaScript SDK

For Node.js and browsers

npm install @gigasignature/js-sdk
GitHub Documentation

Python SDK

For Django, Flask and Python

pip install gigasignature
GitHub Documentation

More SDKs

Ruby, Go, Java - Coming soon

More SDKs are in development. Stay informed by subscribing to our developer newsletter.