API v1.0 is live

Your career data.
Ready to build.

Connect verified education, experience, skills, and every dimension of a professional identity to AI assistants, resume builders, portfolios, ATS platforms, and your next idea.

38profile sections REST + MCPtwo interfaces Candidate-ownedpermissioned data
profile.request v1
GETgenuinein.com/api/v1/profile/IN18AAA010
{
  "success": true,
  "data": {
    "profile": {
      "name": "Alex Morgan",
      "title": "Product Engineer",
      "gpin": "IN18AAA010"
    },
    "skills": [
      { "name": "C#", "rating": 9 },
      { "name": "Azure", "rating": 8 }
    ]
  }
}
Verified at source
Candidate-controlled access
Quick start

From key to career data in three steps.

The same authentication header works across the REST profile API and MCP tools.

02

Send your request

Pass the key in the X-API-Key header and use a valid 10-character GPIN.

03

Build with verified JSON

Receive structured, scope-filtered profile data with request, version, rate-limit, ETag, and freshness headers.

terminal — curlREST
# Full profile — all granted sections
curl -H "X-API-Key: gin_career_YOUR_KEY" \
  https://genuinein.com/api/v1/profile/IN18AAA010

# One section
curl -H "X-API-Key: gin_career_YOUR_KEY" \
  https://genuinein.com/api/v1/profile/IN18AAA010/education

# Invoke an MCP tool for an AI assistant
curl -X POST -H "X-API-Key: gin_career_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"gpin":"IN18AAA010"}' \
  https://genuinein.com/api/v1/mcp/tools/get_skills
API Reference

Authentication, errors, and rate limits.

Everything you need to integrate reliably. Every response follows the same envelope structure.

Authentication

Every request must include your API key in the X-API-Key header. Keys are created from Settings → Career Data API. The raw key is shown once at creation — store it securely.

HTTP RequestRequired headers
GET /api/v1/profile/IN18AAA010 HTTP/1.1
Host: genuinein.com
X-API-Key: gin_career_abc123def456ghi789
Accept: application/json
If-None-Match: "etag-value-from-previous-response"  ← optional, enables 304
KEY FORMAT

gin_career_[32 chars]

BASE URL

https://genuinein.com/api/v1

Response Envelope

Every response (success or error) uses this exact shape. Parse success first, then read data or error accordingly.

✓ Success (200)JSON
{
  "success": true,
  "data": {
    "profile": { ... },
    "education": [ ... ],
    "skills": [ ... ],
    "experience": [ ... ]
  },
  "meta": {
    "request_id": "a1b2c3d4e5f6"
  }
}
✗ Error (4xx/5xx)JSON
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Daily limit reached.",
    "status_code": 429,
    "details": null
  },
  "meta": {
    "request_id": "x9y8z7w6v5u4"
  }
}

Error Codes

HTTP Code Meaning Action
400VALIDATION_ERRORInvalid GPIN format or section slugCheck GPIN is exactly 10 chars
401UNAUTHORIZEDMissing or invalid API keyVerify X-API-Key header
403FORBIDDENKey lacks scope for this dataRequest additional permissions
403TIER_UPGRADE_REQUIREDSection requires Pro+ planUpgrade subscription tier
404NOT_FOUNDGPIN doesn't exist or is hiddenVerify GPIN is correct
404SECTION_NOT_FOUNDSection slug invalid or emptyCheck /sections endpoint list
429RATE_LIMIT_EXCEEDEDToo many requestsWait for X-RateLimit-Reset
503SERVICE_UNAVAILABLEProfile cache temporarily downRetry after Retry-After seconds

Rate Limits & Response Headers

Every successful response includes these headers. Use them for caching, debugging, and rate-limit awareness.

Header Example Purpose
X-RateLimit-Limit100Max requests per day for your tier
X-RateLimit-Remaining87Requests remaining today
X-RateLimit-Reset1719792000Unix timestamp when limit resets (00:00 UTC)
ETag"a3f2b1c9"Use with If-None-Match for conditional GET (304)
Last-ModifiedTue, 22 Jul 2025 10:30:00 GMTWhen the profile was last updated
X-API-Versionv1API version serving this response
Cache-Controlprivate, max-age=60Safe to cache privately for 60s
Tip:Send If-None-Match: "etag" on subsequent requests. If the profile hasn't changed, you'll get a 304 Not Modified with no body — saving bandwidth and counting as zero rate-limit usage.
Candidate Career Workflows

