Speer Partner API — Introduction
The Speer Partner API is a read-only GraphQL API: every operation below is a query, sent as an HTTP POST to the GraphQL endpoint of your stage. Only the documented queries are available. All data is scoped to your organization — a credential can never read another tenant's data.
Getting your accessKeyId and secretKey
Credentials are issued per organization by your Speer administrator:
- An org admin (with the Integrations: Manage permission) opens the Speer app and runs
generateOrganizationApiKeyfrom Settings → Integrations → API Access, giving the key a name (e.g. your application's name). - The response contains the
accessKeyId(starts withspr_live_orspr_test_) and thesecretKey. - The secretKey is shown exactly once. Store it in a secret manager immediately — Speer keeps only a hash and cannot recover it. If it is lost, revoke the key and generate a new one.
401 as a signal to stop and alert, not retry.Using the credentials
Send both values in the Authorization header of every request, joined by a dot:
Authorization: Bearer <accessKeyId>.<secretKey> Content-Type: application/json
Endpoints
| Stage | GraphQL endpoint |
|---|---|
| Development | https://sresomev5bgb5fgcixwm2ht5qe.appsync-api.us-east-1.amazonaws.com/graphql |
| Production (not yet released) | https://api.speerhealth.ai/graphql — provided at production release |
Use the stage selector in the top bar — every code sample on this page updates to the selected stage.
Error responses
| HTTP | Meaning | Body |
|---|---|---|
401 | Invalid, disabled, or revoked credentials — or a request outside the documented queries. | {"errors":[{"errorType":"UnauthorizedException","message":"You are not authorized to make this call."}]} |
200 + errors | Authenticated, but the credential lacks permission for this field. | {"data":{"<field>":null},"errors":[{"errorType":"Unauthorized","message":"You do not have permission to perform this action."}]} |
Both shapes are also available on every operation below via the response tabs.
ai-job-status
POSTgetAiJobStatusai-job-status
Returns AiJobStatusSnapshot
| Argument | Type |
|---|---|
topic | String! |
jobId | ID! |
query GetAiJobStatus($topic: String!, $jobId: ID!) {
getAiJobStatus(topic: $topic, jobId: $jobId) { topic jobId orgId status progressPercent payload error updatedAt }
}
{
"topic": "",
"jobId": ""
}
api-access
Third-Party API Access Per-org accessKey/secretKey credentials for read-only third-party GraphQL access. The secretKey is returned exactly once (GeneratedOrganizationApiKey) and is never queryable afterwards — the OrganizationApiKey type deliberately has no secret field.
POSTorganizationApiKeysapi-access
Returns [OrganizationApiKey!]!
No arguments.
query OrganizationApiKeys {
organizationApiKeys { id name accessKeyId enabled lastUsedAt createdBy revokedAt revokedBy createdAt updatedAt }
}
{}
conference-intelligence
POSTconferenceIntelligenceCatalogconference-intelligence
Returns ConferenceConnection!
| Argument | Type |
|---|---|
filter | ConferenceCatalogFilter |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
search | String |
dateFrom | AWSDateTime |
dateTo | AWSDateTime |
therapeuticArea | String |
hostOrg | String |
country | String |
licensedOnly | Boolean |
status | ConferenceStatus |
UPCOMING LIVE PAST
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query ConferenceIntelligenceCatalog($filter: ConferenceCatalogFilter, $pagination: CursorPaginationInput) {
conferenceIntelligenceCatalog(filter: $filter, pagination: $pagination) { items { meetingId isLicensed status licensedAt expiresAt } total nextCursor }
}
{
"filter": {},
"pagination": {}
}
POSTconferenceIntelligenceDetailconference-intelligence
Returns ConferenceDetail!
| Argument | Type |
|---|---|
conferenceId | ID! |
query ConferenceIntelligenceDetail($conferenceId: ID!) {
conferenceIntelligenceDetail(conferenceId: $conferenceId) { meetingId meeting { id sourceKey externalId name shortName abbreviation meetingType associationName tagline status startAt endAt timezone venue city state country websiteUrl lastScrapedAt sessionCount presenterCount hcpMatchCount isBookmarked } isLicensed gated status licensedAt expiresAt sessionCount presenterCount hcpMatchCount aiSummary { meetingId status content webSources errorMessage generatedAt updatedAt } }
}
{
"conferenceId": ""
}
POSTconferenceScrapeRequestsconference-intelligence
Returns [ConferenceScrapeRequest!]!
| Argument | Type |
|---|---|
filter | ConferenceScrapeRequestFilter |
| Field | Type |
|---|---|
status | ConferenceScrapeRequestStatus |
orgId | ID |
REQUESTED IN_PROGRESS COMPLETED DECLINED
query ConferenceScrapeRequests($filter: ConferenceScrapeRequestFilter) {
conferenceScrapeRequests(filter: $filter) { id orgId requestedById requestedBy { id firstName lastName } conferenceName conferenceWebsite conferenceDate notes status resolvedMeetingId resolvedMeeting { id sourceKey externalId name shortName abbreviation meetingType associationName tagline status startAt endAt timezone venue city state country websiteUrl lastScrapedAt sessionCount presenterCount hcpMatchCount isBookmarked } lastUpdatedById lastUpdatedBy { id firstName lastName } lastUpdatedAt createdAt updatedAt }
}
{
"filter": {}
}
POSThcpSpeakingAtConferencesconference-intelligence
Returns [HcpSpeakingAtConference!]!
| Argument | Type |
|---|---|
orgHcpId | ID! |
filter | HcpSpeakingAtConferenceFilter |
| Field | Type |
|---|---|
dateFrom | AWSDateTime |
dateTo | AWSDateTime |
licensedOnly | Boolean |
query HcpSpeakingAtConferences($orgHcpId: ID!, $filter: HcpSpeakingAtConferenceFilter) {
hcpSpeakingAtConferences(orgHcpId: $orgHcpId, filter: $filter) { id meetingId meetingName meetingShortName meetingAbbreviation meetingStartAt meetingEndAt meetingCity meetingCountry sessionId sessionTitle sessionType sessionTrack sessionStartAt sessionEndAt role affiliation isLicensed matchConfidence isVerified }
}
{
"orgHcpId": "",
"filter": {}
}
POSTlicensedOrgConferencesconference-intelligence
Returns OrgConferenceConnection!
| Argument | Type |
|---|---|
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query LicensedOrgConferences($pagination: CursorPaginationInput) {
licensedOrgConferences(pagination: $pagination) { items { id meetingId source grantedById expiresAt notes createdAt } total nextCursor }
}
{
"pagination": {}
}
contacts
A SEPARATE org-scoped entity from OrganizationHCP — contacts never appear in HCP views or metrics. Optionally links to an OrganizationHCP when the person is also a tracked HCP.
POSTorgContactcontacts
Returns OrgContact
| Argument | Type |
|---|---|
id | ID! |
query OrgContact($id: ID!) {
orgContact(id: $id) { id orgId firstName lastName fullName email phone title contactType institution department npi orgHcpId orgHcp { id name npi } hcoId hco { id name npi } sourceType sourceRecordId createdAt updatedAt }
}
{
"id": ""
}
POSTorgContactscontacts
Returns OrgContactListResult!
| Argument | Type |
|---|---|
filter | OrgContactFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
search | String |
contactType | String |
institution | String |
linkedToHcp | Boolean |
hcoId | ID |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OrgContacts($filter: OrgContactFilter, $pagination: PaginationInput) {
orgContacts(filter: $filter, pagination: $pagination) { items { id orgId firstName lastName fullName email phone title contactType institution department npi orgHcpId hcoId sourceType sourceRecordId createdAt updatedAt } total }
}
{
"filter": {},
"pagination": {}
}
core
POSTalignmentByHCPcore
Returns AlignmentResult!
| Argument | Type |
|---|---|
orgHcpId | ID! |
limit | Int |
offset | Int |
query AlignmentByHCP($orgHcpId: ID!, $limit: Int, $offset: Int) {
alignmentByHCP(orgHcpId: $orgHcpId, limit: $limit, offset: $offset) { items { id orgId orgHcpId statementId alignment confidenceScore confidenceLabel assessedAt alignmentData createdAt } total }
}
{
"orgHcpId": "",
"limit": 0,
"offset": 0
}
POSTalignmentByStatementcore
Returns AlignmentByStatementResult!
| Argument | Type |
|---|---|
statementId | ID! |
query AlignmentByStatement($statementId: ID!) {
alignmentByStatement(statementId: $statementId) { statementId total aligned neutral misaligned alignedPct neutralPct misalignedPct }
}
{
"statementId": ""
}
POSTalignmentHistorycore
Returns AlignmentResult!
| Argument | Type |
|---|---|
orgHcpId | ID! |
limit | Int |
offset | Int |
query AlignmentHistory($orgHcpId: ID!, $limit: Int, $offset: Int) {
alignmentHistory(orgHcpId: $orgHcpId, limit: $limit, offset: $offset) { items { id orgId orgHcpId statementId alignment confidenceScore confidenceLabel assessedAt alignmentData createdAt } total }
}
{
"orgHcpId": "",
"limit": 0,
"offset": 0
}
POSTalignmentScoreTrendcore
Returns AlignmentScoreTrendResult!
| Argument | Type |
|---|---|
startDate | AWSDate |
endDate | AWSDate |
query AlignmentScoreTrend($startDate: AWSDate, $endDate: AWSDate) {
alignmentScoreTrend(startDate: $startDate, endDate: $endDate) { points { snapshotDate alignmentScore statementCount assessedCount } }
}
{
"startDate": "2026-01-01",
"endDate": "2026-01-01"
}
POSTanalyzeSentimentcore
Returns SentimentResult!
| Argument | Type |
|---|---|
text | String! |
query AnalyzeSentiment($text: String!) {
analyzeSentiment(text: $text) { sentiment confidence adverseEventDetected adverseEventConfidence adverseEventType adverseEventDetail severityGrade }
}
{
"text": ""
}
POSTcategoriescore
Returns CategoryListResult!
| Argument | Type |
|---|---|
filter | CategoryFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Categories($filter: CategoryFilter, $pagination: PaginationInput) {
categories(filter: $filter, pagination: $pagination) { items { id orgId name createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTcategorycore
Returns Category
| Argument | Type |
|---|---|
id | ID! |
query Category($id: ID!) {
category(id: $id) { id orgId name createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTclinicalTrialcore
Returns ClinicalTrial
| Argument | Type |
|---|---|
nctId | String! |
query ClinicalTrial($nctId: String!) {
clinicalTrial(nctId: $nctId) { id nctId title status overallStatus phase studyType sponsor responsibleParty lastUpdatePosted briefSummary detailedDescription startDate completionDate primaryCompletionDate enrollmentCount enrollmentType hasResults studyDetails rawJson conditions { id name } interventions { id type name description } locations { id facility city state country status } investigators { id npi role isPrimary } createdAt updatedAt }
}
{
"nctId": ""
}
POSTclinicalTrialscore
Returns ClinicalTrialListResult!
| Argument | Type |
|---|---|
npi | String! |
limit | Int |
offset | Int |
overallStatus | String |
phase | String |
studyType | String |
hasResults | Boolean |
sponsor | String |
condition | String |
intervention | String |
country | String |
sortBy | String |
sortOrder | String |
query ClinicalTrials($npi: String!, $limit: Int, $offset: Int, $overallStatus: String, $phase: String, $studyType: String, $hasResults: Boolean, $sponsor: String, $condition: String, $intervention: String, $country: String, $sortBy: String, $sortOrder: String) {
clinicalTrials(npi: $npi, limit: $limit, offset: $offset, overallStatus: $overallStatus, phase: $phase, studyType: $studyType, hasResults: $hasResults, sponsor: $sponsor, condition: $condition, intervention: $intervention, country: $country, sortBy: $sortBy, sortOrder: $sortOrder) { items { id nctId title status overallStatus phase studyType sponsor responsibleParty lastUpdatePosted briefSummary detailedDescription startDate completionDate primaryCompletionDate enrollmentCount enrollmentType hasResults studyDetails rawJson createdAt updatedAt } totalCount limit offset }
}
{
"npi": "",
"limit": 0,
"offset": 0,
"overallStatus": "",
"phase": "",
"studyType": "",
"hasResults": false,
"sponsor": "",
"condition": "",
"intervention": "",
"country": "",
"sortBy": "",
"sortOrder": ""
}
POSTconferenceAttendeecore
Returns ConferenceAttendee
| Argument | Type |
|---|---|
id | ID! |
query ConferenceAttendee($id: ID!) {
conferenceAttendee(id: $id) { id orgId meetingId firstName middleName lastName fullName npi email phone title specialty institution affiliation city state country organizationHcpId organizationHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } contactId matchScore matchMethod role assignee { id firstName lastName } importJobId createdAt updatedAt }
}
{
"id": ""
}
POSTconversationcore
Returns Conversation
| Argument | Type |
|---|---|
id | ID! |
query Conversation($id: ID!) {
conversation(id: $id) { id orgId userId title createdAt updatedAt deletedAt user { id firstName lastName } messages { id conversationId role content sources tokenUsage createdAt } lastMessage { id conversationId role content sources tokenUsage createdAt } messageCount }
}
{
"id": ""
}
POSTconversationscore
Returns ConversationListResult!
| Argument | Type |
|---|---|
filter | ConversationFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
userId | ID |
search | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Conversations($filter: ConversationFilter, $pagination: PaginationInput) {
conversations(filter: $filter, pagination: $pagination) { total limit offset remaining items { id orgId userId title createdAt updatedAt deletedAt messageCount } }
}
{
"filter": {},
"pagination": {}
}
POSTemergingSignalscore
Returns EmergingSignalsPayload!
No arguments.
query EmergingSignals {
emergingSignals { signals { id title description suggestedGroupName signalType direction confidence insightIds insightCount hcpCount hcpIds products categories firstSeenAt lastSeenAt rationale } generatedAt insightsAnalyzed currentInsightCount insightCountDelta clustersFormed stale }
}
{}
POSTengagementscore
Returns EngagementTimelineResponse!
| Argument | Type |
|---|---|
input | EngagementsInput! |
| Field | Type |
|---|---|
organizationHcpId | ID! |
from | AWSDateTime |
to | AWSDateTime |
includeDeleted | Boolean |
insightStatus | String |
interactionStatus | String |
insightsLimit | Int |
insightsOffset | Int |
interactionsLimit | Int |
interactionsOffset | Int |
timelineLimit | Int |
timelineOffset | Int |
emailsLimit | Int |
emailsOffset | Int |
query Engagements($input: EngagementsInput!) {
engagements(input: $input) { orgHcpId timeline { __typename } counts { insights interactions total emails } }
}
{
"input": {
"organizationHcpId": ""
}
}
POSTexpandConferenceSignalNodecore
Returns AWSJSON
| Argument | Type |
|---|---|
reportId | ID! |
nodeId | ID! |
query ExpandConferenceSignalNode($reportId: ID!, $nodeId: ID!) {
expandConferenceSignalNode(reportId: $reportId, nodeId: $nodeId)
}
{
"reportId": "",
"nodeId": ""
}
POSTexpandDrugSignalNodecore
Returns AWSJSON
| Argument | Type |
|---|---|
reportId | ID! |
nodeId | ID! |
query ExpandDrugSignalNode($reportId: ID!, $nodeId: ID!) {
expandDrugSignalNode(reportId: $reportId, nodeId: $nodeId)
}
{
"reportId": "",
"nodeId": ""
}
POSTfdaApprovedDrugcore
Returns FDAApprovedDrug
| Argument | Type |
|---|---|
id | ID! |
query FdaApprovedDrug($id: ID!) {
fdaApprovedDrug(id: $id) { id name createdAt updatedAt }
}
{
"id": ""
}
POSTfdaApprovedDrugscore
Returns FDAApprovedDrugListResult!
| Argument | Type |
|---|---|
filter | FDAApprovedDrugFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
search | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query FdaApprovedDrugs($filter: FDAApprovedDrugFilter, $pagination: PaginationInput) {
fdaApprovedDrugs(filter: $filter, pagination: $pagination) { items { id name createdAt updatedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTfdaProductcore
Returns FDAProduct
| Argument | Type |
|---|---|
id | ID! |
query FdaProduct($id: ID!) {
fdaProduct(id: $id) { id productType name normalizedName regulatoryLabel sourceSystem sourcePrimaryId currentStatus firstSeenAt lastSeenAt lastSourceUpdateAt deviceSubmissions { id fdaProductId submissionType submissionNumber decisionDate decisionCode advisoryCommittee productCode regulationNumber deviceClass applicant predicateDevice openfdaJson createdAt updatedAt } drugApplications { id fdaProductId applicationNumber applicationType sponsorName productNumber dosageForm route strength approvalDate marketingStatus openfdaJson createdAt updatedAt } createdAt updatedAt }
}
{
"id": ""
}
POSTfdaProductscore
Returns FDAProductListResult!
| Argument | Type |
|---|---|
filter | FDAProductFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
productType | FDAProductType |
regulatoryLabel | FDARegulatoryLabel |
sourceSystem | FDASourceSystem |
search | String |
dateFrom | AWSDateTime |
dateTo | AWSDateTime |
drug device
pre_market_510k fda_approved
openfda_510k openfda_pma drugsfda
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query FdaProducts($filter: FDAProductFilter, $pagination: PaginationInput) {
fdaProducts(filter: $filter, pagination: $pagination) { items { id productType name normalizedName regulatoryLabel sourceSystem sourcePrimaryId currentStatus firstSeenAt lastSeenAt lastSourceUpdateAt createdAt updatedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTgenerateSyntheticHcpNpicore
Returns String!
No arguments.
query GenerateSyntheticHcpNpi {
generateSyntheticHcpNpi
}
{}
POSTgetConferenceAttendeeImportHeaderscore
Returns ConferenceAttendeeImportHeaders!
| Argument | Type |
|---|---|
importJobId | ID! |
query GetConferenceAttendeeImportHeaders($importJobId: ID!) {
getConferenceAttendeeImportHeaders(importJobId: $importJobId) { headers sampleRows totalRows targetFields }
}
{
"importJobId": ""
}
POSTgetConferenceAttendeeImportJobcore
Returns ConferenceAttendeeImportJob
| Argument | Type |
|---|---|
id | ID! |
query GetConferenceAttendeeImportJob($id: ID!) {
getConferenceAttendeeImportJob(id: $id) { id orgId meetingId uploadedById originalFileName s3Key fileType status detectedHeaders sampleRows headerMapping totalRows importedRows failedRows reviewRows errorSummary startedAt completedAt createdAt updatedAt }
}
{
"id": ""
}
POSTgetConferenceAttendeeImportTemplateUrlcore
Returns ConferenceAttendeeImportTemplateUrl!
No arguments.
query GetConferenceAttendeeImportTemplateUrl {
getConferenceAttendeeImportTemplateUrl { url fileName expiresInSeconds }
}
{}
POSTgetConferenceExportJobcore
Returns ConferenceExportJob
| Argument | Type |
|---|---|
id | ID! |
query GetConferenceExportJob($id: ID!) {
getConferenceExportJob(id: $id) { id orgId meetingId requestedById format status totalRows processedRows progressPercent attendeeCount sessionCount speakerCount fileName downloadUrl downloadExpiresInSeconds errorSummary startedAt completedAt createdAt updatedAt }
}
{
"id": ""
}
POSTgetConferenceSignalsReportcore
Returns ConferenceSignalsReport
| Argument | Type |
|---|---|
id | ID! |
query GetConferenceSignalsReport($id: ID!) {
getConferenceSignalsReport(id: $id) { id orgId userId planId scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
{
"id": ""
}
POSTgetDrugSignalsReportcore
Returns DrugSignalsReport
| Argument | Type |
|---|---|
id | ID! |
query GetDrugSignalsReport($id: ID!) {
getDrugSignalsReport(id: $id) { id orgId userId drugName scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
{
"id": ""
}
POSTgetHcpCaptureMatchResultcore
Returns MatchHcpCapturePayload
| Argument | Type |
|---|---|
id | ID! |
query GetHcpCaptureMatchResult($id: ID!) {
getHcpCaptureMatchResult(id: $id) { id orgId status fileType s3Key extracted { firstName middleName lastName fullName title affiliation organization email phone address city state country confidence rawText } candidates { publicHcpId npi name firstName lastName city state orgName specialties score matchReasons } errorMessage createdAt updatedAt }
}
{
"id": ""
}
POSTgetInteractionFormDefinitioncore
Returns InteractionTemplate!
| Argument | Type |
|---|---|
templateId | ID! |
query GetInteractionFormDefinition($templateId: ID!) {
getInteractionFormDefinition(templateId: $templateId) { id orgId name description status key fieldConfig createdAt updatedAt deletedAt fields { id orgId templateId name label type required sortOrder config active createdAt updatedAt deletedAt } }
}
{
"templateId": ""
}
POSTgetMeetingAiSummarycore
Returns MeetingAiSummary
| Argument | Type |
|---|---|
meetingId | ID! |
query GetMeetingAiSummary($meetingId: ID!) {
getMeetingAiSummary(meetingId: $meetingId) { meetingId status content webSources errorMessage generatedAt updatedAt }
}
{
"meetingId": ""
}
POSTgetSalesforceAssumptionscore
Returns SalesforceAssumptionsConfig
No arguments.
query GetSalesforceAssumptions {
getSalesforceAssumptions { hcpSourceType ownerMappingMode mslOwnerField phoneEmailPriority addressSource npiRequired customAddressFields }
}
{}
POSTgetSalesforceConfigcore
Returns SalesforceOAuthConfig
No arguments.
query GetSalesforceConfig {
getSalesforceConfig { clientId clientSecret redirectUri loginUrl }
}
{}
POSTgetSalesforceImportConfigcore
Returns SalesforceImportConfig
No arguments.
query GetSalesforceImportConfig {
getSalesforceImportConfig { hcpSourceObject hcoSourceObject hcpEnabled hcoEnabled importFilters }
}
{}
POSTgetSalesforceMappingscore
Returns SalesforceFieldMappingsConfig
No arguments.
query GetSalesforceMappings {
getSalesforceMappings { hcpMappings { canonicalField salesforceField transform defaultValue required } hcoMappings { canonicalField salesforceField transform defaultValue required } }
}
{}
POSThcpcore
Returns HCP
| Argument | Type |
|---|---|
id | ID! |
query Hcp($id: ID!) {
hcp(id: $id) { id orgId name specialty institution region email createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSThcpInteractioncore
Returns HCPInteraction
| Argument | Type |
|---|---|
id | ID! |
query HcpInteraction($id: ID!) {
hcpInteraction(id: $id) { id orgId organizationHcpIds date type status submittedAt submittedBy submitter { id firstName lastName } deletedBy deleter { id firstName lastName } templateId template { id orgId name description status key fieldConfig createdAt updatedAt deletedAt } interactionData fieldValues { id interactionId fieldId value createdAt updatedAt deletedAt } tags { id orgId name color active createdAt updatedAt deletedAt } configuredFieldValues createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSThcpInteractionscore
Returns HcpInteractionListResult!
| Argument | Type |
|---|---|
filter | HcpInteractionFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
organizationHcpId | String |
templateId | ID |
status | HcpInteractionStatus |
dateFrom | AWSDateTime |
dateTo | AWSDateTime |
SUBMITTED SAVED
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query HcpInteractions($filter: HcpInteractionFilter, $pagination: PaginationInput) {
hcpInteractions(filter: $filter, pagination: $pagination) { items { id orgId organizationHcpIds date type status submittedAt submittedBy deletedBy templateId interactionData configuredFieldValues createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSThcpscore
Returns HcpListResult!
| Argument | Type |
|---|---|
filter | HcpFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
specialty | String |
institution | String |
region | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Hcps($filter: HcpFilter, $pagination: PaginationInput) {
hcps(filter: $filter, pagination: $pagination) { items { id orgId name specialty institution region email createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSThcpSummarycore
Returns HcpSummary
| Argument | Type |
|---|---|
organizationHcpId | ID! |
query HcpSummary($organizationHcpId: ID!) {
hcpSummary(organizationHcpId: $organizationHcpId) { id orgId organizationHcpId title professionalProfile publicationHighlights engagementOverview clinicalTrials recentNews nextBestActions fullSummary nextActions sources createdAt updatedAt }
}
{
"organizationHcpId": ""
}
POSThcpXAccountcore
Returns HcpXAccount
| Argument | Type |
|---|---|
organizationHcpId | ID! |
query HcpXAccount($organizationHcpId: ID!) {
hcpXAccount(organizationHcpId: $organizationHcpId) { id orgId organizationHcpId linkedBy xUserId xUsername xDisplayName xProfileUrl xProfileImageUrl xBio xFollowersCount xFollowingCount xVerified lastSyncedAt syncCursor organizationHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } linkedByUser { id firstName lastName } createdAt updatedAt deletedAt }
}
{
"organizationHcpId": ""
}
POSThcpXTweetscore
Returns XTweetListResult!
| Argument | Type |
|---|---|
hcpXAccountId | ID! |
filter | XTweetFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
tweetType | String |
fromDate | AWSDateTime |
toDate | AWSDateTime |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query HcpXTweets($hcpXAccountId: ID!, $filter: XTweetFilter, $pagination: PaginationInput) {
hcpXTweets(hcpXAccountId: $hcpXAccountId, filter: $filter, pagination: $pagination) { items { id orgId hcpXAccountId xTweetId text authorId postedAt likeCount retweetCount replyCount impressionCount lang tweetType mediaUrls tweetData createdAt updatedAt } total }
}
{
"hcpXAccountId": "",
"filter": {},
"pagination": {}
}
POSThealthcore
Returns String!
No arguments.
query Health {
health
}
{}
POSTinsightcore
Returns Insight
| Argument | Type |
|---|---|
id | ID! |
query Insight($id: ID!) {
insight(id: $id) { id orgId createdBy status text source origin organizationHcpId accountId organizationHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } account { id orgId name region type createdAt updatedAt deletedAt } products { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } priority { id orgId name order createdAt updatedAt deletedAt } location { id orgId name createdAt updatedAt deletedAt } theme { id orgId name description active createdAt updatedAt deletedAt } topic { id orgId name description active createdAt updatedAt deletedAt } sentiment confidenceScore managerNotes submittedBy validatedBy collectedAt createdAt updatedAt observedAt insightAt impactAt actionableAt impactOutcome impactOutcomeType impactLoggedBy impactPromptSnoozedUntil isActionable creator { id firstName lastName } tags { id orgId name color active createdAt updatedAt deletedAt } categories { id orgId name createdAt updatedAt deletedAt } customValues { id value createdAt deletedAt } configuredFieldValues }
}
{
"id": ""
}
POSTinsightActivitycore
Returns ActivityHistory!
| Argument | Type |
|---|---|
insightId | ID |
groupId | ID |
limit | Int |
offset | Int |
query InsightActivity($insightId: ID, $groupId: ID, $limit: Int, $offset: Int) {
insightActivity(insightId: $insightId, groupId: $groupId, limit: $limit, offset: $offset) { items { id entity entityId action message changes createdAt kind mentionedUserIds } total }
}
{
"insightId": "",
"groupId": "",
"limit": 0,
"offset": 0
}
POSTinsightCustomFieldcore
Returns InsightCustomField
| Argument | Type |
|---|---|
id | ID! |
query InsightCustomField($id: ID!) {
insightCustomField(id: $id) { id orgId name type createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTinsightCustomFieldscore
Returns [InsightCustomField!]!
No arguments.
query InsightCustomFields {
insightCustomFields { id orgId name type createdAt updatedAt deletedAt }
}
{}
POSTinsightGroupcore
Returns InsightGroup
| Argument | Type |
|---|---|
id | ID! |
query InsightGroup($id: ID!) {
insightGroup(id: $id) { id orgId name description isPublic stage collectionStatus actingAt impactAt impactOutcome impactLoggedBy impactPromptSnoozedUntil creator { id firstName lastName } updater { id firstName lastName } createdAt updatedAt deletedAt members { id addedAt } }
}
{
"id": ""
}
POSTinsightGroupscore
Returns [InsightGroup!]!
No arguments.
query InsightGroups {
insightGroups { id orgId name description isPublic stage collectionStatus actingAt impactAt impactOutcome impactLoggedBy impactPromptSnoozedUntil creator { id firstName lastName } updater { id firstName lastName } createdAt updatedAt deletedAt members { id addedAt } }
}
{}
POSTinsightReportcore
Returns InsightReport
| Argument | Type |
|---|---|
id | ID! |
query InsightReport($id: ID!) {
insightReport(id: $id) { id orgId userId title s3Path s3Url heading abstract detailedSummary conclusion insightCount dateRange metadata tokenUsage fileSize status createdAt updatedAt deletedAt user { id firstName lastName } insights { id orgId createdBy status text source origin organizationHcpId accountId sentiment confidenceScore managerNotes submittedBy validatedBy collectedAt createdAt updatedAt observedAt insightAt impactAt actionableAt impactOutcome impactOutcomeType impactLoggedBy impactPromptSnoozedUntil isActionable configuredFieldValues } }
}
{
"id": ""
}
POSTinsightReportscore
Returns InsightReportListResult!
| Argument | Type |
|---|---|
filter | InsightReportFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
userId | ID |
status | String |
search | String |
startDate | AWSDateTime |
endDate | AWSDateTime |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query InsightReports($filter: InsightReportFilter, $pagination: PaginationInput) {
insightReports(filter: $filter, pagination: $pagination) { items { id orgId userId title s3Path s3Url heading abstract detailedSummary conclusion insightCount dateRange metadata tokenUsage fileSize status createdAt updatedAt deletedAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTinteractionTemplatecore
Returns InteractionTemplate!
| Argument | Type |
|---|---|
id | ID! |
query InteractionTemplate($id: ID!) {
interactionTemplate(id: $id) { id orgId name description status key fieldConfig createdAt updatedAt deletedAt fields { id orgId templateId name label type required sortOrder config active createdAt updatedAt deletedAt } }
}
{
"id": ""
}
POSTinteractionTemplatescore
Returns [InteractionTemplate!]!
| Argument | Type |
|---|---|
filter | ListInteractionTemplatesFilter |
| Field | Type |
|---|---|
status | InteractionTemplateStatus |
includeDeleted | Boolean |
ACTIVE ARCHIVED
query InteractionTemplates($filter: ListInteractionTemplatesFilter) {
interactionTemplates(filter: $filter) { id orgId name description status key fieldConfig createdAt updatedAt deletedAt fields { id orgId templateId name label type required sortOrder config active createdAt updatedAt deletedAt } }
}
{
"filter": {}
}
POSTkbExtractionUploadUrlcore
Returns KbExtractionPresignedUrl!
| Argument | Type |
|---|---|
input | KbExtractionUploadUrlInput! |
| Field | Type |
|---|---|
jobId | ID |
fileName | String! |
contentType | String! |
fileSize | Int! |
query KbExtractionUploadUrl($input: KbExtractionUploadUrlInput!) {
kbExtractionUploadUrl(input: $input) { uploadUrl s3Key jobId expiresInSeconds }
}
{
"input": {
"fileName": "",
"contentType": "",
"fileSize": 0
}
}
POSTknowledgeStageConfigcore
Returns KnowledgeStageConfig
No arguments.
query KnowledgeStageConfig {
knowledgeStageConfig { id orgId mode stages businessRules createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
{}
POSTknowledgeStageDistributioncore
Returns KnowledgeStageDistributionResult!
No arguments.
query KnowledgeStageDistribution {
knowledgeStageDistribution { manual { stage count } recommended { stage count } total }
}
{}
POSTknowledgeStageHistorycore
Returns KnowledgeStageHistoryResult!
| Argument | Type |
|---|---|
orgHcpId | ID! |
limit | Int |
offset | Int |
query KnowledgeStageHistory($orgHcpId: ID!, $limit: Int, $offset: Int) {
knowledgeStageHistory(orgHcpId: $orgHcpId, limit: $limit, offset: $offset) { items { id orgId entityId action changes message userId createdAt } total }
}
{
"orgHcpId": "",
"limit": 0,
"offset": 0
}
POSTlistConferenceAttendeeImportJobscore
Returns ConferenceAttendeeImportJobList!
| Argument | Type |
|---|---|
meetingId | ID |
status | ConferenceAttendeeImportJobStatus |
limit | Int |
offset | Int |
UPLOADED MAPPING_REQUIRED PROCESSING COMPLETED COMPLETED_WITH_ERRORS FAILED
query ListConferenceAttendeeImportJobs($meetingId: ID, $status: ConferenceAttendeeImportJobStatus, $limit: Int, $offset: Int) {
listConferenceAttendeeImportJobs(meetingId: $meetingId, status: $status, limit: $limit, offset: $offset) { items { id orgId meetingId uploadedById originalFileName s3Key fileType status detectedHeaders sampleRows headerMapping totalRows importedRows failedRows reviewRows errorSummary startedAt completedAt createdAt updatedAt } total }
}
{
"meetingId": "",
"status": "UPLOADED",
"limit": 0,
"offset": 0
}
POSTlistConferenceAttendeeImportRowscore
Returns ConferenceAttendeeImportRowList!
| Argument | Type |
|---|---|
importJobId | ID! |
status | ConferenceAttendeeImportRowStatus |
limit | Int |
offset | Int |
IMPORTED NEEDS_REVIEW FAILED SKIPPED_DUPLICATE
query ListConferenceAttendeeImportRows($importJobId: ID!, $status: ConferenceAttendeeImportRowStatus, $limit: Int, $offset: Int) {
listConferenceAttendeeImportRows(importJobId: $importJobId, status: $status, limit: $limit, offset: $offset) { items { id orgId importJobId rowNumber rawData normalizedData mappedData matchedOrganizationHcpId conferenceAttendeeId status confidenceScore errorMessage createdAt updatedAt } total }
}
{
"importJobId": "",
"status": "IMPORTED",
"limit": 0,
"offset": 0
}
POSTlistConferenceAttendeescore
Returns ConferenceAttendeeListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
linked | Boolean |
search | String |
limit | Int |
offset | Int |
query ListConferenceAttendees($meetingId: ID!, $linked: Boolean, $search: String, $limit: Int, $offset: Int) {
listConferenceAttendees(meetingId: $meetingId, linked: $linked, search: $search, limit: $limit, offset: $offset) { items { id orgId meetingId firstName middleName lastName fullName npi email phone title specialty institution affiliation city state country organizationHcpId contactId matchScore matchMethod role importJobId createdAt updatedAt } total }
}
{
"meetingId": "",
"linked": false,
"search": "",
"limit": 0,
"offset": 0
}
POSTlistConferenceLocationscore
Returns ConferenceLocationListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
limit | Int |
offset | Int |
query ListConferenceLocations($meetingId: ID!, $limit: Int, $offset: Int) {
listConferenceLocations(meetingId: $meetingId, limit: $limit, offset: $offset) { items { name sessionCount } totalCount limit offset }
}
{
"meetingId": "",
"limit": 0,
"offset": 0
}
POSTlistConferenceSignalsReportscore
Returns [ConferenceSignalsReport!]!
| Argument | Type |
|---|---|
planId | String |
limit | Int |
query ListConferenceSignalsReports($planId: String, $limit: Int) {
listConferenceSignalsReports(planId: $planId, limit: $limit) { id orgId userId planId scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
{
"planId": "",
"limit": 0
}
POSTlistConferenceSpeakerscore
Returns ConferenceSpeakerListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
search | String |
limit | Int |
offset | Int |
sortBy | ConferenceSpeakerSort |
sortOrder | String |
SESSION_COUNT FULL_NAME
query ListConferenceSpeakers($meetingId: ID!, $search: String, $limit: Int, $offset: Int, $sortBy: ConferenceSpeakerSort, $sortOrder: String) {
listConferenceSpeakers(meetingId: $meetingId, search: $search, limit: $limit, offset: $offset, sortBy: $sortBy, sortOrder: $sortOrder) { items { id fullName firstName lastName credentials role affiliation organization sessionCount orgHcpId } totalCount limit offset }
}
{
"meetingId": "",
"search": "",
"limit": 0,
"offset": 0,
"sortBy": "SESSION_COUNT",
"sortOrder": ""
}
POSTlistConferenceSpeakerSessionscore
Returns MeetingSessionListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
presenterId | ID! |
limit | Int |
offset | Int |
query ListConferenceSpeakerSessions($meetingId: ID!, $presenterId: ID!, $limit: Int, $offset: Int) {
listConferenceSpeakerSessions(meetingId: $meetingId, presenterId: $presenterId, limit: $limit, offset: $offset) { items { id sourceKey externalId sessionUrl status title description sessionType category track tracks credits startAt endAt timezone location room firstScrapedAt lastScrapedAt presenterCount presentationCount } totalCount limit offset }
}
{
"meetingId": "",
"presenterId": "",
"limit": 0,
"offset": 0
}
POSTlistConferenceTopSpeakerscore
Returns ConferenceSpeakerListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
limit | Int |
query ListConferenceTopSpeakers($meetingId: ID!, $limit: Int) {
listConferenceTopSpeakers(meetingId: $meetingId, limit: $limit) { items { id fullName firstName lastName credentials role affiliation organization sessionCount orgHcpId } totalCount limit offset }
}
{
"meetingId": "",
"limit": 0
}
POSTlistConferenceTrackscore
Returns ConferenceTrackListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
limit | Int |
offset | Int |
query ListConferenceTracks($meetingId: ID!, $limit: Int, $offset: Int) {
listConferenceTracks(meetingId: $meetingId, limit: $limit, offset: $offset) { items { name sessionCount } totalCount limit offset }
}
{
"meetingId": "",
"limit": 0,
"offset": 0
}
POSTlistConfigurableFieldscore
Returns [ConfigurableField!]!
| Argument | Type |
|---|---|
module | ConfigurableFieldModule! |
INTERACTION INSIGHT
query ListConfigurableFields($module: ConfigurableFieldModule!) {
listConfigurableFields(module: $module) { id label module type required referenceSource referenceQuery enumValues embeddingSafe }
}
{
"module": "INTERACTION"
}
POSTlistDrugSignalsReportscore
Returns [DrugSignalsReport!]!
| Argument | Type |
|---|---|
drugName | String |
limit | Int |
query ListDrugSignalsReports($drugName: String, $limit: Int) {
listDrugSignalsReports(drugName: $drugName, limit: $limit) { id orgId userId drugName scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
{
"drugName": "",
"limit": 0
}
POSTlistExportcore
Returns ListExportPayload!
| Argument | Type |
|---|---|
input | ListExportInput! |
| Field | Type |
|---|---|
entity | ExportEntity |
savedReportId | ID |
filters | AWSJSON |
sort | AWSJSON |
visibleColumns | [String!] |
hcpId | ID |
meetingId | ID |
cursor | String |
limit | Int |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
query ListExport($input: ListExportInput!) {
listExport(input: $input) { mode rows columns { key label } total returned nextCursor hasMore asyncJobMessage }
}
{
"input": {}
}
POSTlistInsightscore
Returns InsightListResponse!
| Argument | Type |
|---|---|
pagination | PaginationInput |
filter | InsightFilter |
sort | InsightSortInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
| Field | Type |
|---|---|
insightId | String |
categoryId | ID |
priorityId | ID |
organizationHcpId | ID |
organizationHcoId | ID |
locationId | ID |
sentiment | String |
status | String |
source | InsightChannel |
origin | InsightOrigin |
createdById | ID |
collectedAtFrom | String |
collectedAtTo | String |
search | String |
FIELD_MEDICAL PUBLICATION CLINICAL_TRIAL CONFERENCE REGULATORY_NEWS PHARMACOVIGILANCE SOCIAL_KOL
FIELD_LOGGED AI_DERIVED
| Field | Type |
|---|---|
field | InsightSortField! |
direction | SortDirection |
sentimentOrder | SentimentSortOrder |
statusOrder | StatusSortOrder |
CREATED_AT COLLECTED_AT STATUS CATEGORY PRIORITY SENTIMENT HCP_NAME LOCATION
ASC DESC
NEGATIVE_FIRST POSITIVE_FIRST NEUTRAL_FIRST
OBSERVATION_FIRST IMPACT_FIRST
query ListInsights($pagination: PaginationInput, $filter: InsightFilter, $sort: InsightSortInput) {
listInsights(pagination: $pagination, filter: $filter, sort: $sort) { items { id orgId createdBy status text source origin organizationHcpId accountId sentiment confidenceScore managerNotes submittedBy validatedBy collectedAt createdAt updatedAt observedAt insightAt impactAt actionableAt impactOutcome impactOutcomeType impactLoggedBy impactPromptSnoozedUntil isActionable configuredFieldValues } total limit offset remaining }
}
{
"pagination": {},
"filter": {},
"sort": {
"field": "CREATED_AT"
}
}
POSTlistMeetingGroupscore
Returns MeetingGroupListResult!
| Argument | Type |
|---|---|
filter | MeetingsFilterInput |
limit | Int |
offset | Int |
sortBy | MeetingGroupSort |
sortOrder | String |
| Field | Type |
|---|---|
id | ID |
timeframe | MeetingTimeframe |
startAfter | AWSDateTime |
startBefore | AWSDateTime |
sourceKey | String |
meetingType | String |
meetingNameSearch | String |
category | String |
sessionType | String |
titleSearch | String |
textSearch | String |
trackSearch | String |
npi | String |
presenterRole | String |
bookmarkedOnly | Boolean |
therapeuticAreas | [String!] |
PAST UPCOMING ALL
START_DATE MEETING_NAME SESSION_COUNT
query ListMeetingGroups($filter: MeetingsFilterInput, $limit: Int, $offset: Int, $sortBy: MeetingGroupSort, $sortOrder: String) {
listMeetingGroups(filter: $filter, limit: $limit, offset: $offset, sortBy: $sortBy, sortOrder: $sortOrder) { items { id sourceKey externalId name shortName abbreviation meetingType associationName tagline status startAt endAt timezone venue city state country websiteUrl lastScrapedAt sessionCount presenterCount hcpMatchCount isBookmarked } totalCount limit offset }
}
{
"filter": {},
"limit": 0,
"offset": 0,
"sortBy": "START_DATE",
"sortOrder": ""
}
POSTlistMeetingSessionscore
Returns MeetingSessionListResult!
| Argument | Type |
|---|---|
meetingId | ID! |
filter | MeetingSessionsFilterInput |
limit | Int |
offset | Int |
sortBy | MeetingSessionSort |
sortOrder | String |
| Field | Type |
|---|---|
id | ID |
category | String |
sessionType | String |
titleSearch | String |
textSearch | String |
trackSearch | String |
npi | String |
presenterRole | String |
startAfter | AWSDateTime |
startBefore | AWSDateTime |
START_DATE TITLE
query ListMeetingSessions($meetingId: ID!, $filter: MeetingSessionsFilterInput, $limit: Int, $offset: Int, $sortBy: MeetingSessionSort, $sortOrder: String) {
listMeetingSessions(meetingId: $meetingId, filter: $filter, limit: $limit, offset: $offset, sortBy: $sortBy, sortOrder: $sortOrder) { items { id sourceKey externalId sessionUrl status title description sessionType category track tracks credits startAt endAt timezone location room firstScrapedAt lastScrapedAt presenterCount presentationCount } totalCount limit offset }
}
{
"meetingId": "",
"filter": {},
"limit": 0,
"offset": 0,
"sortBy": "START_DATE",
"sortOrder": ""
}
POSTlistTherapeuticAreascore
Returns [TherapeuticArea!]!
No arguments.
query ListTherapeuticAreas {
listTherapeuticAreas { id slug name }
}
{}
POSTlistWorkflowTablescore
Returns WorkflowTableListResult!
| Argument | Type |
|---|---|
filter | WorkflowTableFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
scope | String |
tableMode | String |
visibility | String |
search | String |
includeArchived | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query ListWorkflowTables($filter: WorkflowTableFilter, $pagination: PaginationInput) {
listWorkflowTables(filter: $filter, pagination: $pagination) { items { id workflowRunId orgId name columns csvS3Key createdAt updatedAt createdBy creatorName visibility title lastOpenedAt archivedAt tableMode } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTlocationcore
Returns Location
| Argument | Type |
|---|---|
id | ID! |
query Location($id: ID!) {
location(id: $id) { id orgId name createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTlocationscore
Returns LocationListResult!
| Argument | Type |
|---|---|
filter | LocationFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Locations($filter: LocationFilter, $pagination: PaginationInput) {
locations(filter: $filter, pagination: $pagination) { items { id orgId name createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTmecore
Returns User!
No arguments.
query Me {
me { id firstName lastName }
}
{}
POSTmedicaidSpendingByNpicore
Returns MedicaidSpendingResult!
| Argument | Type |
|---|---|
npi | String! |
filter | MedicaidSpendingFilterInput |
| Field | Type |
|---|---|
month | Int |
year | Int |
role | MedicaidNpiRole |
BILLING SERVICING EITHER
query MedicaidSpendingByNpi($npi: String!, $filter: MedicaidSpendingFilterInput) {
medicaidSpendingByNpi(npi: $npi, filter: $filter) { npi items { hcpcsCode hcpcsDescription entries hcpcsCategory claimMonth totalBeneficiaries totalClaims totalPaid } }
}
{
"npi": "",
"filter": {}
}
POSTmedicalInsightsDashboardcore
Returns MedicalInsightsDashboard!
| Argument | Type |
|---|---|
period | DashboardPeriod! |
start | String |
end | String |
locationId | String |
region | String |
WEEK MONTH CUSTOM
query MedicalInsightsDashboard($period: DashboardPeriod!, $start: String, $end: String, $locationId: String, $region: String) {
medicalInsightsDashboard(period: $period, start: $start, end: $end, locationId: $locationId, region: $region) { range { start end } previousRange { start end } totalInteractions { value prev deltaPct } totalObservations { value prev deltaPct } observationsToInsightsRate { valuePct } insightsVsPrevious { value prev deltaPct } actionableOutcomes { value prev deltaPct } topThemes { themeId themeName count pct } sentimentDistribution { sentiment count pct } sourceDistribution { source count pct } originDistribution { origin count pct } weekOverWeek { insightVolumeDeltaPct uniqueHcpEngagementsDeltaPct actionableInsightsDeltaPct } territoryPerformance { regionId regionName insights prev deltaPct } }
}
{
"period": "WEEK",
"start": "",
"end": "",
"locationId": "",
"region": ""
}
POSTmyRolecore
Returns OrgRole!
No arguments.
query MyRole {
myRole { role orgId }
}
{}
POSTnewsArticlescore
Returns NewsArticlesResponse!
| Argument | Type |
|---|---|
sourceCategory | String |
sourceDomain | String |
startDate | AWSDateTime |
endDate | AWSDateTime |
limit | Int |
offset | Int |
query NewsArticles($sourceCategory: String, $sourceDomain: String, $startDate: AWSDateTime, $endDate: AWSDateTime, $limit: Int, $offset: Int) {
newsArticles(sourceCategory: $sourceCategory, sourceDomain: $sourceDomain, startDate: $startDate, endDate: $endDate, limit: $limit, offset: $offset) { items { id url title sourceName sourceDomain sourceCategory publishedAt summary topics } total }
}
{
"sourceCategory": "",
"sourceDomain": "",
"startDate": "2026-01-01T00:00:00Z",
"endDate": "2026-01-01T00:00:00Z",
"limit": 0,
"offset": 0
}
POSTnewsSummarycore
Returns NewsSummaryResult
| Argument | Type |
|---|---|
date | AWSDateTime! |
period | String! |
query NewsSummary($date: AWSDateTime!, $period: String!) {
newsSummary(date: $date, period: $period) { id periodStartDate periodEndDate period status topStories { headline summary source url category } executiveSummary categoryBreakdowns { __typename } trendingTopics articleCount createdAt updatedAt }
}
{
"date": "2026-01-01T00:00:00Z",
"period": ""
}
POSTopenPaymentsByNpicore
Returns OpenPaymentsByNpiResponse!
| Argument | Type |
|---|---|
npi | String! |
programYear | Int |
pagination | PaginationInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OpenPaymentsByNpi($npi: String!, $programYear: Int, $pagination: PaginationInput) {
openPaymentsByNpi(npi: $npi, programYear: $programYear, pagination: $pagination) { npi programYear general { total } ownership { total } research { total } }
}
{
"npi": "",
"programYear": 0,
"pagination": {}
}
POSTorganizationConfigcore
Returns OrganizationConfig
| Argument | Type |
|---|---|
type | OrganizationConfigType |
FISCAL INTERACTION_DEFAULT SALESFORCE_CONFIG SALESFORCE_IMPORT_CONFIG SALESFORCE_FIELD_MAPPINGS SALESFORCE_ASSUMPTIONS IMAP_CONFIG INSIGHT_FIELDS
query OrganizationConfig($type: OrganizationConfigType) {
organizationConfig(type: $type) { id orgId type config createdAt updatedAt deletedAt }
}
{
"type": "FISCAL"
}
POSTorganizationHcpcore
Returns OrganizationHCP
| Argument | Type |
|---|---|
id | ID! |
query OrganizationHcp($id: ID!) {
organizationHcp(id: $id) { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates owner { id firstName lastName } ownerId title firstName middleName lastName name specialty institution organizationInstitutions { id orgId name address1 address2 city state zip country createdAt updatedAt deletedAt } region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedBy { id firstName lastName } knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt hcos { id orgId npi name addressLine1 addressLine2 city state zip country phone fax beds accountType status dataSource parentHcoId customFields createdById createdAt updatedAt linkSource isPrimary confidenceScore } linkSource isPrimary confidenceScore }
}
{
"id": ""
}
POSTorganizationHcpscore
Returns OrganizationHcpListResult!
| Argument | Type |
|---|---|
filter | OrganizationHcpFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
npi | String |
firstName | String |
middleName | String |
lastName | String |
name | String |
specialty | String |
institution | String |
organizationInstitutionId | ID |
region | String |
city | String |
state | String |
zip | String |
country | String |
isExUS | Boolean |
isKOL | Boolean |
kolTier | String |
knowledgeStage | String |
recommendedStage | String |
isPublicSynced | Boolean |
ownerId | ID |
hcoId | ID |
statementAlignmentStatus | String |
statementAlignmentStatementId | ID |
misalignedHcpsCohort | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OrganizationHcps($filter: OrganizationHcpFilter, $pagination: PaginationInput) {
organizationHcps(filter: $filter, pagination: $pagination) { items { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } total }
}
{
"filter": {},
"pagination": {}
}
POSTorganizationInstitutioncore
Returns OrganizationInstitution
| Argument | Type |
|---|---|
id | ID! |
query OrganizationInstitution($id: ID!) {
organizationInstitution(id: $id) { id orgId name address1 address2 city state zip country organizationHcps { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTorganizationInstitutionscore
Returns OrganizationInstitutionListResult!
| Argument | Type |
|---|---|
filter | OrganizationInstitutionFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
city | String |
state | String |
zip | String |
country | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OrganizationInstitutions($filter: OrganizationInstitutionFilter, $pagination: PaginationInput) {
organizationInstitutions(filter: $filter, pagination: $pagination) { items { id orgId name address1 address2 city state zip country createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTorganizationSummariescore
Returns OrganizationSummaryListResult!
| Argument | Type |
|---|---|
pagination | PaginationInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OrganizationSummaries($pagination: PaginationInput) {
organizationSummaries(pagination: $pagination) { items { id orgId periodStartDate periodEndDate period summary business brandProduct patient competitiveIntel treatments sentiment emergingThemes risks opportunities insightsCount createdAt updatedAt deletedAt } total limit offset remaining }
}
{
"pagination": {}
}
POSTorganizationSummarycore
Returns OrganizationSummary
| Argument | Type |
|---|---|
periodStartDate | AWSDateTime! |
period | String |
autoGenerate | Boolean |
query OrganizationSummary($periodStartDate: AWSDateTime!, $period: String, $autoGenerate: Boolean) {
organizationSummary(periodStartDate: $periodStartDate, period: $period, autoGenerate: $autoGenerate) { id orgId periodStartDate periodEndDate period summary business brandProduct patient competitiveIntel treatments sentiment emergingThemes risks opportunities insightsCount createdAt updatedAt deletedAt }
}
{
"periodStartDate": "2026-01-01T00:00:00Z",
"period": "",
"autoGenerate": false
}
POSTorganizationSummaryPreviewcore
Returns OrganizationSummaryPreview!
| Argument | Type |
|---|---|
periodStartDate | AWSDateTime! |
periodEndDate | AWSDateTime |
period | String |
query OrganizationSummaryPreview($periodStartDate: AWSDateTime!, $periodEndDate: AWSDateTime, $period: String) {
organizationSummaryPreview(periodStartDate: $periodStartDate, periodEndDate: $periodEndDate, period: $period) { summaryExists summaryId period periodStartDate periodEndDate insightsCount sentiment { positive negative neutral positivePercentage negativePercentage neutralPercentage total } tagDistribution { tag count color percentage } insightCaptureRate uniqueHcpInteractions totalInteractionCount actionableInsightYield territoryCoverageScore activeKolCount activeHcpCount uniqueInsightCount insightVsLastPeriod interactionVsLastPeriod territoryReachVsLastPeriod activeKolVsLastPeriod insightsByDay { date count } previousPeriodInsightsByDay { date count } interactionsByDay { date count } previousPeriodInteractionsByDay { date count } territoryPerformance { territoryName insights interactions activeHcps activeKols totalKols percentage } }
}
{
"periodStartDate": "2026-01-01T00:00:00Z",
"periodEndDate": "2026-01-01T00:00:00Z",
"period": ""
}
POSTorgKnowledgeBasecore
Returns OrgKnowledgeBase
| Argument | Type |
|---|---|
id | ID! |
query OrgKnowledgeBase($id: ID!) {
orgKnowledgeBase(id: $id) { id orgId name medicalVision strategicImperatives fieldTactic therapeuticAreaOverview targetAudience competitiveLandscape configStatus misalignedHcpThreshold createdBy { id firstName lastName } createdById products { id knowledgeBaseId productId createdAt } statements { id orgId knowledgeBaseId statementText status sortOrder createdById createdAt updatedAt deletedAt } createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTorgKnowledgeBasescore
Returns [OrgKnowledgeBase!]!
No arguments.
query OrgKnowledgeBases {
orgKnowledgeBases { id orgId name medicalVision strategicImperatives fieldTactic therapeuticAreaOverview targetAudience competitiveLandscape configStatus misalignedHcpThreshold createdBy { id firstName lastName } createdById products { id knowledgeBaseId productId createdAt } statements { id orgId knowledgeBaseId statementText status sortOrder createdById createdAt updatedAt deletedAt } createdAt updatedAt deletedAt }
}
{}
POSTpresentationAbstractcore
Returns PresentationAbstract!
| Argument | Type |
|---|---|
presentationId | ID! |
query PresentationAbstract($presentationId: ID!) {
presentationAbstract(presentationId: $presentationId) { presentationId hasAbstract abstractText abstractPdfUrl }
}
{
"presentationId": ""
}
POSTprioritiescore
Returns PriorityListResult!
| Argument | Type |
|---|---|
filter | PriorityFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Priorities($filter: PriorityFilter, $pagination: PaginationInput) {
priorities(filter: $filter, pagination: $pagination) { items { id orgId name order createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTprioritycore
Returns Priority
| Argument | Type |
|---|---|
id | ID! |
query Priority($id: ID!) {
priority(id: $id) { id orgId name order createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTproductcore
Returns Product
| Argument | Type |
|---|---|
id | ID! |
query Product($id: ID!) {
product(id: $id) { id orgId name description fdaApprovedDrug { id name createdAt updatedAt } fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus competitors { __typename } createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTproductscore
Returns ProductListResult!
| Argument | Type |
|---|---|
filter | ProductFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
search | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Products($filter: ProductFilter, $pagination: PaginationInput) {
products(filter: $filter, pagination: $pagination) { items { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTpublicationsByNpicore
Returns PublicationsByNpiResult!
| Argument | Type |
|---|---|
npi | ID! |
search | String |
pagination | PaginationInput |
includeTags | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query PublicationsByNpi($npi: ID!, $search: String, $pagination: PaginationInput, $includeTags: Boolean) {
publicationsByNpi(npi: $npi, search: $search, pagination: $pagination, includeTags: $includeTags) { items { npi pmid matchScore matchType evidence status } total tags { label category } }
}
{
"npi": "",
"search": "",
"pagination": {},
"includeTags": false
}
POSTpublicationStatsByNpicore
Returns PublicationStatsByNpiResult!
| Argument | Type |
|---|---|
npi | ID! |
query PublicationStatsByNpi($npi: ID!) {
publicationStatsByNpi(npi: $npi) { totalPublications lastTwoYearsCount publicationsByYear { year count } }
}
{
"npi": ""
}
POSTpublicHcpcore
Returns PublicHCP
| Argument | Type |
|---|---|
id | ID! |
query PublicHcp($id: ID!) {
publicHcp(id: $id) { id npi firstName middleName lastName name entityType gender orgName otherOrgName city state zip country practiceAddress mailingAddress taxonomies specialties nameVariants rawShardKey rawShardId rawParquetPrefix rawVersion dataSource createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTpublicHcpscore
Returns PublicHcpListResult!
| Argument | Type |
|---|---|
filter | PublicHcpFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
npi | String |
firstName | String |
middleName | String |
lastName | String |
name | String |
city | String |
state | String |
country | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query PublicHcps($filter: PublicHcpFilter, $pagination: PaginationInput) {
publicHcps(filter: $filter, pagination: $pagination) { items { id npi firstName middleName lastName name entityType gender orgName otherOrgName city state zip country practiceAddress mailingAddress taxonomies specialties nameVariants rawShardKey rawShardId rawParquetPrefix rawVersion dataSource createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTrecommendTableColumnscore
Returns [RecommendedColumn!]!
| Argument | Type |
|---|---|
input | RecommendTableColumnsInput! |
| Field | Type |
|---|---|
documentIds | [ID!]! |
query | String |
query RecommendTableColumns($input: RecommendTableColumnsInput!) {
recommendTableColumns(input: $input) { key name prompt }
}
{
"input": {
"documentIds": [
""
]
}
}
POSTrecommendTagscore
Returns [TagRecommendation!]!
| Argument | Type |
|---|---|
text | String! |
maxRecommendations | Int |
minScore | Float |
query RecommendTags($text: String!, $maxRecommendations: Int, $minScore: Float) {
recommendTags(text: $text, maxRecommendations: $maxRecommendations, minScore: $minScore) { tagId tagName score reason }
}
{
"text": "",
"maxRecommendations": 0,
"minScore": 0
}
POSTresearchConversationcore
Returns ResearchConversation
| Argument | Type |
|---|---|
id | ID! |
query ResearchConversation($id: ID!) {
researchConversation(id: $id) { id orgId userId workflowRunId workflowType title systemPrompt documentIds messages { id conversationId role content sources tokenUsage status progressPercent createdAt } createdAt updatedAt }
}
{
"id": ""
}
POSTresearchConversationscore
Returns ResearchConversationListResult!
| Argument | Type |
|---|---|
filter | ResearchConversationFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
workflowType | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query ResearchConversations($filter: ResearchConversationFilter, $pagination: PaginationInput) {
researchConversations(filter: $filter, pagination: $pagination) { items { id orgId userId workflowRunId workflowType title systemPrompt documentIds createdAt updatedAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTresearchDocumentcore
Returns ResearchDocument
| Argument | Type |
|---|---|
id | ID! |
query ResearchDocument($id: ID!) {
researchDocument(id: $id) { id orgId uploadedBy fileName fileType fileSize s3Key category accessLevel status extractedText metadata errorMessage thumbnailUrl downloadUrl chunkCount sourceType nctId pmid doi sourceUrl licenseType createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTresearchDocumentscore
Returns ResearchDocumentListResult!
| Argument | Type |
|---|---|
filter | ResearchDocumentFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
status | String |
category | String |
accessLevel | String |
workflowType | String |
uploadedBy | String |
search | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query ResearchDocuments($filter: ResearchDocumentFilter, $pagination: PaginationInput) {
researchDocuments(filter: $filter, pagination: $pagination) { items { id orgId uploadedBy fileName fileType fileSize s3Key category accessLevel status extractedText metadata errorMessage thumbnailUrl downloadUrl chunkCount sourceType nctId pmid doi sourceUrl licenseType createdAt updatedAt deletedAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTresearchDocumentUploadUrlcore
Returns PresignedUploadUrl!
| Argument | Type |
|---|---|
input | ResearchDocumentUploadUrlInput! |
| Field | Type |
|---|---|
fileName | String! |
fileType | String! |
fileSize | Int! |
category | String! |
query ResearchDocumentUploadUrl($input: ResearchDocumentUploadUrlInput!) {
researchDocumentUploadUrl(input: $input) { uploadUrl s3Key documentId }
}
{
"input": {
"fileName": "",
"fileType": "",
"fileSize": 0,
"category": ""
}
}
POSTresearchExportcore
Returns ResearchExport
| Argument | Type |
|---|---|
id | ID! |
query ResearchExport($id: ID!) {
researchExport(id: $id) { id orgId userId sourceType sourceId workflowType exportType format s3Key s3Url fileSize fileName createdAt }
}
{
"id": ""
}
POSTresearchExportscore
Returns ResearchExportListResult!
| Argument | Type |
|---|---|
filter | ResearchExportFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
sourceType | String |
workflowType | String |
format | String |
startDate | AWSDateTime |
endDate | AWSDateTime |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query ResearchExports($filter: ResearchExportFilter, $pagination: PaginationInput) {
researchExports(filter: $filter, pagination: $pagination) { items { id orgId userId sourceType sourceId workflowType exportType format s3Key s3Url fileSize fileName createdAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTsalesforceImportJobcore
Returns SalesforceImportJob
| Argument | Type |
|---|---|
jobId | ID! |
query SalesforceImportJob($jobId: ID!) {
salesforceImportJob(jobId: $jobId) { id orgId objectType sourceObject status mode totalRecords imported skipped failed pendingReview startedAt completedAt errorMessage createdBy createdAt updatedAt errors { id sourceRecordId field error rawData createdAt } _count { errors reviews } }
}
{
"jobId": ""
}
POSTsalesforceImportJobscore
Returns SalesforceImportJobList!
| Argument | Type |
|---|---|
limit | Int |
offset | Int |
status | SalesforceImportJobStatus |
PENDING RUNNING COMPLETED FAILED CANCELLED
query SalesforceImportJobs($limit: Int, $offset: Int, $status: SalesforceImportJobStatus) {
salesforceImportJobs(limit: $limit, offset: $offset, status: $status) { items { id orgId objectType sourceObject status mode totalRecords imported skipped failed pendingReview startedAt completedAt errorMessage createdBy createdAt updatedAt } total }
}
{
"limit": 0,
"offset": 0,
"status": "PENDING"
}
POSTsalesforceImportPreviewcore
Returns SalesforceImportPreview!
| Argument | Type |
|---|---|
objectType | String! |
query SalesforceImportPreview($objectType: String!) {
salesforceImportPreview(objectType: $objectType) { objectType sourceObject totalAvailable sampleRecords { sourceRecordId sourceData transformedData validationErrors } mappingWarnings }
}
{
"objectType": ""
}
POSTsalesforceImportReviewcore
Returns SalesforceImportReview
| Argument | Type |
|---|---|
id | ID! |
query SalesforceImportReview($id: ID!) {
salesforceImportReview(id: $id) { id orgId jobId objectType sourceRecordId sourceData sourceFirstName sourceLastName sourceName sourceNpi suggestedNpi suggestedFirstName suggestedLastName suggestedName matchScore matchCandidates { npi firstName lastName name city state matchScore } transformedData reviewReasons status reviewedBy reviewedAt resolvedHcpId resolutionNotes createdAt updatedAt }
}
{
"id": ""
}
POSTsalesforceImportReviewscore
Returns SalesforceImportReviewList!
| Argument | Type |
|---|---|
jobId | ID |
status | SalesforceImportReviewStatus |
limit | Int |
offset | Int |
PENDING APPROVED REJECTED
query SalesforceImportReviews($jobId: ID, $status: SalesforceImportReviewStatus, $limit: Int, $offset: Int) {
salesforceImportReviews(jobId: $jobId, status: $status, limit: $limit, offset: $offset) { items { id orgId jobId objectType sourceRecordId sourceData sourceFirstName sourceLastName sourceName sourceNpi suggestedNpi suggestedFirstName suggestedLastName suggestedName matchScore transformedData reviewReasons status reviewedBy reviewedAt resolvedHcpId resolutionNotes createdAt updatedAt } total pendingCount approvedCount rejectedCount }
}
{
"jobId": "",
"status": "PENDING",
"limit": 0,
"offset": 0
}
POSTsavedReportscore
Returns SavedReportListResult!
| Argument | Type |
|---|---|
filter | SavedReportFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
id | ID |
entity | ExportEntity |
visibility | ReportVisibility |
scope | SavedReportScope |
search | String |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
PUBLIC PRIVATE
OWN SHARED ORG_PUBLIC ALL
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query SavedReports($filter: SavedReportFilter, $pagination: PaginationInput) {
savedReports(filter: $filter, pagination: $pagination) { items { id orgId createdBy name description entity filters sort visibleColumns hcpId visibility createdAt updatedAt } total limit offset }
}
{
"filter": {},
"pagination": {}
}
POSTscientificStatementcore
Returns ScientificStatement
| Argument | Type |
|---|---|
id | ID! |
query ScientificStatement($id: ID!) {
scientificStatement(id: $id) { id orgId knowledgeBaseId statementText status sortOrder createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTscientificStatementscore
Returns [ScientificStatement!]!
| Argument | Type |
|---|---|
knowledgeBaseId | ID! |
query ScientificStatements($knowledgeBaseId: ID!) {
scientificStatements(knowledgeBaseId: $knowledgeBaseId) { id orgId knowledgeBaseId statementText status sortOrder createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
{
"knowledgeBaseId": ""
}
POSTsearchDocumentChunkscore
Returns [DocumentChunkResult!]!
| Argument | Type |
|---|---|
input | SearchDocumentChunksInput! |
| Field | Type |
|---|---|
query | String! |
documentIds | [ID!] |
limit | Int |
minSimilarity | Float |
query SearchDocumentChunks($input: SearchDocumentChunksInput!) {
searchDocumentChunks(input: $input) { chunkId documentId fileName content chunkIndex tokenCount similarity metadata }
}
{
"input": {
"query": ""
}
}
POSTsearchXAccountscore
Returns XAccountSearchResult!
| Argument | Type |
|---|---|
input | SearchXAccountsInput! |
| Field | Type |
|---|---|
organizationHcpId | ID! |
query | String |
maxResults | Int |
nextToken | String |
query SearchXAccounts($input: SearchXAccountsInput!) {
searchXAccounts(input: $input) { candidates { xUserId xUsername xDisplayName xProfileUrl xProfileImageUrl xBio xFollowersCount xFollowingCount xVerified } total nextToken }
}
{
"input": {
"organizationHcpId": ""
}
}
POSTtagcore
Returns Tag
| Argument | Type |
|---|---|
id | ID! |
query Tag($id: ID!) {
tag(id: $id) { id orgId name color active createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTtagscore
Returns TagListResult!
| Argument | Type |
|---|---|
filter | TagFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Tags($filter: TagFilter, $pagination: PaginationInput) {
tags(filter: $filter, pagination: $pagination) { items { id orgId name color active createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTtaskcore
Returns Task
| Argument | Type |
|---|---|
id | ID! |
query Task($id: ID!) {
task(id: $id) { id orgId title description taskType priority status dueDate completedAt deletedAt organizationHcpId organizationHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } assignedTo assignedUser { id firstName lastName } createdBy creatorUser { id firstName lastName } insightId insight { id orgId createdBy status text source origin organizationHcpId accountId sentiment confidenceScore managerNotes submittedBy validatedBy collectedAt createdAt updatedAt observedAt insightAt impactAt actionableAt impactOutcome impactOutcomeType impactLoggedBy impactPromptSnoozedUntil isActionable configuredFieldValues } interactionId interaction { id orgId organizationHcpIds date type status submittedAt submittedBy deletedBy templateId interactionData configuredFieldValues createdAt updatedAt deletedAt } comments { id taskId userId content createdAt updatedAt deletedAt } createdAt updatedAt }
}
{
"id": ""
}
POSTtaskCommentscore
Returns TaskCommentListResult!
| Argument | Type |
|---|---|
taskId | ID! |
pagination | PaginationInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query TaskComments($taskId: ID!, $pagination: PaginationInput) {
taskComments(taskId: $taskId, pagination: $pagination) { items { id taskId userId content createdAt updatedAt deletedAt } total }
}
{
"taskId": "",
"pagination": {}
}
POSTtaskscore
Returns TaskListResult!
| Argument | Type |
|---|---|
filter | TaskFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
organizationHcpId | ID |
assignedTo | ID |
createdBy | ID |
status | String |
taskType | [String] |
priority | String |
dueDateFrom | AWSDateTime |
dueDateTo | AWSDateTime |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Tasks($filter: TaskFilter, $pagination: PaginationInput) {
tasks(filter: $filter, pagination: $pagination) { items { id orgId title description taskType priority status dueDate completedAt deletedAt organizationHcpId assignedTo createdBy insightId interactionId createdAt updatedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTterritoryDetailcore
Returns TerritoryDetailResult!
| Argument | Type |
|---|---|
state | String! |
periodStartDate | AWSDateTime! |
periodEndDate | AWSDateTime |
period | String |
query TerritoryDetail($state: String!, $periodStartDate: AWSDateTime!, $periodEndDate: AWSDateTime, $period: String) {
territoryDetail(state: $state, periodStartDate: $periodStartDate, periodEndDate: $periodEndDate, period: $period) { state insights { id text sentiment status collectedAt hcpName hcpId } interactions { id date type status templateName createdByName summary hcpNames hcpIds } hcps { id name specialty institution isKOL insightCount interactionCount } }
}
{
"state": "",
"periodStartDate": "2026-01-01T00:00:00Z",
"periodEndDate": "2026-01-01T00:00:00Z",
"period": ""
}
POSTthemecore
Returns Theme
| Argument | Type |
|---|---|
id | ID! |
query Theme($id: ID!) {
theme(id: $id) { id orgId name description active createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTthemescore
Returns ThemeListResult!
| Argument | Type |
|---|---|
filter | ThemeFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
active | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Themes($filter: ThemeFilter, $pagination: PaginationInput) {
themes(filter: $filter, pagination: $pagination) { items { id orgId name description active createdAt updatedAt deletedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTtopiccore
Returns Topic
| Argument | Type |
|---|---|
id | ID! |
query Topic($id: ID!) {
topic(id: $id) { id orgId name description active createdAt updatedAt deletedAt }
}
{
"id": ""
}
POSTtopicscore
Returns TopicListResult!
| Argument | Type |
|---|---|
filter | TopicFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
active | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Topics($filter: TopicFilter, $pagination: PaginationInput) {
topics(filter: $filter, pagination: $pagination) { items { id orgId name description active createdAt updatedAt deletedAt } total limit offset }
}
{
"filter": {},
"pagination": {}
}
POSTuserscore
Returns UserConnection!
| Argument | Type |
|---|---|
filter | UserFilterInput |
pagination | PaginationInput |
| Field | Type |
|---|---|
search | String |
email | String |
firstName | String |
lastName | String |
role | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Users($filter: UserFilterInput, $pagination: PaginationInput) {
users(filter: $filter, pagination: $pagination) { total items { id clerkId email firstName lastName role createdAt } }
}
{
"filter": {},
"pagination": {}
}
POSTvalidateSalesforceConnectioncore
Returns SalesforceConnectionStatus!
No arguments.
query ValidateSalesforceConnection {
validateSalesforceConnection { valid error }
}
{}
POSTvalidateScientificStatementcore
Returns StatementValidationResult!
| Argument | Type |
|---|---|
input | ValidateScientificStatementInput! |
| Field | Type |
|---|---|
knowledgeBaseId | ID! |
statementText | String! |
query ValidateScientificStatement($input: ValidateScientificStatementInput!) {
validateScientificStatement(input: $input) { overallScore label blockSave axes { clinicalRelevance singleClaim specificity measurability kbAlignment } complianceFlags recommendations }
}
{
"input": {
"knowledgeBaseId": "",
"statementText": ""
}
}
POSTworkflowRuncore
Returns WorkflowRun
| Argument | Type |
|---|---|
id | ID! |
query WorkflowRun($id: ID!) {
workflowRun(id: $id) { id orgId userId workflowType status config progress progressMsg sourceSetId resultTableId resultDocUrl error tokenUsage startedAt completedAt createdAt updatedAt sourceDocuments { documentId fileName } tableResult { id workflowRunId orgId name columns csvS3Key createdAt updatedAt createdBy creatorName visibility title lastOpenedAt archivedAt tableMode } }
}
{
"id": ""
}
POSTworkflowRunscore
Returns WorkflowRunListResult!
| Argument | Type |
|---|---|
filter | WorkflowRunFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
workflowType | String |
status | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query WorkflowRuns($filter: WorkflowRunFilter, $pagination: PaginationInput) {
workflowRuns(filter: $filter, pagination: $pagination) { items { id orgId userId workflowType status config progress progressMsg sourceSetId resultTableId resultDocUrl error tokenUsage startedAt completedAt createdAt updatedAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
POSTworkflowSourceSetscore
Returns WorkflowSourceSetListResult!
| Argument | Type |
|---|---|
pagination | PaginationInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query WorkflowSourceSets($pagination: PaginationInput) {
workflowSourceSets(pagination: $pagination) { items { id orgId userId name createdAt updatedAt } total limit offset remaining }
}
{
"pagination": {}
}
POSTworkflowTablecore
Returns WorkflowTable
| Argument | Type |
|---|---|
id | ID! |
query WorkflowTable($id: ID!) {
workflowTable(id: $id) { id workflowRunId orgId name columns csvS3Key rows { id tableId rowIndex sourceChunkIds cells isManuallyEdited createdAt updatedAt } createdAt updatedAt createdBy creatorName visibility title lastOpenedAt archivedAt tableMode shares { userId accessLevel userName email } }
}
{
"id": ""
}
POSTworkflowTableByRunIdcore
Returns WorkflowTable
| Argument | Type |
|---|---|
workflowRunId | ID! |
query WorkflowTableByRunId($workflowRunId: ID!) {
workflowTableByRunId(workflowRunId: $workflowRunId) { id workflowRunId orgId name columns csvS3Key rows { id tableId rowIndex sourceChunkIds cells isManuallyEdited createdAt updatedAt } createdAt updatedAt createdBy creatorName visibility title lastOpenedAt archivedAt tableMode shares { userId accessLevel userName email } }
}
{
"workflowRunId": ""
}
POSTworkflowTableWithContextcore
Returns WorkflowTableContext
| Argument | Type |
|---|---|
id | ID! |
query WorkflowTableWithContext($id: ID!) {
workflowTableWithContext(id: $id) { table { id workflowRunId orgId name columns csvS3Key createdAt updatedAt createdBy creatorName visibility title lastOpenedAt archivedAt tableMode } run { id orgId userId workflowType status config progress progressMsg sourceSetId resultTableId resultDocUrl error tokenUsage startedAt completedAt createdAt updatedAt } sourceSet { id orgId userId name createdAt updatedAt } documents { documentId fileName } conversation { id orgId userId workflowRunId workflowType title systemPrompt documentIds createdAt updatedAt } persistedRowSelection }
}
{
"id": ""
}
dashboards
Dashboards — server-side metrics/aggregate API + per-entity measure/dimension catalogs.
POSTdashboardDimensionsdashboards
Returns [DashboardDimension!]!
| Argument | Type |
|---|---|
entity | ExportEntity! |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
query DashboardDimensions($entity: ExportEntity!) {
dashboardDimensions(entity: $entity) { field label type isArray }
}
{
"entity": "HCP"
}
POSTdashboardDistinctValuesdashboards
Returns [String!]!
| Argument | Type |
|---|---|
entity | ExportEntity! |
field | String! |
filters | AWSJSON |
search | String |
limit | Int |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
query DashboardDistinctValues($entity: ExportEntity!, $field: String!, $filters: AWSJSON, $search: String, $limit: Int) {
dashboardDistinctValues(entity: $entity, field: $field, filters: $filters, search: $search, limit: $limit)
}
{
"entity": "HCP",
"field": "",
"filters": "{}",
"search": "",
"limit": 0
}
POSTdashboardMeasuresdashboards
Returns [DashboardMeasure!]!
| Argument | Type |
|---|---|
entity | ExportEntity! |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
query DashboardMeasures($entity: ExportEntity!) {
dashboardMeasures(entity: $entity) { id label source field aggregations defaultAggregation format }
}
{
"entity": "HCP"
}
POSTdashboardMetricdashboards
Returns DashboardMetricResult!
| Argument | Type |
|---|---|
input | DashboardMetricInput! |
| Field | Type |
|---|---|
entity | ExportEntity! |
measure | MeasureInput! |
aggregation | AggregationKind! |
dimension | DimensionInput |
breakdown | DimensionInput |
filters | AWSJSON |
sort | MetricSort |
topN | Int |
hcpId | ID |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
| Field | Type |
|---|---|
source | MeasureSource! |
field | String |
metricId | String |
COUNT FIELD METRIC
COUNT COUNT_UNIQUE SUM AVG MIN MAX MEDIAN PERCENT_OF_TOTAL
| Field | Type |
|---|---|
field | String! |
dateGranularity | DateGranularity |
DAY WEEK MONTH QUARTER YEAR
| Field | Type |
|---|---|
by | MetricSortField! |
dir | SortDir! |
VALUE LABEL
ASC DESC
query DashboardMetric($input: DashboardMetricInput!) {
dashboardMetric(input: $input) { series { key label } rows { dimension sortKey values } total categoryCount truncated }
}
{
"input": {
"entity": "HCP",
"measure": {
"source": "COUNT"
},
"aggregation": "COUNT"
}
}
POSTdashboardMetricsdashboards
Returns [DashboardMetricResult!]!
| Argument | Type |
|---|---|
inputs | [DashboardMetricInput!]! |
| Field | Type |
|---|---|
entity | ExportEntity! |
measure | MeasureInput! |
aggregation | AggregationKind! |
dimension | DimensionInput |
breakdown | DimensionInput |
filters | AWSJSON |
sort | MetricSort |
topN | Int |
hcpId | ID |
HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER
| Field | Type |
|---|---|
source | MeasureSource! |
field | String |
metricId | String |
COUNT FIELD METRIC
COUNT COUNT_UNIQUE SUM AVG MIN MAX MEDIAN PERCENT_OF_TOTAL
| Field | Type |
|---|---|
field | String! |
dateGranularity | DateGranularity |
DAY WEEK MONTH QUARTER YEAR
| Field | Type |
|---|---|
by | MetricSortField! |
dir | SortDir! |
VALUE LABEL
ASC DESC
query DashboardMetrics($inputs: [DashboardMetricInput!]!) {
dashboardMetrics(inputs: $inputs) { series { key label } rows { dimension sortKey values } total categoryCount truncated }
}
{
"inputs": [
{
"entity": "HCP",
"measure": {
"source": "COUNT"
},
"aggregation": "COUNT"
}
]
}
POSTdashboardsdashboards
Returns DashboardListResult!
| Argument | Type |
|---|---|
filter | DashboardFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
id | ID |
visibility | ReportVisibility |
scope | SavedReportScope |
search | String |
bookmarked | Boolean |
PUBLIC PRIVATE
OWN SHARED ORG_PUBLIC ALL
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query Dashboards($filter: DashboardFilter, $pagination: PaginationInput) {
dashboards(filter: $filter, pagination: $pagination) { items { id orgId createdBy name description widgets filters visibility bookmarked createdAt updatedAt } total limit offset }
}
{
"filter": {},
"pagination": {}
}
gdpr-consent
POSTgdprConsentConfiggdpr-consent
Returns GdprConsentConfig!
No arguments.
query GdprConsentConfig {
gdprConsentConfig { enabled optInEnabled optOutEnabled optInCountries optOutCountries controllerName controllerContact optInTemplate optOutTemplate templateVersion }
}
{}
POSThcpConsentgdpr-consent
Returns HcpConsent
| Argument | Type |
|---|---|
orgHcpId | ID! |
query HcpConsent($orgHcpId: ID!) {
hcpConsent(orgHcpId: $orgHcpId) { id orgHcpId consentMode status capturedAt captureSource notifiedAt notifiedByUserId templateVersion deletionRequestedAt deletionActionedAt deletionActionedByUserId createdAt updatedAt }
}
{
"orgHcpId": ""
}
POSTpendingConsentRequestsgdpr-consent
Returns PendingConsentRequestListResult!
| Argument | Type |
|---|---|
status | String |
pagination | PaginationInput |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query PendingConsentRequests($status: String, $pagination: PaginationInput) {
pendingConsentRequests(status: $status, pagination: $pagination) { items { id orgHcpId consentMode status capturedAt notifiedAt deletionRequestedAt createdAt hcpName country isOverdue } total }
}
{
"status": "",
"pagination": {}
}
hco-accounts
hierarchyLevel (max 3 levels: Parent > Child > Grandchild) and territory/region are DERIVED at read time — never stored. Reads require HCP_READ; writes HCP_WRITE (delete: HCP_DELETE).
POSTorganizationHcohco-accounts
Returns OrganizationHco
| Argument | Type |
|---|---|
id | ID! |
query OrganizationHco($id: ID!) {
organizationHco(id: $id) { id orgId npi name addressLine1 addressLine2 city state zip country phone fax beds accountType status dataSource parentHcoId customFields createdById createdAt updatedAt deletedAt users { id firstName lastName } hcpCount organizationHcps { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } parentHco { __typename } childHcos { __typename } publicHco { id npi orgName otherOrgName addressLine1 addressLine2 city state zip country phone fax taxonomies primaryTaxonomyCode authorizedOfficial orgSubpart parentOrgLbn parentOrgTin enumeratedAt nppesUpdatedAt npiDeactivatedAt npiReactivatedAt status dataSource rawVersion createdAt updatedAt } hierarchyLevel territory { id name states } region { id name } }
}
{
"id": ""
}
POSTorganizationHcoshco-accounts
Returns OrganizationHcoListResult!
| Argument | Type |
|---|---|
filter | OrganizationHcoFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
state | String |
accountType | HcoAccountType |
status | HcoStatus |
npi | String |
parentHcoId | ID |
assignedUserId | ID |
HOSPITAL HEALTH_SYSTEM CLINIC ACADEMIC_MEDICAL_CENTER GROUP_PRACTICE PHARMACY PAYER OTHER
ACTIVE INACTIVE MERGED
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query OrganizationHcos($filter: OrganizationHcoFilter, $pagination: PaginationInput) {
organizationHcos(filter: $filter, pagination: $pagination) { items { id orgId npi name addressLine1 addressLine2 city state zip country phone fax beds accountType status dataSource parentHcoId customFields createdById createdAt updatedAt deletedAt hcpCount hierarchyLevel } total }
}
{
"filter": {},
"pagination": {}
}
POSTorganizationHcoTreehco-accounts
Returns [OrganizationHcoTreeNode!]!
No arguments.
query OrganizationHcoTree {
organizationHcoTree { hco { id orgId npi name addressLine1 addressLine2 city state zip country phone fax beds accountType status dataSource parentHcoId customFields createdById createdAt updatedAt deletedAt hcpCount hierarchyLevel } hcpCount children { __typename } }
}
{}
POSTpublicHcohco-accounts
Returns PublicHco
| Argument | Type |
|---|---|
npi | String! |
query PublicHco($npi: String!) {
publicHco(npi: $npi) { id npi orgName otherOrgName addressLine1 addressLine2 city state zip country phone fax taxonomies primaryTaxonomyCode authorizedOfficial orgSubpart parentOrgLbn parentOrgTin enumeratedAt nppesUpdatedAt npiDeactivatedAt npiReactivatedAt status dataSource rawVersion createdAt updatedAt }
}
{
"npi": ""
}
POSTsearchPublicHcohco-accounts
Returns PublicHcoListResult!
| Argument | Type |
|---|---|
filter | PublicHcoFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
name | String |
npi | String |
city | String |
state | String |
zip | String |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query SearchPublicHco($filter: PublicHcoFilter, $pagination: PaginationInput) {
searchPublicHco(filter: $filter, pagination: $pagination) { items { id npi orgName otherOrgName addressLine1 addressLine2 city state zip country phone fax taxonomies primaryTaxonomyCode authorizedOfficial orgSubpart parentOrgLbn parentOrgTin enumeratedAt nppesUpdatedAt npiDeactivatedAt npiReactivatedAt status dataSource rawVersion createdAt updatedAt } total }
}
{
"filter": {},
"pagination": {}
}
POSTsuggestHcoAffiliationshco-accounts
Returns [HcoAffiliationSuggestion!]!
| Argument | Type |
|---|---|
organizationHcpId | ID! |
query SuggestHcoAffiliations($organizationHcpId: ID!) {
suggestHcoAffiliations(organizationHcpId: $organizationHcpId) { source npi name city state confidenceScore publicHco { id npi orgName otherOrgName addressLine1 addressLine2 city state zip country phone fax taxonomies primaryTaxonomyCode authorizedOfficial orgSubpart parentOrgLbn parentOrgTin enumeratedAt nppesUpdatedAt npiDeactivatedAt npiReactivatedAt status dataSource rawVersion createdAt updatedAt } }
}
{
"organizationHcpId": ""
}
hco-lists
Reuses ReportVisibility / SavedReportScope / SavedReportUser (_core) and PaginationInput. Visibility: PRIVATE = creator-only (view + edit). PUBLIC = anyone in the org can view and use the list; only the creator can edit membership, rename, change visibility, or delete. STATIC membership only for v1 — DYNAMIC (saved-filter) account lists are deferred until a buildOrganizationHcoWhere helper exists.
POSThcoListshco-lists
Returns HcoListListResult!
| Argument | Type |
|---|---|
filter | HcoListFilter |
pagination | PaginationInput |
memberPagination | PaginationInput |
| Field | Type |
|---|---|
id | ID |
visibility | ReportVisibility |
scope | SavedReportScope |
search | String |
containsHcoId | ID |
PUBLIC PRIVATE
OWN SHARED ORG_PUBLIC ALL
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query HcoLists($filter: HcoListFilter, $pagination: PaginationInput, $memberPagination: PaginationInput) {
hcoLists(filter: $filter, pagination: $pagination, memberPagination: $memberPagination) { items { id orgId createdBy name description visibility memberCount createdAt updatedAt } total limit offset }
}
{
"filter": {},
"pagination": {},
"memberPagination": {}
}
hcp-lists
Reuses ReportVisibility / SavedReportScope / SavedReportUser (_core) and PaginationInput. Visibility: PRIVATE = creator-only (view + edit). PUBLIC = anyone in the org can view and use the list; only the creator can edit membership, rename, change visibility, or delete. STATIC lists hold explicit members (HcpListMember rows).
POSThcpListshcp-lists
Returns HcpListListResult!
| Argument | Type |
|---|---|
filter | HcpListFilter |
pagination | PaginationInput |
memberPagination | PaginationInput |
| Field | Type |
|---|---|
id | ID |
listType | HcpListType |
visibility | ReportVisibility |
scope | SavedReportScope |
search | String |
containsOrganizationHcpId | ID |
STATIC DYNAMIC
PUBLIC PRIVATE
OWN SHARED ORG_PUBLIC ALL
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query HcpLists($filter: HcpListFilter, $pagination: PaginationInput, $memberPagination: PaginationInput) {
hcpLists(filter: $filter, pagination: $pagination, memberPagination: $memberPagination) { items { id orgId createdBy name description listType filters visibility memberCount createdAt updatedAt } total limit offset }
}
{
"filter": {},
"pagination": {},
"memberPagination": {}
}
initiative-reports
POSTinitiativePlanReportinitiative-reports
Returns InitiativePlanReport
| Argument | Type |
|---|---|
id | ID! |
query InitiativePlanReport($id: ID!) {
initiativePlanReport(id: $id) { id orgId planId generatedById reportType planStatusSnapshot status s3Path s3Url fileSize heading executiveSummary sections nextSteps metadata tokenUsage errorMessage createdAt updatedAt generatedBy { id firstName lastName } }
}
{
"id": ""
}
POSTinitiativePlanReportsinitiative-reports
Returns [InitiativePlanReport!]!
| Argument | Type |
|---|---|
planId | ID! |
limit | Int |
offset | Int |
query InitiativePlanReports($planId: ID!, $limit: Int, $offset: Int) {
initiativePlanReports(planId: $planId, limit: $limit, offset: $offset) { id orgId planId generatedById reportType planStatusSnapshot status s3Path s3Url fileSize heading executiveSummary sections nextSteps metadata tokenUsage errorMessage createdAt updatedAt generatedBy { id firstName lastName } }
}
{
"planId": "",
"limit": 0,
"offset": 0
}
POSTinitiativePlanSummaryinitiative-reports
Returns InitiativePlanSummary
| Argument | Type |
|---|---|
planId | ID! |
query InitiativePlanSummary($planId: ID!) {
initiativePlanSummary(planId: $planId) { id planId status errorMessage content paragraphs sourceDocumentIds sourceTaskDocumentIds revision tokenUsage createdAt updatedAt lastTriggeredBy { id firstName lastName } }
}
{
"planId": ""
}
POSTinitiativePlanSummaryDocinitiative-reports
Returns InitiativePlanSummaryDoc
| Argument | Type |
|---|---|
id | ID! |
query InitiativePlanSummaryDoc($id: ID!) {
initiativePlanSummaryDoc(id: $id) { id planId uploadedById fileName mimeType fileSize status errorMessage extractedCharCount extractionMethod createdAt updatedAt uploadedBy { id firstName lastName } }
}
{
"id": ""
}
POSTinitiativePlanSummaryDocDownloadUrlinitiative-reports
Returns InitiativePlanSummaryDocDownloadUrl!
| Argument | Type |
|---|---|
id | ID! |
query InitiativePlanSummaryDocDownloadUrl($id: ID!) {
initiativePlanSummaryDocDownloadUrl(id: $id) { downloadUrl fileName expiresInSeconds }
}
{
"id": ""
}
POSTinitiativePlanSummaryDocsinitiative-reports
Returns [InitiativePlanSummaryDoc!]!
| Argument | Type |
|---|---|
planId | ID! |
query InitiativePlanSummaryDocs($planId: ID!) {
initiativePlanSummaryDocs(planId: $planId) { id planId uploadedById fileName mimeType fileSize status errorMessage extractedCharCount extractionMethod createdAt updatedAt uploadedBy { id firstName lastName } }
}
{
"planId": ""
}
POSTstatementAlignmentReportinitiative-reports
Returns StatementAlignmentReport
| Argument | Type |
|---|---|
id | ID! |
query StatementAlignmentReport($id: ID!) {
statementAlignmentReport(id: $id) { id orgId userId title status progressPercent message errorMessage parameters sanitizedStatements s3Path s3Url fileSize statementCount hcpCount bucketCount insightCount tokenUsage createdAt updatedAt generatedBy { id firstName lastName } }
}
{
"id": ""
}
POSTstatementAlignmentReportsinitiative-reports
Returns StatementAlignmentReportListResult!
| Argument | Type |
|---|---|
filter | StatementAlignmentReportFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
userId | ID |
status | StatementAlignmentReportStatus |
search | String |
startDate | AWSDateTime |
endDate | AWSDateTime |
QUEUED RUNNING COMPLETED FAILED
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query StatementAlignmentReports($filter: StatementAlignmentReportFilter, $pagination: PaginationInput) {
statementAlignmentReports(filter: $filter, pagination: $pagination) { items { id orgId userId title status progressPercent message errorMessage parameters sanitizedStatements s3Path s3Url fileSize statementCount hcpCount bucketCount insightCount tokenUsage createdAt updatedAt } total limit offset remaining }
}
{
"filter": {},
"pagination": {}
}
initiative-sessions
POSTgetInitiativeSessioninitiative-sessions
Returns InitiativeSession!
| Argument | Type |
|---|---|
id | ID! |
query GetInitiativeSession($id: ID!) {
getInitiativeSession(id: $id) { id planId title sessionDate startTime endTime sessionType tracks location abstract timezone publicSessionId productId product { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } presentations { id sessionId name startTime endTime location abstractTitle abstractId contentCategory diseaseArea productMentioned competitorProduct isNovelData studyPhase presentationType sortOrder publicPresentationId createdAt updatedAt } assignees { id firstName lastName } bookmarkedByMe noteCount documentCount createdAt updatedAt }
}
{
"id": ""
}
POSTindustryEventRollupinitiative-sessions
Returns IndustryEventRollup!
| Argument | Type |
|---|---|
planId | ID! |
query IndustryEventRollup($planId: ID!) {
industryEventRollup(planId: $planId) { planId targetHcpCount engagedHcpCount remainingHcpCount interactionCount interactionsByUser { userId interactionCount engagedHcpCount } insightsByTheme { theme count } insightsBySentiment { sentiment count } sessionCount sessionsCovered sessionNoteCount sessionDocumentCount sessionCountsByOrgHcp { orgHcpId count } }
}
{
"planId": ""
}
POSTindustryEventSessionsForHcpinitiative-sessions
Returns [InitiativeSession!]!
| Argument | Type |
|---|---|
planId | ID! |
orgHcpId | ID! |
query IndustryEventSessionsForHcp($planId: ID!, $orgHcpId: ID!) {
industryEventSessionsForHcp(planId: $planId, orgHcpId: $orgHcpId) { id planId title sessionDate startTime endTime sessionType tracks location abstract timezone publicSessionId productId product { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } presentations { id sessionId name startTime endTime location abstractTitle abstractId contentCategory diseaseArea productMentioned competitorProduct isNovelData studyPhase presentationType sortOrder publicPresentationId createdAt updatedAt } assignees { id firstName lastName } bookmarkedByMe noteCount documentCount createdAt updatedAt }
}
{
"planId": "",
"orgHcpId": ""
}
POSTindustryEventUnlinkedSpeakersinitiative-sessions
Returns [IndustryEventUnlinkedSpeaker!]!
| Argument | Type |
|---|---|
planId | ID! |
query IndustryEventUnlinkedSpeakers($planId: ID!) {
industryEventUnlinkedSpeakers(planId: $planId) { orgHcpId npi speakerName speakerAffiliation presentationCount role assignee { id firstName lastName } }
}
{
"planId": ""
}
POSTindustryEventUpcomingSessionsinitiative-sessions
Returns [InitiativeSession!]!
| Argument | Type |
|---|---|
planId | ID! |
limit | Int |
query IndustryEventUpcomingSessions($planId: ID!, $limit: Int) {
industryEventUpcomingSessions(planId: $planId, limit: $limit) { id planId title sessionDate startTime endTime sessionType tracks location abstract timezone publicSessionId productId product { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } presentations { id sessionId name startTime endTime location abstractTitle abstractId contentCategory diseaseArea productMentioned competitorProduct isNovelData studyPhase presentationType sortOrder publicPresentationId createdAt updatedAt } assignees { id firstName lastName } bookmarkedByMe noteCount documentCount createdAt updatedAt }
}
{
"planId": "",
"limit": 0
}
POSTinitiativeDigestsinitiative-sessions
Returns [InitiativeDigest!]!
| Argument | Type |
|---|---|
planId | ID! |
query InitiativeDigests($planId: ID!) {
initiativeDigests(planId: $planId) { id planId digestDate content distributionStatus sentAt createdAt }
}
{
"planId": ""
}
POSTinitiativeInteractionsinitiative-sessions
Returns InteractionConnection!
| Argument | Type |
|---|---|
filter | InteractionFilter! |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
planId | ID |
orgHcpId | ID |
userId | ID |
dateFrom | AWSDateTime |
dateTo | AWSDateTime |
search | String |
sentiment | String |
theme | String |
hasInsights | Boolean |
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query InitiativeInteractions($filter: InteractionFilter!, $pagination: CursorPaginationInput) {
initiativeInteractions(filter: $filter, pagination: $pagination) { items { id orgId organizationHcpIds date type status submittedAt submittedBy deletedBy templateId interactionData configuredFieldValues createdAt updatedAt deletedAt } total nextCursor }
}
{
"filter": {},
"pagination": {}
}
POSTinitiativeSessionDocumentsinitiative-sessions
Returns [InitiativeSessionDocument!]!
| Argument | Type |
|---|---|
sessionId | ID! |
query InitiativeSessionDocuments($sessionId: ID!) {
initiativeSessionDocuments(sessionId: $sessionId) { id sessionId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
{
"sessionId": ""
}
POSTinitiativeSessionNotesinitiative-sessions
Returns [InitiativeSessionNote!]!
| Argument | Type |
|---|---|
sessionId | ID! |
query InitiativeSessionNotes($sessionId: ID!) {
initiativeSessionNotes(sessionId: $sessionId) { id sessionId authorId author { id firstName lastName } content linkedInteractionId createdAt updatedAt }
}
{
"sessionId": ""
}
POSTinitiativeSessionsinitiative-sessions
Returns InitiativeSessionListResult!
| Argument | Type |
|---|---|
planId | ID! |
filter | InitiativeSessionFilter |
limit | Int |
offset | Int |
sortBy | InitiativeSessionSort |
sortOrder | String |
| Field | Type |
|---|---|
track | String |
sessionType | InitiativeSessionType |
date | AWSDateTime |
from | AWSDateTime |
myAgenda | Boolean |
search | String |
ORAL POSTER SYMPOSIUM PLENARY WORKSHOP BREAKOUT ROUNDTABLE OTHER
START_DATE TITLE
query InitiativeSessions($planId: ID!, $filter: InitiativeSessionFilter, $limit: Int, $offset: Int, $sortBy: InitiativeSessionSort, $sortOrder: String) {
initiativeSessions(planId: $planId, filter: $filter, limit: $limit, offset: $offset, sortBy: $sortBy, sortOrder: $sortOrder) { items { id planId title sessionDate startTime endTime sessionType tracks location abstract timezone publicSessionId productId bookmarkedByMe noteCount documentCount createdAt updatedAt } totalCount limit offset }
}
{
"planId": "",
"filter": {},
"limit": 0,
"offset": 0,
"sortBy": "START_DATE",
"sortOrder": ""
}
initiatives
POSTinitiativeAvailableHcpsinitiatives
Returns OrganizationHcpListResult!
| Argument | Type |
|---|---|
planId | ID! |
filter | OrganizationHcpFilter |
pagination | PaginationInput |
| Field | Type |
|---|---|
npi | String |
firstName | String |
middleName | String |
lastName | String |
name | String |
specialty | String |
institution | String |
organizationInstitutionId | ID |
region | String |
city | String |
state | String |
zip | String |
country | String |
isExUS | Boolean |
isKOL | Boolean |
kolTier | String |
knowledgeStage | String |
recommendedStage | String |
isPublicSynced | Boolean |
ownerId | ID |
hcoId | ID |
statementAlignmentStatus | String |
statementAlignmentStatementId | ID |
misalignedHcpsCohort | Boolean |
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query InitiativeAvailableHcps($planId: ID!, $filter: OrganizationHcpFilter, $pagination: PaginationInput) {
initiativeAvailableHcps(planId: $planId, filter: $filter, pagination: $pagination) { items { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } total }
}
{
"planId": "",
"filter": {},
"pagination": {}
}
POSTinitiativeCategoriesinitiatives
Returns [InitiativeCategory!]!
No arguments.
query InitiativeCategories {
initiativeCategories { id name description sortOrder active }
}
{}
POSTinitiativeColumnFileDownloadUrlinitiatives
Returns InitiativeFileDownloadUrl!
| Argument | Type |
|---|---|
fileUploadId | ID! |
query InitiativeColumnFileDownloadUrl($fileUploadId: ID!) {
initiativeColumnFileDownloadUrl(fileUploadId: $fileUploadId) { downloadUrl fileName expiresIn }
}
{
"fileUploadId": ""
}
POSTinitiativePlaninitiatives
Returns InitiativePlan
| Argument | Type |
|---|---|
id | ID! |
query InitiativePlan($id: ID!) {
initiativePlan(id: $id) { id orgId typeId type { id orgId categoryId name description active } products { id planId productId createdAt } name description status priority startDate dueDate publishedAt completedAt stalledAt lastActivityAt createdById createdAt updatedAt eventStartDate eventEndDate eventLocation timezone sourceConferenceId lastSyncedAt assignees { id planId userId role } hcps { id planId orgHcpId assigneeId role notes attendeeStatus } objectives { id planId title description sortOrder } columns { id planId name columnType sortOrder } companySponsoredEventDetail { id planId eventDate eventEndDate location venueName format virtualMeetingUrl capacity topic createdAt updatedAt } speakers { id planId planHcpId speakerProfileId topic feeAmountUsd contractStatus contractFileId status sortOrder notes createdAt updatedAt } progress { totalTasks completedTasks percentComplete milestoneTotal milestoneComplete } }
}
{
"id": ""
}
POSTinitiativePlanActivityinitiatives
Returns InitiativePlanActivityResult!
| Argument | Type |
|---|---|
planId | ID! |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query InitiativePlanActivity($planId: ID!, $pagination: CursorPaginationInput) {
initiativePlanActivity(planId: $planId, pagination: $pagination) { items { id entity entityId action message changes userId createdAt } nextCursor }
}
{
"planId": "",
"pagination": {}
}
POSTinitiativePlanDocumentsinitiatives
Returns [InitiativePlanDocument!]!
| Argument | Type |
|---|---|
planId | ID! |
query InitiativePlanDocuments($planId: ID!) {
initiativePlanDocuments(planId: $planId) { id planId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
{
"planId": ""
}
POSTinitiativePlanNotesinitiatives
Returns [InitiativePlanNote!]!
| Argument | Type |
|---|---|
planId | ID! |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query InitiativePlanNotes($planId: ID!, $pagination: CursorPaginationInput) {
initiativePlanNotes(planId: $planId, pagination: $pagination) { id planId orgHcpId authorId author { id firstName lastName } content linkedInteractionId createdAt }
}
{
"planId": "",
"pagination": {}
}
POSTinitiativePlansinitiatives
Returns InitiativePlanListResult!
| Argument | Type |
|---|---|
filter | InitiativePlanFilter |
pagination | CursorPaginationInput |
orderBy | InitiativePlanOrderByInput |
| Field | Type |
|---|---|
status | [InitiativePlanStatus!] |
assigneeId | ID |
productIds | [ID!] |
typeId | ID |
orgHcpId | ID |
search | String |
includeDrafts | Boolean |
DRAFT NOT_STARTED IN_PROGRESS STALLED COMPLETE
| Field | Type |
|---|---|
limit | Int |
cursor | String |
| Field | Type |
|---|---|
field | InitiativePlanOrderByField! |
direction | OrderDirection! |
CREATED_AT LAST_ACTIVITY_AT DUE_DATE
ASC DESC
query InitiativePlans($filter: InitiativePlanFilter, $pagination: CursorPaginationInput, $orderBy: InitiativePlanOrderByInput) {
initiativePlans(filter: $filter, pagination: $pagination, orderBy: $orderBy) { items { id orgId typeId name description status priority startDate dueDate publishedAt completedAt stalledAt lastActivityAt createdById createdAt updatedAt eventStartDate eventEndDate eventLocation timezone sourceConferenceId lastSyncedAt } total nextCursor }
}
{
"filter": {},
"pagination": {},
"orderBy": {
"field": "CREATED_AT",
"direction": "ASC"
}
}
POSTinitiativePlanTaskDocumentsinitiatives
Returns [InitiativePlanTaskDocument!]!
| Argument | Type |
|---|---|
taskId | ID! |
query InitiativePlanTaskDocuments($taskId: ID!) {
initiativePlanTaskDocuments(taskId: $taskId) { id taskId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
{
"taskId": ""
}
POSTinitiativePlanTasksinitiatives
Returns InitiativePlanTaskListResult!
| Argument | Type |
|---|---|
filter | InitiativePlanTaskFilter! |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
planId | ID! |
orgHcpId | ID |
assigneeId | ID |
status | [InitiativePlanTaskStatus!] |
objectiveId | ID |
isMilestone | Boolean |
NOT_STARTED IN_PROGRESS COMPLETE
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query InitiativePlanTasks($filter: InitiativePlanTaskFilter!, $pagination: CursorPaginationInput) {
initiativePlanTasks(filter: $filter, pagination: $pagination) { items { id planId contextType taskSourceType objectiveId templateId planHcpId orgHcpId title description assigneeId status priority dueDate isMilestone sortOrder linkedInteractionId completedAt completedById sectionLabel sectionSortOrder objectiveStatus } total nextCursor }
}
{
"filter": {
"planId": ""
},
"pagination": {}
}
POSTinitiativeSessionDocumentDownloadUrlinitiatives
Returns InitiativeFileDownloadUrl!
| Argument | Type |
|---|---|
id | ID! |
query InitiativeSessionDocumentDownloadUrl($id: ID!) {
initiativeSessionDocumentDownloadUrl(id: $id) { downloadUrl fileName expiresIn }
}
{
"id": ""
}
POSTinitiativeTaskDocumentDownloadUrlinitiatives
Returns InitiativeFileDownloadUrl!
| Argument | Type |
|---|---|
id | ID! |
query InitiativeTaskDocumentDownloadUrl($id: ID!) {
initiativeTaskDocumentDownloadUrl(id: $id) { downloadUrl fileName expiresIn }
}
{
"id": ""
}
POSTinitiativeTypesinitiatives
Returns [InitiativeType!]!
| Argument | Type |
|---|---|
categoryId | ID |
query InitiativeTypes($categoryId: ID) {
initiativeTypes(categoryId: $categoryId) { id orgId categoryId category { id name description sortOrder active } name description active }
}
{
"categoryId": ""
}
insights-collab
@-mentions notify tagged users in-app + by email; mentions on a private collection the user cannot open are skipped and returned as warnings ("share it first"). Notifications: polling-based in-app feed (list + mark-read).
POSTinsightImpactReportinsights-collab
Returns InsightImpactReport!
| Argument | Type |
|---|---|
input | InsightImpactReportInput |
| Field | Type |
|---|---|
start | AWSDateTime |
end | AWSDateTime |
query InsightImpactReport($input: InsightImpactReportInput) {
insightImpactReport(input: $input) { range { start end } funnelByOrigin { origin captured becameInsight actioned impactLogged } sourceMix { source count pct } contribution { userId userName actionableCount } impactByCategory { category count } outcomeTypes { outcomeType count } }
}
{
"input": {}
}
POSTlistNotificationsinsights-collab
Returns NotificationList!
| Argument | Type |
|---|---|
unreadOnly | Boolean |
limit | Int |
offset | Int |
query ListNotifications($unreadOnly: Boolean, $limit: Int, $offset: Int) {
listNotifications(unreadOnly: $unreadOnly, limit: $limit, offset: $offset) { items { id orgId recipientUserId type entityType entityId activityId body readAt createdAt } total unreadCount }
}
{
"unreadOnly": false,
"limit": 0,
"offset": 0
}
meeting-prep
Trigger: EXACTLY ONE of organizationHcpId (the HCP-profile "Prep for Meet" button — resolves the soonest upcoming HcpMeeting/AncillaryEvent for that HCP, or ad hoc framing if none) / hcpMeetingId / ancillaryEventId (triggered from that specific meeting/event screen — targets that meeting/event's primary HCP attendee in v1). Regeneration diffs against the most recent prior brief for the same HCP (supersededNewItems / "New since your last prep"). - Guardrail block -> REJECTED, before any LLM call. A single cited item — one discussion angle or one clarifying question.
POSTmeetingPrepBriefmeeting-prep
Returns MeetingPrepBrief
| Argument | Type |
|---|---|
id | ID! |
query MeetingPrepBrief($id: ID!) {
meetingPrepBrief(id: $id) { id orgId orgHcpId hcpMeetingId ancillaryEventId generatedById generatedAt sourceRecords { type id occurredAt url title } outputAngles { text sourceRecordId subItems } outputQuestions { text sourceRecordId subItems } outputRiskFlag riskFlagState supersededNewItems strategyAlignmentAsOf visibility parentBriefId refinementInstruction editKind editedById updatedAt }
}
{
"id": ""
}
POSTmeetingPrepBriefsmeeting-prep
Returns MeetingPrepBriefListResult!
| Argument | Type |
|---|---|
filter | MeetingPrepBriefFilter |
pagination | MeetingPrepBriefPaginationInput |
| Field | Type |
|---|---|
id | ID |
orgHcpId | ID |
hcpMeetingId | ID |
ancillaryEventId | ID |
visibility | MeetingPrepBriefVisibility |
scope | MeetingPrepBriefScope |
PUBLIC PRIVATE
OWN PUBLIC ALL
| Field | Type |
|---|---|
limit | Int |
offset | Int |
query MeetingPrepBriefs($filter: MeetingPrepBriefFilter, $pagination: MeetingPrepBriefPaginationInput) {
meetingPrepBriefs(filter: $filter, pagination: $pagination) { items { id orgId orgHcpId hcpMeetingId ancillaryEventId generatedById generatedAt outputRiskFlag riskFlagState supersededNewItems strategyAlignmentAsOf visibility parentBriefId refinementInstruction editKind editedById updatedAt } totalCount limit offset }
}
{
"filter": {},
"pagination": {}
}
meetings
POSTancillaryEventsmeetings
Returns [AncillaryEvent!]!
| Argument | Type |
|---|---|
planId | ID! |
filter | AncillaryEventFilter |
| Field | Type |
|---|---|
status | AncillaryEventStatus |
productId | ID |
assigneeId | ID |
SCHEDULED COMPLETED CANCELLED
query AncillaryEvents($planId: ID!, $filter: AncillaryEventFilter) {
ancillaryEvents(planId: $planId, filter: $filter) { id planId name ancillaryType description eventDate startTime endTime location productId assigneeId createdById status note product { id orgId name description fdaProductType fdaRegulatoryLabel fdaSourceSystem fdaSourcePrimaryId fdaApplicationNumber fdaSubmissionNumber fdaSponsorName fdaApprovalDate fdaDosageForm fdaRoute fdaStrength fdaDeviceClass fdaProductCode fdaMarketingStatus createdAt updatedAt deletedAt } assignee { id firstName lastName } hcps { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } guests { email name } teamMembers { id firstName lastName } createdAt updatedAt }
}
{
"planId": "",
"filter": {}
}
POSTmeetingDocumentDownloadUrlmeetings
Returns MeetingDocumentDownloadUrl!
| Argument | Type |
|---|---|
id | ID! |
query MeetingDocumentDownloadUrl($id: ID!) {
meetingDocumentDownloadUrl(id: $id) { downloadUrl fileName }
}
{
"id": ""
}
POSTmeetingDocumentsmeetings
Returns [MeetingDocument!]!
| Argument | Type |
|---|---|
meetingId | ID! |
query MeetingDocuments($meetingId: ID!) {
meetingDocuments(meetingId: $meetingId) { id meetingId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
{
"meetingId": ""
}
POSTmeetingNotesmeetings
Returns [MeetingNote!]!
| Argument | Type |
|---|---|
meetingId | ID! |
query MeetingNotes($meetingId: ID!) {
meetingNotes(meetingId: $meetingId) { id meetingId authorId content linkedInteractionId author { id firstName lastName } createdAt updatedAt }
}
{
"meetingId": ""
}
POSTmeetingsmeetings
Returns MeetingListResult!
| Argument | Type |
|---|---|
planId | ID! |
filter | MeetingFilter |
limit | Int |
offset | Int |
| Field | Type |
|---|---|
status | MeetingStatus |
productId | ID |
assigneeId | ID |
date | AWSDate |
INVITED CONFIRMED SCHEDULED ATTENDED DECLINED NOT_ATTENDING
query Meetings($planId: ID!, $filter: MeetingFilter, $limit: Int, $offset: Int) {
meetings(planId: $planId, filter: $filter, limit: $limit, offset: $offset) { items { id planId orgHcpId guestEmail guestName assigneeId createdById status inviteId scheduledDate startTime endTime location productId linkedInteractionId noteCount documentCount createdAt updatedAt } totalCount limit offset statusCounts { status count } }
}
{
"planId": "",
"filter": {},
"limit": 0,
"offset": 0
}
POSToutboundEmailStatusmeetings
Returns OutboundEmailStatus!
No arguments.
query OutboundEmailStatus {
outboundEmailStatus { connected provider sendAsEmail status }
}
{}
POSTplanMeetingMetricsmeetings
Returns PlanMeetingMetrics!
| Argument | Type |
|---|---|
planId | ID! |
query PlanMeetingMetrics($planId: ID!) {
planMeetingMetrics(planId: $planId) { planId meetingsBooked interactionsLogged kolsEngaged ancillaryEvents statusCounts { status count } }
}
{
"planId": ""
}
speaker-programs
POSTorgInitiativeDefaultTasksspeaker-programs
Returns [OrgInitiativeDefaultTask!]!
| Argument | Type |
|---|---|
initiativeTypeId | ID! |
query OrgInitiativeDefaultTasks($initiativeTypeId: ID!) {
orgInitiativeDefaultTasks(initiativeTypeId: $initiativeTypeId) { id initiativeTypeId title description defaultAssigneeRole dueDateOffsetDays isMilestone sortOrder active createdAt updatedAt }
}
{
"initiativeTypeId": ""
}
POSTorgSpeakerEvaluationQuestionsspeaker-programs
Returns [OrgSpeakerEvaluationQuestion!]!
No arguments.
query OrgSpeakerEvaluationQuestions {
orgSpeakerEvaluationQuestions { id text category questionType scaleMin scaleMax isRequired sortOrder active createdAt updatedAt }
}
{}
POSTspeakerContractFilesspeaker-programs
Returns [SpeakerContractFile!]!
| Argument | Type |
|---|---|
speakerProgramSpeakerId | ID! |
query SpeakerContractFiles($speakerProgramSpeakerId: ID!) {
speakerContractFiles(speakerProgramSpeakerId: $speakerProgramSpeakerId) { id fileName s3Path uploadedBy { id firstName lastName } uploadedAt isCurrent viewCount viewedByMeAt viewers { userId viewedAt } }
}
{
"speakerProgramSpeakerId": ""
}
POSTspeakerEngagementHistoryspeaker-programs
Returns [SpeakerProgramSpeaker!]!
| Argument | Type |
|---|---|
speakerProfileId | ID! |
query SpeakerEngagementHistory($speakerProfileId: ID!) {
speakerEngagementHistory(speakerProfileId: $speakerProfileId) { id planId planHcpId planHcp { id planId orgHcpId assigneeId role notes attendeeStatus } speakerProfileId speakerProfile { id orgHcpId onboardingStatus aggregateRating evaluationCount lastEngagementAt bio specialties notes createdAt updatedAt } topic feeAmountUsd contractStatus contractFileId contractFile { id fileName s3Path type status createdAt } status sortOrder notes createdAt updatedAt }
}
{
"speakerProfileId": ""
}
POSTspeakerEvaluationHistoryspeaker-programs
Returns [SpeakerEvaluation!]!
| Argument | Type |
|---|---|
speakerProfileId | ID! |
query SpeakerEvaluationHistory($speakerProfileId: ID!) {
speakerEvaluationHistory(speakerProfileId: $speakerProfileId) { id speakerProgramSpeakerId evaluatorUserId evaluator { id firstName lastName } updatedById updatedBy { id firstName lastName } sessionScore comments submittedAt answers { id evaluationId questionId valueNumeric valueText } createdAt updatedAt }
}
{
"speakerProfileId": ""
}
POSTspeakerFmvGuidancespeaker-programs
Returns SpeakerFmvGuidance!
| Argument | Type |
|---|---|
orgHcpId | ID! |
productId | ID |
query SpeakerFmvGuidance($orgHcpId: ID!, $productId: ID) {
speakerFmvGuidance(orgHcpId: $orgHcpId, productId: $productId) { orgHcpId npi productId productName nature { natureOfPayment } generatedAt }
}
{
"orgHcpId": "",
"productId": ""
}
POSTspeakerPaymentHistoryspeaker-programs
Returns [SpeakerProgramInvoice!]!
| Argument | Type |
|---|---|
speakerProfileId | ID! |
query SpeakerPaymentHistory($speakerProfileId: ID!) {
speakerPaymentHistory(speakerProfileId: $speakerProfileId) { id speakerProgramSpeakerId amountUsd status issuedAt paidAt dueDate fileId file { id fileName s3Path type status createdAt } notes createdAt updatedAt }
}
{
"speakerProfileId": ""
}
POSTspeakerProfilespeaker-programs
Returns SpeakerProfile
| Argument | Type |
|---|---|
id | ID! |
query SpeakerProfile($id: ID!) {
speakerProfile(id: $id) { id orgHcpId orgHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } onboardingStatus aggregateRating evaluationCount lastEngagementAt bio specialties notes createdAt updatedAt }
}
{
"id": ""
}
POSTspeakerProfileByHcpspeaker-programs
Returns SpeakerProfile
| Argument | Type |
|---|---|
orgHcpId | ID! |
query SpeakerProfileByHcp($orgHcpId: ID!) {
speakerProfileByHcp(orgHcpId: $orgHcpId) { id orgHcpId orgHcp { id orgId publicHcpId npi npiNeedsReview npiReviewCandidates ownerId title firstName middleName lastName name specialty institution region city state zip country isExUS regionalLicenseNumber practiceAddress mailingAddress profileData contactData sourceType sourceRecordId sourceData modifiedFields kolTier isKOL kolInfluenceScore kolInfluenceTrend kolReachScore kolTierHistory knowledgeStage knowledgeStageUpdatedAt knowledgeStageUpdatedById recommendedStage recommendedStageUpdatedAt engagementData isPublicSynced lastSyncedAt createdAt updatedAt deletedAt linkSource isPrimary confidenceScore } onboardingStatus aggregateRating evaluationCount lastEngagementAt bio specialties notes createdAt updatedAt }
}
{
"orgHcpId": ""
}
POSTspeakerProfilesspeaker-programs
Returns SpeakerProfileListResult!
| Argument | Type |
|---|---|
filter | SpeakerProfileFilter |
pagination | CursorPaginationInput |
| Field | Type |
|---|---|
onboardingStatus | SpeakerOnboardingStatus |
minRating | Float |
search | String |
NOT_STARTED IN_PROGRESS COMPLETE
| Field | Type |
|---|---|
limit | Int |
cursor | String |
query SpeakerProfiles($filter: SpeakerProfileFilter, $pagination: CursorPaginationInput) {
speakerProfiles(filter: $filter, pagination: $pagination) { items { id orgHcpId onboardingStatus aggregateRating evaluationCount lastEngagementAt bio specialties notes createdAt updatedAt } total nextCursor }
}
{
"filter": {},
"pagination": {}
}
POSTspeakerProgramspeaker-programs
Returns InitiativePlan
| Argument | Type |
|---|---|
planId | ID! |
query SpeakerProgram($planId: ID!) {
speakerProgram(planId: $planId) { id orgId typeId type { id orgId categoryId name description active } products { id planId productId createdAt } name description status priority startDate dueDate publishedAt completedAt stalledAt lastActivityAt createdById createdAt updatedAt eventStartDate eventEndDate eventLocation timezone sourceConferenceId lastSyncedAt assignees { id planId userId role } hcps { id planId orgHcpId assigneeId role notes attendeeStatus } objectives { id planId title description sortOrder } columns { id planId name columnType sortOrder } companySponsoredEventDetail { id planId eventDate eventEndDate location venueName format virtualMeetingUrl capacity topic createdAt updatedAt } speakers { id planId planHcpId speakerProfileId topic feeAmountUsd contractStatus contractFileId status sortOrder notes createdAt updatedAt } progress { totalTasks completedTasks percentComplete milestoneTotal milestoneComplete } }
}
{
"planId": ""
}
POSTspeakerProgramInvoicesspeaker-programs
Returns [SpeakerProgramInvoice!]!
| Argument | Type |
|---|---|
planId | ID! |
query SpeakerProgramInvoices($planId: ID!) {
speakerProgramInvoices(planId: $planId) { id speakerProgramSpeakerId amountUsd status issuedAt paidAt dueDate fileId file { id fileName s3Path type status createdAt } notes createdAt updatedAt }
}
{
"planId": ""
}
POSTspeakerProgramSettingsspeaker-programs
Returns SpeakerProgramSettings!
No arguments.
query SpeakerProgramSettings {
speakerProgramSettings { contractingEnabled speakerEvaluationScaleDirection }
}
{}
POSTspeakerProgramSpeakersspeaker-programs
Returns [SpeakerProgramSpeaker!]!
| Argument | Type |
|---|---|
planId | ID! |
query SpeakerProgramSpeakers($planId: ID!) {
speakerProgramSpeakers(planId: $planId) { id planId planHcpId planHcp { id planId orgHcpId assigneeId role notes attendeeStatus } speakerProfileId speakerProfile { id orgHcpId onboardingStatus aggregateRating evaluationCount lastEngagementAt bio specialties notes createdAt updatedAt } topic feeAmountUsd contractStatus contractFileId contractFile { id fileName s3Path type status createdAt } status sortOrder notes createdAt updatedAt }
}
{
"planId": ""
}
territory-mapping
Territory = name + set of US states; Region = name + set of territories (or countries for multi-country regions, e.g. EMEA). An HCP's territory is DERIVED from its resolved state at query time (no stored FK). Writes require ORG_SETTINGS_MANAGE (Admin/Manager); reads require HCP_READ.
POSTcheckTerritoryStateOverlapterritory-mapping
Returns [TerritoryStateOverlap!]!
| Argument | Type |
|---|---|
states | [String!]! |
excludeTerritoryId | ID |
query CheckTerritoryStateOverlap($states: [String!]!, $excludeTerritoryId: ID) {
checkTerritoryStateOverlap(states: $states, excludeTerritoryId: $excludeTerritoryId) { state territoryId territoryName }
}
{
"states": [
""
],
"excludeTerritoryId": ""
}
POSThcpTerritoryterritory-mapping
Returns OrgTerritory
| Argument | Type |
|---|---|
orgHcpId | ID! |
query HcpTerritory($orgHcpId: ID!) {
hcpTerritory(orgHcpId: $orgHcpId) { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{
"orgHcpId": ""
}
POSTmyRegionsterritory-mapping
Returns [OrgRegion!]!
No arguments.
query MyRegions {
myRegions { id name countries color territories { id name states color hcpCount kolTier1Count createdById createdAt updatedAt } users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{}
POSTmyTerritoriesterritory-mapping
Returns [OrgTerritory!]!
No arguments.
query MyTerritories {
myTerritories { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{}
POSTorgRegionterritory-mapping
Returns OrgRegion
| Argument | Type |
|---|---|
id | ID! |
query OrgRegion($id: ID!) {
orgRegion(id: $id) { id name countries color territories { id name states color hcpCount kolTier1Count createdById createdAt updatedAt } users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{
"id": ""
}
POSTorgRegionsterritory-mapping
Returns [OrgRegion!]!
No arguments.
query OrgRegions {
orgRegions { id name countries color territories { id name states color hcpCount kolTier1Count createdById createdAt updatedAt } users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{}
POSTterritoriesterritory-mapping
Returns [OrgTerritory!]!
No arguments.
query Territories {
territories { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{}
POSTterritoryterritory-mapping
Returns OrgTerritory
| Argument | Type |
|---|---|
id | ID! |
query Territory($id: ID!) {
territory(id: $id) { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
{
"id": ""
}
POSTterritoryMappingConfigterritory-mapping
Returns TerritoryMappingConfig!
No arguments.
query TerritoryMappingConfig {
territoryMappingConfig { operatingCountries territoriesEnabled regionsEnabled }
}
{}
user-email
User-level email integration — per-user Gmail/Outlook mailbox sync that surfaces HCP email communications in the engagement timeline. Self-scoped: every operation acts only on the calling user's own mailbox.
POSTmyEmailConnectionsuser-email
Returns [UserEmailConnectionInfo!]!
No arguments.
query MyEmailConnections {
myEmailConnections { id orgId status provider emailAddress credentialStatus lastSyncedAt lastError }
}
{}