API & developers
The entire vault is operated via code. Without touching the core.
Full REST API, 28+ HMAC-signed webhooks, native WordPress hooks, and zero-config Fluent integrations. If you have an IT team, they can hook up your stack in a single afternoon.
Anti-SSRF
HMAC SHA-256 signature
AES-256-CBC at rest
Timestamped audit trail
Mandatory TLS 1.3
Anti-tamper plugin
01
Complete REST API
Everything can be exposed via REST — clients, files, cards, links, embeds, tags, workflows, certificates, audit. Auth via API key, granular ACLs, and call logs.
Client endpoints
- GET
/wp-json/cv/v1/clients - POST
/wp-json/cv/v1/clients - PUT
/wp-json/cv/v1/clients/{id} - DEL
/wp-json/cv/v1/clients/{id}
File endpoints
- POST
/cv/v1/files/upload - GET
/cv/v1/files/{id}/token - POST
/cv/v1/files/{id}/archive - POST
/cv/v1/files/{id}/expiry
Cards / Links / Embeds endpoints
- GET
/cv/v1/cards - POST
/cv/v1/links - POST
/cv/v1/embeds - GET
/cv/v1/tags
Cross-functional endpoints
- GET
/cv/v1/search - GET
/cv/v1/audit - GET
/cv/v1/parcours - GET
/cv/v1/certificates
Example: retrieve the client list
curl -X GET https://votre-site.fr/wp-json/cv/v1/clients
-H "Authorization: Bearer YOUR_API_KEY"
-H "Accept: application/json"
# JSON response:
# {
# "data": [
# {"id": 12, "name": "Mr. Bertrand", "email": "...", "tier": 1},
# {"id": 13, "name": "SCI Verdun", "email": "...", "tier": 2}
# ],
# "meta": { "total": 124, "page": 1, "per_page": 20 }
# }Authentication & logging : API keys per user (WP Roles), ACL per endpoint, comprehensive call logs (method, URL, IP, operator, duration). Configurable quotas and rate-limits.
02
Webhooks (28+ events)
Every significant action triggers an HMAC-signed POST to your endpoints. Multi-target, independent secrets, anti-SSRF, exponential retry.
Vault & documents
file.uploadedfile.validatedfile.refusedfile.expiredfile.archivedfile.signed
Clients & auth
client.createdclient.archivedclient.taggedclient.loginclient.logoutclient.password_reset
Workflows & gates
parcours.enrolledstep.unlockedstep.completedquiz.submittedcertificate.issuedparcours.finished
Community & engagement
comment.postedannouncement.publishedtrophy.unlockedevent.createdevent.rsvpreplay.viewed
Example: payload + HMAC signature
POST https://votre-stack.fr/webhooks/cv-receiver
Headers:
X-CV-Event: file.validated
X-CV-Signature: sha256=8b1cde…
Content-Type: application/json
{
"event": "file.validated",
"occurred_at": "2026-05-02T10:34:21.842Z",
"data": {
"file_id": 4521,
"client_id": 12,
"operator_id": 3,
"name": "Bilan 2024 SARL VERDIA.pdf",
"audit_url": "https://votre-site.fr/cv/audit/4521"
}
}
# Verify signature on receiver side:
# computed = "sha256=" + hmac_sha256(secret, raw_body)
# hmac.compare_digest(computed, header) → trueConfiguration: multiple target URLs, each with its own secret. SSRF filtering (RFC 1918, link-local). Exponential retry up to 24h. Delivery logs.
03
Native WordPress Hooks
Client Vault is a WordPress plugin — the entire chain is extensible via add_action / add_filter without modifying the core. Compatible with your existing code and custom plugins.
Main actions
cv_after_file_uploadedcv_after_file_validatedcv_after_step_completedcv_after_client_createdcv_after_audit_log
Main filters
cv_email_subjectcv_email_bodycv_max_upload_sizecv_storage_quota_gbcv_token_lifetime
Capabilities & roles
cv_user_can_view_clientcv_user_can_validatecv_user_can_exportcv_user_capabilities_map
Example: send a Slack notification after validation
add_action( 'cv_after_file_validated', function ( $file_id, $client_id, $operator_id ) {
$file = cv_get_file( $file_id );
$client = cv_get_client( $client_id );
wp_remote_post( 'https://hooks.slack.com/services/T0…', [
'headers' => [ 'Content-Type' => 'application/json' ],
'body' => wp_json_encode( [
'text' => sprintf(
'✅ %s validated "%s" for %s',
wp_get_user( $operator_id )->display_name,
$file->name,
$client->name
),
] ),
] );
}, 10, 3 );04
Security & audit
If your CISO / DPO conducts an audit, these are the points they will examine. Everything is documented, configurable, and logged.
AES-256-CBC Encryption
Key per client area, unique IV per file, encryption at rest on disk. The master key resides in wp-config.php, never in the database.
Anti-SSRF (webhooks)
Blocks outgoing webhooks to internal networks (RFC 1918), localhost, link-local, private IPv6, and cloud metadata (169.254.x.x). Optional allowlist available.
Anti-tamper plugin
Hash of key files verified at plugin boot. If a critical file has been modified (potential compromise), the plugin refuses to start in sensitive mode.
Complete timestamped audit
Every API call, UI action, and webhook sent is logged: operator, IP, method, target, duration, and status. Provides legally admissible PDF or CSV exports.
Admin IP filtering
Restrict admin access to a specific set of IPs / CIDRs (office, VPN, remote work). IPv4 and IPv6 compatible.
GDPR: export & deletion
Selective client data export (JSON/ZIP), one-click right to be forgotten, and configurable retention periods by data category.
05
Native Fluent integrations
For the Fluent stack, it is zero-config. Client Vault detects the plugin’s presence and activates the gateway.
FluentCRM
Auto-tagging of contacts based on vault events, sequences triggered by journey steps, and dynamic segments.
FluentPlayer
Integrated video player for vault replays / media files, with viewing tracking per client.
FluentCart
Stripe payments integrated into client journeys: a “payment” step automatically validates upon receipt of the Stripe webhook.
Fluent Community
Mapping N × N journeys / spaces, 21 contextualized widgets, multi-source search, ranking and trophies.
Beyond Fluent: everything else goes through webhooks or the REST API. Direct Stripe, Calendly, Cal.com, Zapier, n8n, Make, your custom CRM — no limits.
06
Developer resources
Full documentation, ready-to-use collections, and a support channel.
Full documentation
Endpoints, payloads, examples, error codes, rate-limits, changelog.
Postman collection
All endpoints pre-configured, dev/staging/prod environments, payload examples.
OpenAPI / Swagger
YAML / JSON specification to generate your clients in TypeScript, Python, Go, etc.
Developer community
Private space for integrators: examples, use cases, and feedback on useful hooks.
Ready to connect your stack?
We will show you via video call.
30-minute CTO demo: we take your stack, list the connection points, and answer your security/GDPR questions live.