Context.dev People API
The People API from Context.dev — 1 operation(s) for people.
The People API from Context.dev — 1 operation(s) for people.
openapi: 3.1.0
info:
title: Context Brand Intelligence People API
description: API for retrieving context data from any website
version: 1.0.0
servers:
- url: https://api.context.dev/v1
tags:
- name: People
paths:
/people/retrieve:
post:
x-hidden: true
summary: Retrieve Person
description: Retrieve and normalize a person profile from identifiers.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PersonRetrieveRequest'
example:
identifiers:
linkedinUrl: https://www.linkedin.com/in/yahia-bakour/
security:
- bearerAuth: []
tags:
- People
x-mint:
content: <Badge color="blue">50 Credits</Badge> <Badge color="purple">Private Alpha</Badge>
title: Retrieve Person
sidebarTitle: Retrieve person
description: Normalize a person profile from LinkedIn and personal website sources.
responses:
'200':
description: Person retrieval succeeded.
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/PersonRetrieveResponse'
'400':
description: Bad request - Invalid identifiers
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized - Invalid or missing API key
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden - Insufficient permissions or usage limit exceeded
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'408':
description: Request timeout
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/RateLimited'
'500':
description: Internal server error
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'502':
description: External provider error
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
PersonDateRange:
type: object
properties:
startDate:
allOf:
- $ref: '#/components/schemas/PersonDate'
description: Start date, when known.
endDate:
allOf:
- $ref: '#/components/schemas/PersonDate'
description: End date, when known.
isCurrent:
type: boolean
description: Whether the entry is current.
additionalProperties: false
PersonEducation:
type: object
properties:
institution:
allOf:
- $ref: '#/components/schemas/PersonNormalizedName'
description: School or institution name.
qualification:
type: string
description: Degree, certificate, or credential.
fieldOfStudy:
type: string
description: Area of study.
description:
type: string
description: Additional education details.
dates:
allOf:
- $ref: '#/components/schemas/PersonDateRange'
description: Education dates.
additionalProperties: false
required:
- institution
KeyMetadata:
type: object
properties:
credits_consumed:
type: integer
description: The number of credits consumed by this request.
credits_remaining:
type: integer
description: The number of credits remaining for your organization after this request.
required:
- credits_consumed
- credits_remaining
description: Metadata about the API key used for the request. Included in every response whenever a valid API key is provided, even when the response status is not 200.
PersonRetrieveResponse:
type: object
properties:
status:
type: string
enum:
- ok
description: Response status.
code:
type: integer
enum:
- 200
description: HTTP status code.
person:
allOf:
- $ref: '#/components/schemas/Person'
description: Retrieved person profile.
metadata:
type: object
properties:
identifiers:
type: object
properties:
linkedinUrl:
type: string
format: uri
description: LinkedIn profile URL.
additionalProperties: false
description: Identifiers returned for the person.
personalWebsiteUrl:
type: string
format: uri
description: Personal website URL, when found.
urlsAnalyzed:
type: array
items:
type: string
format: uri
description: URLs reviewed for this profile.
sourcesAttempted:
type: array
items:
type: string
enum:
- linkedin
- cv
- manual
- github
- other
description: Source categories checked.
sourcesSucceeded:
type: array
items:
type: string
enum:
- linkedin
- cv
- manual
- github
- other
description: Source categories with data.
required:
- identifiers
- urlsAnalyzed
- sourcesAttempted
- sourcesSucceeded
additionalProperties: false
description: Additional response details.
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
required:
- status
- code
- person
- metadata
additionalProperties: false
PersonSkill:
type: object
properties:
name:
type: string
description: Skill name.
normalized:
type: string
description: Standardized skill name, when available.
proficiency:
type: string
description: Skill proficiency, when available.
required:
- name
additionalProperties: false
PersonNormalizedName:
type: object
properties:
display:
type: string
description: Display name.
normalized:
type: string
description: Standardized name, when available.
required:
- display
additionalProperties: false
PersonProfile:
type: object
properties:
fullName:
type: string
description: Person's full name.
headline:
type: string
description: Short professional headline.
location:
type: string
description: Person's listed location.
summary:
type: string
description: Brief profile summary.
profilePictureUrl:
type: string
format: uri
description: Profile image URL.
additionalProperties: false
PersonExperience:
type: object
properties:
company:
allOf:
- $ref: '#/components/schemas/PersonNormalizedName'
description: Company or organization name.
title:
type: string
description: Role or job title.
description:
type: string
description: Role description.
dates:
allOf:
- $ref: '#/components/schemas/PersonDateRange'
description: Role dates.
required:
- company
- title
additionalProperties: false
PersonDate:
type: object
properties:
year:
type: integer
description: Year value.
month:
type: integer
minimum: 1
maximum: 12
description: Month value, when known.
day:
type: integer
minimum: 1
maximum: 31
description: Day value, when known.
required:
- year
additionalProperties: false
ErrorResponse:
type: object
properties:
message:
type: string
description: Error message
error_code:
type: string
enum:
- INTERNAL_ERROR
- VALID
- NOT_FOUND
- FORBIDDEN
- USAGE_EXCEEDED
- RATE_LIMITED
- UNAUTHORIZED
- DISABLED
- INSUFFICIENT_PERMISSIONS
- TIMEOUT_EXCEEDS_MAXIMUM
- WEBSITE_ACCESS_ERROR
- EXTERNAL_PROVIDER_ERROR
- INPUT_VALIDATION_ERROR
- FREE_EMAIL_DETECTED
- DISPOSABLE_EMAIL_DETECTED
- REQUEST_TIMEOUT
- UNSUPPORTED_CONTENT
- MONITOR_PAUSED
- MONITOR_LIMIT_EXCEEDED
- SEARCH_UNAVAILABLE
description: Error code indicating the type of error
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
PersonRetrieveRequest:
type: object
properties:
identifiers:
type: object
properties:
linkedinUrl:
type: string
format: uri
description: LinkedIn profile URL, e.g. https://www.linkedin.com/in/yahia-bakour/.
additionalProperties: false
description: Known identifiers for the person. At least one identifier is required.
timeoutMS:
$ref: '#/components/schemas/TimeoutMS'
tags:
$ref: '#/components/schemas/RequestTags'
required:
- identifiers
additionalProperties: false
TimeoutMS:
type: integer
minimum: 1000
maximum: 300000
description: Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes).
Person:
type: object
properties:
profile:
allOf:
- $ref: '#/components/schemas/PersonProfile'
description: Core profile details.
education:
type: array
items:
$ref: '#/components/schemas/PersonEducation'
description: Education history.
experience:
type: array
items:
$ref: '#/components/schemas/PersonExperience'
description: Work history.
skills:
type: array
items:
$ref: '#/components/schemas/PersonSkill'
description: Listed skills.
required:
- profile
- education
- experience
- skills
additionalProperties: false
RequestTags:
type: array
items:
type: string
minLength: 1
maxLength: 50
maxItems: 20
description: Optional caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters.
example:
- production
- team-alpha
headers:
RateLimitRemaining:
description: Requests remaining in the current fixed one-minute window. Returned when the authenticated API key has a per-minute rate limit.
schema:
type: integer
minimum: 0
RateLimitReset:
description: Unix timestamp in seconds when the current rate-limit window resets. Returned when the authenticated API key has a per-minute rate limit.
schema:
type: integer
RateLimitLimit:
description: Maximum requests allowed in the current fixed one-minute window. Returned when the authenticated API key has a per-minute rate limit.
schema:
type: integer
minimum: 1
responses:
RateLimited:
description: Rate limit exceeded
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
X-RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
X-RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Retry-After:
description: Seconds until the per-minute rate limit window resets
schema:
type: integer
minimum: 1
maximum: 60
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message
error_code:
type: string
enum:
- RATE_LIMITED
description: Error code indicating the rate limit was exceeded
key_metadata:
$ref: '#/components/schemas/KeyMetadata'
required:
- message
- error_code
securitySchemes:
bearerAuth:
type: http
scheme: bearer