Open Resume Share Protocol
v1.0.0
Zero-Registration
Official SDKs Ready
Integrating CVMesh Resume Sharing
Enable candidates to share their verified, ATS-compliant resume data with your platform in seconds. Use our official agnostic and React packages, or integrate directly with the open protocol.
Why Open Resume Share?
With Open Resume Share, third-party platforms and job applications connect directly without registering client secrets or managing backend token vaults. The user authenticates in a secure popup and selects which resume sections to share, and your application receives a single-use, 3-minute signed token to fetch the user's standardized JSON Resume.
Official Client Libraries
Recommended
We provide ready-to-use, fully typed TypeScript libraries that handle popup management, security validations, cross-origin communication, and token redemption out of the box.
@cvmesh/fetcherFramework Agnostic
Lightweight, zero-dependency client for Vanilla JS, Vue, Angular, Svelte, or Node.js.
@cvmesh/reactReact 17+ / 18 / 19
React hook (
useFetchResume) and Provider for seamless UI button and form integrations.How It Works in 3 Steps
Step 1
Open Consent Popup
Your application opens a popup pointing to
/share/pick passing your site's origin and a unique nonce.Step 2
User Authenticates & Picks
The candidate signs in to CVMesh, selects which resume to share, and chooses specific sections (work, skills, etc.).
Step 3
Redeem One-Time Token
A single-use JWT is returned via
postMessage. Your site calls /api/share/resume?token=... to receive the JSON Resume schema.Integration Code Examples
@cvmesh/fetcher (Agnostic)
@cvmesh/react (React Hook)
Manual: Browser JS
Manual: Node.js
Manual: Python
The
@cvmesh/fetcher package provides both a simple one-function helper requestResume() and a complete CVMeshClient class for full lifecycle control.Option 1: Quick start with requestResume()
Option 2: Advanced control with CVMeshClient
Security Architecture & Protocols
API Reference
GET /api/share/resume
Redeem a single-use token for candidate resume data.
Query Parameters:
token(string, required): Thecvs_...token received viapostMessage.format(string, optional): Set toxmlfor XML output; defaults tojson.
HTTP Status Codes:
200 OK: Success, returns standardized JSON Resume object.400 Bad Request: Missing token parameter.401 Unauthorized: Invalid signature or token expired (> 3 minutes).403 Forbidden: Origin mismatch.410 Gone: Token has already been redeemed (replay protection).429 Too Many Requests: Rate limit exceeded.