API RESTful v1.1

Documentation API

Intégrez la signature électronique dans vos applications en quelques minutes

🚀 Démarrage rapide

1. Obtenez votre clé API

Créez un compte et générez votre clé API depuis votre tableau de bord.

Note : Gardez votre clé API secrète et ne la partagez jamais publiquement.

2. Effectuer votre première requête

Utilisez votre clé API pour vous authentifier et récupérer vos informations utilisateur :

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

3. Créer votre premier processus de signature

Uploadez un document puis créez un processus de signature complet :

# 1. Upload du document
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. Créer un processus de signature
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": "Signature contrat client",
    "documents": [{"id": 123, "order": 1}],
    "signers": [{
      "name": "Jean Dupont",
      "email": "jean@example.com",
      "order": 1
    }]
  }'

🔐 Authentification

Bearer Token

L'API utilise l'authentification Bearer Token. Incluez votre clé API dans l'en-tête Authorization de chaque requête.

Important : Ne partagez jamais votre clé API. Traitez-la comme un mot de passe.

Format de l'en-tête

Authorization: Bearer YOUR_API_KEY

Exemple avec différents langages

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()

📡 Endpoints disponibles

Authentification API

POST /api/v1/auth/login
Connexion utilisateur

Authentifie un utilisateur et retourne un token d'accès.

Voir plus de détails
Corps de la requête
{
    "email": "user@example.com",
    "password": "your-password"
}
Réponse (200 OK)
{
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
        "token_type": "bearer",
        "expires_in": 3600,
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "user@example.com"
        }
    }
}
Exemples de code
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
Rafraîchir le token

Renouvelle un token d'accès expiré.

Voir plus de détails
Exemples de code
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
Informations du compte et quotas

Récupère les informations du tenant, les quotas et l'utilisateur connecté.

Voir plus de détails
Réponse (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"
        }
    }
}
Exemples de code
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
Statistiques d'utilisation

Récupère les statistiques d'utilisation du tenant.

Voir plus de détails
Exemples de code
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
Lister les documents

Récupère la liste des documents du tenant.

Voir plus de détails
Exemples de code
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
Uploader un document

Téléverse un nouveau document PDF.

Voir plus de détails
Exemples de code
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}
Récupérer un document
DELETE /api/v1/documents/{id}
Supprimer un document

RECOMMANDÉ Processus de Signature Multi-Documents

POST /api/v1/signature-processes
Créer un processus multi-documents

Crée un nouveau processus de signature avec plusieurs documents et signataires. Support des workflows séquentiels ou parallèles.

Voir l'exemple complet
{
    "name": "Contrat de service 2025",
    "description": "Contrat annuel de maintenance",
    "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
    }
}
Exemples de code
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
Envoyer aux signataires

Envoie le processus aux signataires.

Voir plus de détails
Exemples de code
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
Annuler le processus
POST /api/v1/signature-processes/{id}/fields
Définir les champs de signature
GET /api/v1/signature-processes/{id}/download-signed-pdf
Télécharger le PDF signé

Archives

GET /api/v1/archives
Lister les processus archivés
GET /api/v1/archives/{id}/download
Télécharger l'archive ZIP

Coffre-fort numérique (Vault)

GET /api/v1/vault/documents
Lister les documents du coffre-fort

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}
Détails d'un 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
Télécharger le PDF signé

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
Télécharger le package complet

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
Archiver un document

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
Désarchiver un document

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
Mettre à jour les 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
Statistiques du coffre-fort

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
      }
    ]
  }
}

Modèles

GET /api/v1/templates
Lister les templates
POST /api/v1/templates/{id}/duplicate
Dupliquer un template

Webhooks

POST /api/v1/webhooks
Configurer un webhook

Configure un webhook pour recevoir des notifications en temps réel.

Voir les événements disponibles
Événements supportés :
  • document.uploaded - Document téléversé
  • document.deleted - Document supprimé
  • document.completed - Document complété
  • signature.created - Signature créée
  • signature.completed - Signature complétée
  • signature.refused - Signature refusée
  • process.completed - Processus complété
GET /api/v1/webhooks/{id}/logs
Historique des appels webhook

Gestion des utilisateurs

GET /api/v1/users
Lister les utilisateurs

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
Créer un utilisateur

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}
Détails d'un utilisateur

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}
Modifier un utilisateur

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}
Supprimer un utilisateur

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
Réinitialiser le mot de passe

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'])

Gestion des clés API

GET /api/v1/api-keys
Lister les clés API

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
Créer une clé API

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}
Supprimer une clé API

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')

💡 Exemples d'utilisation

Workflow complet de signature

  1. 1. Upload du document PDF
  2. 2. Création du processus de signature
  3. 3. Configuration des zones de signature
  4. 4. Envoi aux signataires
  5. 5. Réception des webhooks de statut
  6. 6. Téléchargement du document signé

Exemple complet en PHP

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

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

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

// 2. Créer un processus de signature multi-documents
$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
    ]
]);

// Configuration des zones de signature
$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 "Processus envoyé avec succès !";

⚠️ Gestion des erreurs

L'API retourne des codes d'erreur HTTP standards avec des messages détaillés en JSON.

Code Signification Action recommandée
400 Bad Request Vérifiez les paramètres de la requête
401 Unauthorized Vérifiez votre clé API
403 Forbidden Permissions insuffisantes
404 Not Found Ressource introuvable
429 Too Many Requests Limite de taux dépassée, attendez avant de réessayer
500 Internal Server Error Contactez le support si l'erreur persiste

Format des erreurs

{
    "error": {
        "code": "validation_error",
        "message": "Les données fournies sont invalides",
        "errors": {
            "email": [
                "Le champ email est requis",
                "Le format de l'email est invalide"
            ]
        }
    }
}

📦 SDKs officiels

SDK PHP

Pour Laravel, Symfony et PHP vanilla

composer require gigasignature/php-sdk
Documentation GitHub

JavaScript SDK

Pour Node.js et navigateurs

npm install @gigasignature/js-sdk
Documentation GitHub

SDK Python

Pour Django, Flask et Python

pip install gigasignature
Documentation GitHub

Plus de SDKs

Ruby, Go, Java - Bientôt disponibles

D'autres SDKs sont en cours de développement. Restez informé en vous inscrivant à notre newsletter développeur.