openapi: 3.0.3 info: title: UCSF Profiles JSON API version: '2' description: >- Public JSON API over UCSF Profiles, the research-networking platform operated by the UCSF Clinical and Translational Science Institute (CTSI). Returns the public record for a UCSF researcher, faculty member or postdoc — name, school, department, titles, ORCID iD, education and training, narrative, keywords, publications, clinical trials, and research activities and funding. GET requests return JSON with CORS support; JSONP is supported for legacy callers. This OpenAPI description is DERIVED by API Evangelist from UCSF's own developer documentation plus live probed responses; UCSF does not publish an OpenAPI document. contact: name: UCSF Profiles / UCSF CTSI url: https://profilesdeveloper.ucsf.edu/ x-operator: institution x-operator-evidence: >- servers[] host api.profiles.ucsf.edu is under the ucsf.edu registrable domain; the platform instance, its data and its developer documentation are operated by UCSF CTSI. The underlying Profiles RNS software is open source, but the running service is UCSF's. x-provenance: generated: '2026-08-19' method: derived source: - https://profilesdeveloper.ucsf.edu/json-api - https://api.profiles.ucsf.edu/json/v2/?source=apievangelist.com&ProfilesURLName=kirsten.bibbins-domingo servers: - url: https://api.profiles.ucsf.edu/json/v2 description: UCSF Profiles JSON API v2 tags: - name: Profiles description: Look up a UCSF person's public research profile. paths: /: get: tags: [ Profiles ] operationId: getProfile summary: Retrieve a UCSF Profiles record description: >- Returns the public UCSF Profiles record for one person. Exactly one identifier parameter must be supplied. `source` is required and must identify the calling application or host. Callers requesting many profiles are asked to wait at least one second between calls and to refresh any cached copy at least weekly. parameters: - name: source in: query required: true description: >- Identifies the calling application or host, e.g. `example.ucsf.edu` or `UCSF+Mobile+App+for+iOS`. Required on every request. schema: { type: string } - name: ProfilesURLName in: query description: 'Profiles URL slug — for profiles.ucsf.edu/alexandra.brown use `alexandra.brown`.' schema: { type: string } - name: EPPN in: query description: eduPerson Principal Name for the person. schema: { type: string } - name: URL in: query description: A full profiles.ucsf.edu URL, including a variety of legacy URL forms. schema: { type: string, format: uri } - name: EmployeeID in: query description: Nine-digit UCSF employee ID. Supported but strongly discouraged by UCSF — prefer EPPN. schema: { type: string } deprecated: true - name: ProfilesNodeID in: query description: Internal Profiles node ID used after Feb 2013. Deprecated; 2013–2018 IDs are mapped on a best-effort basis. schema: { type: string } deprecated: true - name: Person in: query description: Legacy Profiles Person ID used in URLs before Feb 2013. Deprecated. schema: { type: string } deprecated: true - name: FNO in: query description: Legacy FNO code. Deprecated — only FNOs issued before April 2018 are supported. schema: { type: string } deprecated: true - name: publications in: query description: Set to `full` to return complete publication records rather than a summary. schema: { type: string, enum: [ full ] } - name: callback in: query description: JSONP callback function name. When present the response is served as text/javascript. schema: { type: string } responses: '200': description: The person's public profile. content: application/json: schema: { $ref: '#/components/schemas/ProfilesResponse' } text/javascript: schema: { type: string, description: JSONP wrapper around the JSON body. } '400': description: Invalid request — no identifier type supplied, or an unrecognised parameter. content: application/json: schema: { $ref: '#/components/schemas/Error' } '404': description: No matching person. content: application/json: schema: { $ref: '#/components/schemas/Error' } components: schemas: ProfilesResponse: type: object properties: Profiles: type: array items: { $ref: '#/components/schemas/Profile' } api_notes: { type: string } Profile: type: object properties: Name: { type: string } FirstName: { type: string } LastName: { type: string } Title: { type: string } Titles: { type: array, items: { type: string } } School: { type: string } Department: { type: string } Address: { type: object, additionalProperties: true } Email: { type: string } PhotoURL: { type: string, format: uri } ProfilesURL: { type: string, format: uri } ORCID: type: string pattern: '^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$' description: ORCID iD for the researcher. example: 0000-0002-8962-0622 Narrative: { type: string } Keywords: { type: array, items: { type: string } } FreetextKeywords: { type: array, items: { type: string } } Education_Training: { type: array, items: { type: object, additionalProperties: true } } PublicationCount: { type: integer } Publications: { type: array, items: { type: object, additionalProperties: true } } ClinicalTrials: { type: array, items: { type: object, additionalProperties: true } } ResearchActivitiesAndFunding: { type: array, items: { type: object, additionalProperties: true } } AwardOrHonors: { type: array, items: { type: object, additionalProperties: true } } CollaborationInterests: { type: string } FacultyMentoring: { type: string } GlobalHealth: { type: object, additionalProperties: true } GlobalHealth_beta: { type: object, additionalProperties: true } NIHGrants_beta: type: array description: Deprecated by UCSF in favour of ResearchActivitiesAndFunding; fiscal year may be inaccurate. deprecated: true items: { type: object, additionalProperties: true } MediaLinks_beta: { type: array, items: { type: object, additionalProperties: true } } SlideShare_beta: { type: array, items: { type: object, additionalProperties: true } } Twitter_beta: { type: array, items: { type: object, additionalProperties: true } } Videos: { type: array, items: { type: object, additionalProperties: true } } WebLinks_beta: { type: array, items: { type: object, additionalProperties: true } } Error: type: object properties: error: { type: string, description: Human-readable error message. } example: error: >- You didn't specify an identifier type to look up! We were expecting to see one of the following: ?EPPN=... / ?EmployeeID=... / ?FNO=... / ?Person=... / ?ProfilesNodeID=... / ?ProfilesURLName=... / ?URL=...