Professional workflows for every stage of your career.

Pick an outcome. GenuineIN requests only that workflow’s declared profile sections, strips private and operational fields, and builds a targeted prompt. Resumes, portfolio pages, and personal sites are produced as modern standalone HTML you can save, print, or publish — everything else returns structured, decision-ready analysis.

Targeted, private, and ready for your AI.

No full-profile prefetch. A workflow makes one relative request for its transparent section list. Your API key stays in page memory, is never placed in a prompt, and is never persisted.

Candidate and target context

Add your candidate credentials and the opportunity you are targeting. Target context remains in this page only; only GPIN may be remembered on this device.

Not ready
Complete profile schema

One identity, every career dimension.38

Request the full profile at /api/v1/profile/{gpin} or append any section slug below for a focused response.

Scope-aware by design.Responses contain only the sections granted to the API key or OAuth token. Candidates can update privacy and access at any time.
Full JSON response

Complete data format for AI integration.

Actual JSON from GET /api/v1/profile/{gpin}. Every section shape documented below.

200 OKapplication/json
{
  "success": true,
  "data": {
    // ── PROFILE (object) ── endpoint: /info
    "profile": {
      "name": "Alex Morgan",
      "title": "Senior Software Engineer",
      "gpin": "IN18AAA010",
      "tei": 78,
      "emailId": "alex@company.com",        // requires contact:read scope
      "phone": "+91-9876543210",            // requires contact:read scope
      "gender": "Male",
      "city": "Bengaluru",
      "state": "Karnataka",
      "country": "India",
      "zip": "560001",
      "profilePhotoUrl": "https://cdn.genuinein.com/.../photo.jpg",
      "profileLink": "https://genuinein.com/profile/alexm/IN18AAA010",
      "profileSummary": "8+ years building distributed systems..."
    },

    // ── EDUCATION (array) ── endpoint: /education
    "education": [{
      "recordId": "enc_abc123",
      "title": "B.Tech Computer Science",
      "issuer": "Indian Institute of Technology",
      "orgLogo": "https://cdn.genuinein.com/.../logo.png",
      "location": "India",
      "duration": "Jun 2014 - May 2018",
      "shortDescription": "CGPA 8.7, Dean's List",
      "orderOfDisplay": 1,
      "publicViewUrl": "https://genuinein.com/record/...",
      "metaData": [
        { "header": "Specialization", "value": "Software Engineering" },
        { "header": "Status", "value": "Completed" },
        { "header": "Program Type", "value": "Full Time" }
      ]
    }],

    // ── EXPERIENCE (array) ── endpoint: /experience
    "experience": [{
      "recordId": "enc_def456",
      "title": "Senior Software Engineer",
      "issuer": "Technology Corp",
      "duration": "Jan 2022 - Present",
      "shortDescription": "Led microservices migration, 40% latency reduction",
      "metaData": [
        { "header": "Designation", "value": "Senior Engineer" },
        { "header": "Employment Type", "value": "Full Time" }
      ]
    }],

    // ── SKILLS (array) ── endpoint: /skills
    "skills": [
      { "recordId": "enc_sk01", "name": "C#", "category": "Programming", "rating": 9, "bloomsRate": "Apply" },
      { "recordId": "enc_sk02", "name": "Azure", "category": "Cloud", "rating": 8, "bloomsRate": "Analyze" }
    ],

    // ── CERTIFICATIONS (array) ── endpoint: /certifications
    "certifications": [{
      "recordId": "enc_cert01",
      "title": "Azure Solutions Architect Expert",
      "issuer": "Microsoft",
      "duration": "Mar 2023",
      "metaData": [{ "header": "Credential ID", "value": "MS-AZ305-2023" }]
    }],

    // ── LANGUAGES ── endpoint: /languages
    "languageSkills": [
      { "recordId": "enc_l01", "name": "English", "isReading": true, "isWriting": true, "isSpeaking": true, "isListening": true }
    ],

    // ── ATTRIBUTES ── endpoint: /attributes
    "personalAttributes": [
      { "recordId": "enc_a01", "name": "Leadership", "category": "Soft Skills", "rating": 8 }
    ],

    // ── MACHINES & TOOLS ── endpoint: /machines-tools
    "machinesAndTools": [
      { "recordId": "enc_mt01", "name": "Docker", "category": "DevOps", "rating": 7 }
    ],

    // ── INDUSTRY FOCUS ── endpoint: /industry-focus
    "industryFocus": [
      { "recordId": "enc_if01", "name": "FinTech", "category": "Finance", "percentage": 60 }
    ],

    // ── SOCIAL PROFILES ── endpoint: /social-profiles
    "socialProfiles": [
      { "recordId": "enc_sp01", "platform": "GitHub", "link": "https://github.com/alexm" }
    ],

    // ── RECOMMENDATIONS ── endpoint: /recommendations
    "recommendations": [{
      "recordId": "enc_rec01",
      "reviewerName": "Sarah Chen",
      "relationshipType": "Manager",
      "rating": 5,
      "testimonial": "Exceptional problem solver.",
      "completedOn": "Jul 15, 2024",
      "skills": [{ "Name": "C#", "Rating": 9 }],
      "attributes": [{ "Name": "Leadership", "Rating": 8 }]
    }],

    // ── CAREER OBJECTIVE ── endpoint: /career-objective
    "careerObjective": [{ "recordId": "enc_co01", "value": "Lead engineering teams." }],

    // ── All these use the same Records shape as education/experience:
    "projects": [],      "training": [],       "internship": [],
    "volunteership": [], "research": [],       "paperPublications": [],
    "patents": [],       "recognition": [],    "eventParticipation": [],
    "testScores": [],    "courses": [],        "sports": [],
    "credentials": [],   "portfolioRecords": [],
    "articleBlogs": [],  "newsMedia": [],      "communityInvolvement": [],

    "areaOfInterest": [{ "recordId": "enc_i01", "value": "Distributed Systems" }],
    "extraCurricularActivities": [{ "recordId": "enc_e01", "value": "Open Source" }],
    "institutionEndorsements": [{ "recordId": "enc_ie01", "title": "Top Performer", "organization": "Corp", "endorsementDate": "Mar 2024" }],
    "youTubeChannels": [{ "recordId": "enc_yt01", "caption": "System Design", "link": "https://youtube.com/..." }]
  },
  "meta": { "request_id": "a1b2c3d4e5f6" }
}

