PHPackages                             cyril-bochet/yousign-api-client-v3 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. cyril-bochet/yousign-api-client-v3

ActiveLibrary

cyril-bochet/yousign-api-client-v3
==================================

API client for Yousign · French eSignature solution.

1.0.9(1y ago)0379MITPHPPHP &gt;=8.1

Since May 21Pushed 1y ago1 watchersCompare

[ Source](https://github.com/CyrilBochet/YousignApiClientV3)[ Packagist](https://packagist.org/packages/cyril-bochet/yousign-api-client-v3)[ RSS](/packages/cyril-bochet-yousign-api-client-v3/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)DependenciesVersions (12)Used By (0)

CyrilBochet/YousignApiClient
----------------------------

[](#cyrilbochetyousignapiclient)

### README translation

[](#readme-translation)

- [English](README.en.md)

> Client API pour [ Yousign](https://yousign.com/fr-fr) · solution de signature électronique française.

> Toute contribution à l'amélioration est fortement apprécié !

### Sommaire

[](#sommaire)

- [Initialisation de la requête](#signature-request)
- [Ajout d'un document](#add-doc)
- [Ajout d'un signataire](#add-signer)
- [Mettre à jour les informations d'un signataire](#update-signer)
- [Ajout des champs](#add-fields)
- [Envoi de la signature](#send-request)
- [Récupération du document signé](#download-signed-document)
- [Annuler une requête de signature](#cancel-request)
- [Liens utiles](#useful-links)

### Initialisation de la requête

[](#initialisation-de-la-requête)

```
use YousignApiClient\YousignApiClient;
use YousignApiClient\SignatureRequest;

$apikey = 'API_KEY';
$env = 'test';

$client = new YousignApiClient($apikey, $env);

// Nouvelle requête
$signatureRequest = new SignatureRequest(string $name, string $deliveryMode, string $timezone, bool $orderedSigners);

$signatureRequest = new SignatureRequest('Contrat', 'email', 'Europe/Paris', true);

// Optionel
$signatureRequest->setCustomExperienceId("xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx");

$client->initiateSignatureRequest($signatureRequest);
```

### Création et ajout d'un document

[](#création-et-ajout-dun-document)

```
use YousignApiClient\Document;

$document = new Document(string $nature, string $path, bool $parseAnchors);

$document = new Document('signable_document', 'contrat.pdf', true);
$client->addDocument($document);
$documentId = $document->getId();
```

### Création d'un objet signataire

[](#création-dun-objet-signataire)

```
use YousignApiClient\Signer;
$signer = new Signer(string $firstName, string $lastName, string $email, ?string $phoneNumber, string $locale, ?string $signatureAuthenticationMode, ?string $signatureLevel);
$signer = new Signer("Jean", "DUPOND", 'j.dupond@mail.fr', '+33123456789', 'fr', 'otp_sms', 'electronic_signature');
```

### Paramétrage de la police

[](#paramétrage-de-la-police)

```
use YousignApiClient\Font;

$font = new Font(string $family, string $color, int $size = 12);
$font = new Font('Raleway', '#000000', 9);
```

### Mettre à jour les informations d'un signataire

[](#mettre-à-jour-les-informations-dun-signataire)

```
use YousignApiClient\YousignApiClient;

$client = new YousignApiClient($apikey, $env);
$client->updateSignerInformation(string $signatureRequestId, string $signerId, string $firstName, string $lastName, string $email, string $phoneNumber)
$client->updateSignerInformation('xxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxx', 'Jean', 'DUPOND', 'j.dupond@mail.fr', '+33123456789');
```

### Création et ajout des champs

[](#création-et-ajout-des-champs)

```
use YousignApiClient\Fields\CheckboxField;
use YousignApiClient\Fields\MentionField;
use YousignApiClient\Fields\RadioField;
use YousignApiClient\Fields\RadioGroup;
use YousignApiClient\Fields\SignatureField;
use YousignApiClient\Fields\TextField;

// Signature
$signatureField = new SignatureField(string $documentId, int $page, int $x, int $y, int $height = 37, int $width = 85);

$signatureField = new SignatureField('xxxxxxxxxxxxxxxxxx', 1, 57, 695, 85, 198);
$signer->addField($signatureField);

// Radio
$radio1 = new RadioField(string $name, int $x, int $y, int $size);

$radio1 = new RadioField('radio_1', 154, 341, 12);
$radio2 = new RadioField('radio_2', 184, 341, 12);

$radioGroup = new RadioGroup(string $documentId, int $page, string $name, bool $optional, array $radios);

$radioGroup = new RadioGroup('xxxxxxxxxxxxxx', 1, 'radio_group_name', false, [$radio1, $radio2]);
$signer->addField($radioGroup);

// Text
$textField = new TextField(int $maxLength, string $question, bool $optional, Font $font, string $documentId, int $page, int $x, int $y, int $height = 24, int $width = 24);

$textField = new TextField(10, 'Votre prénom :', false, $font, 'xxxxxxxxxxxxxx', 1, 468, 428, 24, 54);
$signer->addField($textField);

// Checkbox
$cb = new CheckboxField($size, $name, $checked, $optional, $documentId, $page, $x, $y);
$signer->addField($cb);

// Pour les documents avec beaucoup de champs, vous pouvez faire un tableau et boucler dessus
$mentionsArray = array(
    "signataire1" => array(
        array(
            "page" => 2,
            "x" => 57,
            "y" => 675,
            "width" => 197,
            "height" => 24,
            "mention" => "Certifié exact et sincère",
        ),
        array(
            "page" => 14,
            "x" => 35,
            "y" => 318,
            "width" => 156,
            "height" => 24,
            "mention" => "Bon pour acceptation",
        ),
    ),
    "signataire2" => array(
        array(
            "page" => 14,
            "x" => 206,
            "y" => 318,
            "width" => 156,
            "height" => 24,
            "mention" => "Certifié exact et sincère",
        ),
        array(
            "page" => 2,
            "x" => 297,
            "y" => 675,
            "width" => 197,
            "height" => 24,
            "mention" => "Bon pour acceptation",
        ),
    ),
);

  // Exemple : On boucle sur les champs mentions du signataire 2
  foreach ($mentionsArray["signataire2"] as $mention) {
    $mf = new MentionField($mention["mention"], $font, $documentId, $mention["page"], $mention["x"], $mention["y"], $mention["height"], $mention["width"]);
    $signer2->addField($mf);
  }
```

### Ajout des signataires et envoi de la signature

[](#ajout-des-signataires-et-envoi-de-la-signature)

```
 $client->addSigner($signer);
 $client->sendSignatureRequest();
```

### Webhooks

[](#webhooks)

```
use YousignApiClient\Webhook\Scope;
use YousignApiClient\Webhook\Webhook;
use YousignApiClient\Webhook\WebhookEvent;

// Nouveau Webhook

$allEvents = new WebhookEvent('*');
$event = new WebhookEvent('signature_request.done');

$allScopes = new Scope('*');
$scope = new Scope('public_api');

$webhook = new Webhook(bool $sandbox, bool $autoRetry, bool $enabled, string $endpoint, string $description, array $events, array $scopes);
$webhook = new Webhook(true, true, true, 'endpoint.fr', 'test', [$allEvents], [$allScopes]);

$client->createWebhook($webhook);

// Liste des Webhooks
$webhooks = $client->listWebhooks();
```

### Récupérer le document signé

[](#récupérer-le-document-signé)

```
$response = $client->downloadSignedDocument(string $signatureRequestId);
$response = $client->downloadSignedDocument('xxxxxxxxxxxxxxxx');
$file = fopen('path/to/file.pdf', 'w');
fwrite($file, $response);
fclose($file);
```

### Annuler une requête de signature

[](#annuler-une-requête-de-signature)

```
use YousignApiClient\CancellationRequest;

// Nouvelle requête d'annulation

$cancellationRequest = new CancellationRequest(string $reason, string $signatureRequestId, ?string $customNote = null);
$cancellationRequest = new CancellationRequest('other', 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx', 'Note personnalisée');
$client->cancelRequest($cancellationRequest);
```

### Liens utiles

[](#liens-utiles)

> Pour récupérer les coordonnées d'un endroit sur le document :

> Documentation complète de l'API Yousign :

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance44

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~61 days

Total

10

Last Release

441d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/01447caa3a17d1195fc467c4cacc253cb64653668fa742ab2ac0c69b5cbe7091?d=identicon)[CyrilBochet](/maintainers/CyrilBochet)

---

Top Contributors

[![CyrilBochet](https://avatars.githubusercontent.com/u/45588993?v=4)](https://github.com/CyrilBochet "CyrilBochet (24 commits)")

### Embed Badge

![Health badge](/badges/cyril-bochet-yousign-api-client-v3/health.svg)

```
[![Health](https://phpackages.com/badges/cyril-bochet-yousign-api-client-v3/health.svg)](https://phpackages.com/packages/cyril-bochet-yousign-api-client-v3)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
