소싱한 프로필
팀이 찾아 저장한 후보자와 이미 확인한 연락처.
소싱한 프로필은 지원한 사람이 아니라 워크스페이스가 직접 찾아낸 후보자입니다. Tahoe 검색, X-ray 검색, 가져오기, GitHub 검색 등에서 찾은 프로필을 리크루터가 저장한 것입니다. 형태는 지원자와 비슷하지만 동의 근거가 다르며, 모든 행에 그 사실이 표시됩니다.
GET/sourced-profilessourced_profiles:read
워크스페이스의 소싱한 프로필을 최근 수정된 순서로 보여 줍니다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
origin | string | 프로필의 출처입니다. Tahoe 검색, X-ray 검색, 가져오기, GitHub 검색 등이 있습니다. 예: xray, import, github. |
has_contact_info | boolean | 연락처가 저장되어 있는(또는 없는) 프로필만 반환합니다. 가져올 것이 없는 행을 적은 비용으로 건너뛸 수 있습니다. |
q | string | 이름, 직함, 회사의 일부와 대소문자 구분 없이 일치하는 프로필을 찾습니다. |
updated_after | timestamp | 이 시점 이후 변경된 프로필만 반환합니다. 증분 동기화에 쓰세요. |
limit | integer | 기본값 25, 최대 100. |
cursor | string | 이전 페이지에서 받은 값입니다. 같은 필터를 함께 보내세요. |
curl "https://tahoe.workonward.com/api/partner/v1/sourced-profiles?origin=xray&has_contact_info=true" \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "list",
"data": [
{
"object": "sourced_profile",
"id": "cnd_8Fj3kLm2Qd7s",
"workspace_id": "wsp_4Kd8sPm2Qx7L",
"full_name": "Priya Raman",
"headline": "Field Operations Manager at Northwind Logistics",
"job_title": "Field Operations Manager",
"company_name": "Northwind Logistics",
"company_industry": null,
"company_website": null,
"company_linkedin_url": null,
"department": null,
"management_level": null,
"location_full": "Columbus, Ohio, United States",
"location_country": "United States",
"linkedin_url": "https://www.linkedin.com/in/priya-raman-9x8y7z",
"photo_url": null,
"summary": "Runs field crews and equipment for regional distribution sites ...",
"total_experience_months": null,
"connections_count": null,
"follower_count": null,
"match_score": 81,
"match_tier": "strong",
"created_at": "2026-08-19T07:41:02.115Z",
"updated_at": "2026-09-06T12:08:55.400Z",
"has_contact_info": true,
"has_resume": false,
"has_business_card": false,
"has_profile_photo": true,
"has_linkedin_capture": false,
"provenance": {
"origin": "sourced",
"acquisition": "xray_search",
"provider": "xray",
"owner_workspace_id": "wsp_4Kd8sPm2Qx7L",
"first_seen_at": "2026-08-19T07:41:02.115Z",
"last_seen_at": "2026-09-06T12:08:55.400Z",
"consent": {
"basis": "legitimate_interest_sourcing",
"candidate_facing_notice": false,
"unsubscribed": false,
"suppressed": false
},
"licence": {
"redistributable": false,
"note": "Collected from public professional sources. Not licensed for onward redistribution."
}
},
"links": {
"self": "/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s",
"contact_info": "/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/contact-info",
"attachments": "/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/attachments",
"list_memberships": "/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/list-memberships"
}
}
],
"has_more": true,
"next_cursor": "cur_eyJrIjoiMjAyNi0wOS0wNlQxMjowODo1NVoi..."
}프로필이 얼마나 채워져 있는지는 출처에 따라 다르므로, 어느 필드든 null일 수 있다고 생각하세요. provenance의 acquisition과 provider는 프로필을 찾은 방법을 알려 줍니다. 블록의 나머지 필드는 provenance 블록에서 설명합니다.
match_score와 match_tier는 이 사람을 찾은 검색에 대한 Tahoe의 평가이지, 일반적인 평점이 아닙니다. 그 검색 밖에서는 의미가 없으니 단독 점수처럼 보여 주지 마세요.
GET/sourced-profiles/{profile_handle}sourced_profiles:read
목록 행과 같은 형태의 프로필 하나입니다.
GET/sourced-profiles/{profile_handle}/contact-infocontact:read
이 워크스페이스가 Tahoe에서 이미 열람한 연락처만 반환합니다. 이 엔드포인트는 새로운 연락처를 열람하지 않으며 워크스페이스의 크레딧을 쓰지 않습니다. 전화번호를 읽으려면 contact:phone:read도 필요합니다. 없으면 저장된 전화번호가 restricted에 표시됩니다.
curl https://tahoe.workonward.com/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/contact-info \
-H "Authorization: Bearer $TAHOE_API_KEY"{
"object": "contact_info",
"subject": { "object": "sourced_profile", "id": "cnd_8Fj3kLm2Qd7s" },
"emails": [
{
"value": "[email protected]",
"kind": "work",
"status": "found",
"verified_at": "2026-09-06T12:08:55.400Z",
"source": {
"object": "sourced_profile",
"id": "cnd_8Fj3kLm2Qd7s",
"workspace_id": "wsp_4Kd8sPm2Qx7L"
},
"licence": { "redistributable": false }
}
],
"phones": [],
"unsubscribed": false,
"field_states": {
"work_email": "found",
"personal_email": "not_found",
"phone": "not_found"
}
}field_states는 회사 이메일, 개인 이메일, 전화번호의 상태를 알려 줍니다. 워크스페이스가 열람한 적이 없거나, 열람했지만 아무것도 찾지 못한 필드는 값이 아니라 not_found로 표시됩니다. 이 예시에서는 phones가 비어 있고 restricted에 아무것도 없으므로, Tahoe에 이 사람의 전화번호가 없다는 뜻입니다. 전화번호가 저장되어 있는데 키에 전화 스코프가 없었다면 phones가 restricted에 표시되었을 것입니다.
반환되는 값마다 일일 개인 데이터 한도에서 1건이 차감되고, 키, 레코드, 필드와 함께 감사 로그에 기록됩니다. 동기화할 때 모든 프로필의 연락처를 가져오지 말고, 누군가 실제로 쓰려고 할 때 가져오세요.
GET/sourced-profiles/{profile_handle}/attachmentsattachments:read
이 프로필에 저장된 파일입니다. resume, business_card, profile_photo 가운데 있는 것을 반환합니다. 파일마다 필요한 스코프가 따로 있으며 required_scope에 표시됩니다. 키로 읽을 수 없는 파일도 readable: false와 함께 목록에 나오므로, 파일이 있다는 것은 알 수 있습니다.
| 파일 | 다운로드에 필요한 스코프 |
|---|---|
profile_photo | attachments:read |
resume | resume:download |
business_card | contact:read(명함은 연락처가 담긴 이미지이기 때문입니다) |
{
"object": "list",
"data": [
{
"object": "attachment",
"type": "resume",
"filename": "priya-raman.pdf",
"mime": "application/pdf",
"bytes": 210444,
"uploaded_at": "2026-08-21T10:02:19.301000",
"required_scope": "resume:download",
"readable": false
},
{
"object": "attachment",
"type": "profile_photo",
"filename": "priya-raman.jpg",
"mime": "image/jpeg",
"bytes": 48120,
"uploaded_at": "2026-08-19T07:41:04.882000",
"required_scope": "attachments:read",
"readable": true,
"links": {
"content": "/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/attachments/profile_photo/content"
}
}
],
"has_more": false,
"next_cursor": null
}links.content는 readable이 true일 때만 나타납니다. 그래서 링크를 따라가는 클라이언트는 허용되지 않은 요청을 보내지 않습니다. 다른 타임스탬프와 달리 첨부 파일의 uploaded_at에는 시간대 접미사가 없습니다. UTC로 읽으세요.
GET/sourced-profiles/{profile_handle}/attachments/{kind}/contentattachments:read
파일 하나를 내려받습니다. kind는 profile_photo, resume, business_card 중 하나입니다. 응답은 JSON이 아니라 파일 자체입니다. 키에는 위 표에 있는 그 파일의 스코프도 필요합니다. 다운로드는 download 속도 제한 등급(분당 30건)에 속하며, 그때마다 일일 개인 데이터 한도에서 1건이 차감되고 감사 로그에 기록됩니다.
curl https://tahoe.workonward.com/api/partner/v1/sourced-profiles/cnd_8Fj3kLm2Qd7s/attachments/profile_photo/content \
-H "Authorization: Bearer $TAHOE_API_KEY" \
-o priya-raman.jpgGET/sourced-profiles/{profile_handle}/list-membershipslists:read
이 프로필이 워크스페이스의 어느 후보자 리스트에 들어 있는지, 리스트마다 어느 단계에 있는지 보여 줍니다. 지원서의 파이프라인 단계에 해당하는 소싱 쪽 정보입니다. 프로젝트와 리스트를 참고하세요.
{
"object": "list",
"data": [
{
"object": "list_membership",
"id": "mem_9Xj4kQd7Rm2s",
"list_id": "lst_3Rp8vKd2mXq4",
"sourced_profile_id": "cnd_8Fj3kLm2Qd7s",
"stage": "contacted",
"stage_updated_at": "2026-09-04T08:12:44.201Z",
"added_at": "2026-08-19T07:41:02.115Z"
}
],
"has_more": false,
"next_cursor": null
}관련 이벤트
sourced_profile.created, sourced_profile.updated, sourced_profile.deleted는 sourced_profiles:read가 필요합니다. sourced_profile.contact_info_revealed는 contact:read가, sourced_profile.attachment_added는 attachments:read가 필요합니다. 변경 피드를 참고하세요.
열람 이벤트에는 값이 담기지 않고, 새 연락처가 생겼다는 사실만 담깁니다. 그래도 연락처 스코프가 필요합니다. 특정인의 전화번호가 방금 열람되었다는 사실만으로도 가치 있는 정보이기 때문입니다.