DATA TYPE REFERENCE

Records = { recordId, title, issuer, orgLogo, location, duration, shortDescription, orderOfDisplay, publicViewUrl, metaData[] }
metaData = { header: string, value: string }
UserSkill = { recordId, name, category, rating (1-10), bloomsRate }
LanguageSkill = { recordId, name, isReading, isWriting, isSpeaking, isListening }
PersonalAttribute = { recordId, name, category, rating (1-10) }
MachineAndTool = { recordId, name, category, rating (1-10) }
IndustryFocus = { recordId, name, category, percentage (0-100) }
SocialProfile = { recordId, platform, link }
recordListItem = { recordId, value }  ← used by: careerObjective, areaOfInterest, extraCurricularActivities
Recommendation = { recordId, reviewerName, relationshipType, rating, testimonial, completedOn, skills[], attributes[] }
InstitutionEndorsement = { recordId, title, organization, endorsementDate, orgLogo }
YouTubeChannel = { recordId, caption, link }
Simple pricing

Start small. Scale when it matters.

Choose an access level for personal projects, production apps, or organization-wide integrations.

Free
₹0 / forever

For trying the API and connecting a personal workflow.

  • 100 requests per day
  • 2 API keys
  • 5 core profile sections
  • REST and MCP access
Create free key
Enterprise
Custom

For platforms that need higher limits, integrity controls, and support.

  • Up to 500K requests per day
  • Unlimited API keys
  • HMAC response signing
  • Priority support
Contact sales

Plan availability and current limits are authoritative at /api/v1/career-subscription/tiers.

Code examples

Use the stack you already know.

Make one authenticated request and work with ordinary JSON. Switch languages to see a complete starting point.

const API_KEY = "gin_career_YOUR_KEY";
const GPIN = "IN18AAA010";

const response = await fetch(
  `https://genuinein.com/api/v1/profile/${GPIN}`,
  { headers: { "X-API-Key": API_KEY } }
);

if (!response.ok) {
  throw new Error(`API request failed: ${response.status}`);
}

const { data } = await response.json();
console.log(`${data.profile.name} — ${data.skills.length} skills`);