Generate an API key
Open Settings → Career Data API, create a key, and store it securely. The raw key is shown once.
Connect verified education, experience, skills, and every dimension of a professional identity to AI assistants, resume builders, portfolios, ATS platforms, and your next idea.
{
"success": true,
"data": {
"profile": {
"name": "Alex Morgan",
"title": "Product Engineer",
"gpin": "IN18AAA010"
},
"skills": [
{ "name": "C#", "rating": 9 },
{ "name": "Azure", "rating": 8 }
]
}
}
The same authentication header works across the REST profile API and MCP tools.
Open Settings → Career Data API, create a key, and store it securely. The raw key is shown once.
Pass the key in the X-API-Key header and use a valid 10-character GPIN.
Receive structured, scope-filtered profile data with request, version, rate-limit, ETag, and freshness headers.
# 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
Everything you need to integrate reliably. Every response follows the same envelope structure.
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.
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
gin_career_[32 chars]
https://genuinein.com/api/v1
Every response (success or error) uses this exact shape. Parse success first, then read data or error accordingly.
{
"success": true,
"data": {
"profile": { ... },
"education": [ ... ],
"skills": [ ... ],
"experience": [ ... ]
},
"meta": {
"request_id": "a1b2c3d4e5f6"
}
}
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Daily limit reached.",
"status_code": 429,
"details": null
},
"meta": {
"request_id": "x9y8z7w6v5u4"
}
}
| HTTP | Code | Meaning | Action |
|---|---|---|---|
| 400 | VALIDATION_ERROR | Invalid GPIN format or section slug | Check GPIN is exactly 10 chars |
| 401 | UNAUTHORIZED | Missing or invalid API key | Verify X-API-Key header |
| 403 | FORBIDDEN | Key lacks scope for this data | Request additional permissions |
| 403 | TIER_UPGRADE_REQUIRED | Section requires Pro+ plan | Upgrade subscription tier |
| 404 | NOT_FOUND | GPIN doesn't exist or is hidden | Verify GPIN is correct |
| 404 | SECTION_NOT_FOUND | Section slug invalid or empty | Check /sections endpoint list |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests | Wait for X-RateLimit-Reset |
| 503 | SERVICE_UNAVAILABLE | Profile cache temporarily down | Retry after Retry-After seconds |
Every successful response includes these headers. Use them for caching, debugging, and rate-limit awareness.
| Header | Example | Purpose |
|---|---|---|
| X-RateLimit-Limit | 100 | Max requests per day for your tier |
| X-RateLimit-Remaining | 87 | Requests remaining today |
| X-RateLimit-Reset | 1719792000 | Unix timestamp when limit resets (00:00 UTC) |
| ETag | "a3f2b1c9" | Use with If-None-Match for conditional GET (304) |
| Last-Modified | Tue, 22 Jul 2025 10:30:00 GMT | When the profile was last updated |
| X-API-Version | v1 | API version serving this response |
| Cache-Control | private, max-age=60 | Safe to cache privately for 60s |
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.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.
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.
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.
No workflows match your search. Try a different keyword.
Request the full profile at /api/v1/profile/{gpin} or append any section slug below for a focused response.
Actual JSON from GET /api/v1/profile/{gpin}. Every section shape documented below.
{
"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" }
}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 }
Choose an access level for personal projects, production apps, or organization-wide integrations.
For trying the API and connecting a personal workflow.
For serious personal automation and live portfolio products.
For platforms that need higher limits, integrity controls, and support.
Plan availability and current limits are authoritative at /api/v1/career-subscription/tiers.
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`);
import requests
API_KEY = "gin_career_YOUR_KEY"
GPIN = "IN18AAA010"
BASE_URL = "https://genuinein.com/api/v1"
response = requests.get(
f"{BASE_URL}/profile/{GPIN}",
headers={"X-API-Key": API_KEY},
timeout=15,
)
response.raise_for_status()
data = response.json()["data"]
print(f"{data['profile']['name']} — {len(data['skills'])} skills")
using System.Net.Http.Json;
const string apiKey = "gin_career_YOUR_KEY";
const string gpin = "IN18AAA010";
using var client = new HttpClient
{
BaseAddress = new Uri("https://genuinein.com/api/v1/")
};
client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
using var response = await client.GetAsync($"profile/{gpin}");
response.EnsureSuccessStatusCode();
var profile = await response.Content.ReadFromJsonAsync<CareerProfileResponse>();