Speer Partner APIRead-only GraphQL · Documentation

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:

  1. An org admin (with the Integrations: Manage permission) opens the Speer app and runs generateOrganizationApiKey from Settings → Integrations → API Access, giving the key a name (e.g. your application's name).
  2. The response contains the accessKeyId (starts with spr_live_ or spr_test_) and the secretKey.
  3. 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.
Keys can be disabled or permanently revoked by your admin at any time; changes take effect within ~30 seconds. Your integration should treat a 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

StageGraphQL endpoint
Developmenthttps://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

HTTPMeaningBody
401Invalid, disabled, or revoked credentials — or a request outside the documented queries.{"errors":[{"errorType":"UnauthorizedException","message":"You are not authorized to make this call."}]}
200 + errorsAuthenticated, 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

Endpoint:

Returns AiJobStatusSnapshot

ArgumentType
topicString!
jobIdID!
GraphQL query
query GetAiJobStatus($topic: String!, $jobId: ID!) {
  getAiJobStatus(topic: $topic, jobId: $jobId) { topic jobId orgId status progressPercent payload error updatedAt }
}
Variables
{
  "topic": "",
  "jobId": ""
}
Request

Example responses

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

Endpoint:

Returns [OrganizationApiKey!]!

No arguments.

GraphQL query
query OrganizationApiKeys {
  organizationApiKeys { id name accessKeyId enabled lastUsedAt createdBy revokedAt revokedBy createdAt updatedAt }
}
Variables
{}
Request

Example responses

conference-intelligence

POSTconferenceIntelligenceCatalogconference-intelligence

Endpoint:
Catalog browse — all conferences, with each row overlayed with the caller's license state. Always returns summary; agenda lives on detail.

Returns ConferenceConnection!

ArgumentType
filterConferenceCatalogFilter
paginationCursorPaginationInput
ConferenceCatalogFilter input fields
FieldType
searchString
dateFromAWSDateTime
dateToAWSDateTime
therapeuticAreaString
hostOrgString
countryString
licensedOnlyBoolean
statusConferenceStatus
ConferenceStatus enum — allowed values

UPCOMING LIVE PAST

CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
query ConferenceIntelligenceCatalog($filter: ConferenceCatalogFilter, $pagination: CursorPaginationInput) {
  conferenceIntelligenceCatalog(filter: $filter, pagination: $pagination) { items { meetingId isLicensed status licensedAt expiresAt } total nextCursor }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTconferenceIntelligenceDetailconference-intelligence

Endpoint:
Detail page. If licensed, agenda counts + AI summary are populated. If unlicensed, `gated: true` and detail fields are null.

Returns ConferenceDetail!

ArgumentType
conferenceIdID!
GraphQL query
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 } }
}
Variables
{
  "conferenceId": ""
}
Request

Example responses

POSTconferenceScrapeRequestsconference-intelligence

Endpoint:
Customer-submitted scrape requests. Caller sees their own org's requests by default; Speer admins can pass orgId to scope or omit for global feed.

Returns [ConferenceScrapeRequest!]!

ArgumentType
filterConferenceScrapeRequestFilter
ConferenceScrapeRequestFilter input fields
FieldType
statusConferenceScrapeRequestStatus
orgIdID
ConferenceScrapeRequestStatus enum — allowed values

REQUESTED IN_PROGRESS COMPLETED DECLINED

GraphQL query
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 }
}
Variables
{
  "filter": {}
}
Request

Example responses

POSThcpSpeakingAtConferencesconference-intelligence

Endpoint:
"Speaking at" feed for an HCP profile section.

Returns [HcpSpeakingAtConference!]!

ArgumentType
orgHcpIdID!
filterHcpSpeakingAtConferenceFilter
HcpSpeakingAtConferenceFilter input fields
FieldType
dateFromAWSDateTime
dateToAWSDateTime
licensedOnlyBoolean
GraphQL query
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 }
}
Variables
{
  "orgHcpId": "",
  "filter": {}
}
Request

Example responses

POSTlicensedOrgConferencesconference-intelligence

Endpoint:
The org's licensed conferences (My Conferences).

Returns OrgConferenceConnection!

ArgumentType
paginationCursorPaginationInput
CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
query LicensedOrgConferences($pagination: CursorPaginationInput) {
  licensedOrgConferences(pagination: $pagination) { items { id meetingId source grantedById expiresAt notes createdAt } total nextCursor }
}
Variables
{
  "pagination": {}
}
Request

Example responses

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

Endpoint:

Returns OrgContact

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorgContactscontacts

Endpoint:

Returns OrgContactListResult!

ArgumentType
filterOrgContactFilter
paginationPaginationInput
OrgContactFilter input fields
FieldType
searchString
contactTypeString
institutionString
linkedToHcpBoolean
hcoIdID
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

core

POSTalignmentByHCPcore

Endpoint:
Profile panel: LATEST assessment per ACTIVE statement for one HCP

Returns AlignmentResult!

ArgumentType
orgHcpIdID!
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "orgHcpId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTalignmentByStatementcore

Endpoint:
Statement Performance: latest-per-HCP label counts (LOW confidence excluded)

Returns AlignmentByStatementResult!

ArgumentType
statementIdID!
GraphQL query
query AlignmentByStatement($statementId: ID!) {
  alignmentByStatement(statementId: $statementId) { statementId total aligned neutral misaligned alignedPct neutralPct misalignedPct }
}
Variables
{
  "statementId": ""
}
Request

Example responses

POSTalignmentHistorycore

Endpoint:
Full append-only assessment time-series for one HCP (passive monitoring)

Returns AlignmentResult!

ArgumentType
orgHcpIdID!
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "orgHcpId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTalignmentScoreTrendcore

Endpoint:
Alignment Score trended from daily snapshots; defaults to last 12 months

Returns AlignmentScoreTrendResult!

ArgumentType
startDateAWSDate
endDateAWSDate
GraphQL query
query AlignmentScoreTrend($startDate: AWSDate, $endDate: AWSDate) {
  alignmentScoreTrend(startDate: $startDate, endDate: $endDate) { points { snapshotDate alignmentScore statementCount assessedCount } }
}
Variables
{
  "startDate": "2026-01-01",
  "endDate": "2026-01-01"
}
Request

Example responses

POSTanalyzeSentimentcore

Endpoint:

Returns SentimentResult!

ArgumentType
textString!
GraphQL query
query AnalyzeSentiment($text: String!) {
  analyzeSentiment(text: $text) { sentiment confidence adverseEventDetected adverseEventConfidence adverseEventType adverseEventDetail severityGrade }
}
Variables
{
  "text": ""
}
Request

Example responses

POSTcategoriescore

Endpoint:

Returns CategoryListResult!

ArgumentType
filterCategoryFilter
paginationPaginationInput
CategoryFilter input fields
FieldType
nameString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Categories($filter: CategoryFilter, $pagination: PaginationInput) {
  categories(filter: $filter, pagination: $pagination) { items { id orgId name createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTcategorycore

Endpoint:

Returns Category

ArgumentType
idID!
GraphQL query
query Category($id: ID!) {
  category(id: $id) { id orgId name createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTclinicalTrialcore

Endpoint:

Returns ClinicalTrial

ArgumentType
nctIdString!
GraphQL query
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 }
}
Variables
{
  "nctId": ""
}
Request

Example responses

POSTclinicalTrialscore

Endpoint:
Clinical Trials

Returns ClinicalTrialListResult!

ArgumentType
npiString!
limitInt
offsetInt
overallStatusString
phaseString
studyTypeString
hasResultsBoolean
sponsorString
conditionString
interventionString
countryString
sortByString
sortOrderString
GraphQL query
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 }
}
Variables
{
  "npi": "",
  "limit": 0,
  "offset": 0,
  "overallStatus": "",
  "phase": "",
  "studyType": "",
  "hasResults": false,
  "sponsor": "",
  "condition": "",
  "intervention": "",
  "country": "",
  "sortBy": "",
  "sortOrder": ""
}
Request

Example responses

POSTconferenceAttendeecore

Endpoint:
Fetch a single attendee.

Returns ConferenceAttendee

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTconversationcore

Endpoint:

Returns Conversation

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTconversationscore

Endpoint:
Conversation queries

Returns ConversationListResult!

ArgumentType
filterConversationFilter
paginationPaginationInput
ConversationFilter input fields
FieldType
userIdID
searchString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Conversations($filter: ConversationFilter, $pagination: PaginationInput) {
  conversations(filter: $filter, pagination: $pagination) { total limit offset remaining items { id orgId userId title createdAt updatedAt deletedAt messageCount } }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTemergingSignalscore

Endpoint:
Always available.

Returns EmergingSignalsPayload!

No arguments.

GraphQL query
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 }
}
Variables
{}
Request

Example responses

POSTengagementscore

Endpoint:

Returns EngagementTimelineResponse!

ArgumentType
inputEngagementsInput!
EngagementsInput input fields
FieldType
organizationHcpIdID!
fromAWSDateTime
toAWSDateTime
includeDeletedBoolean
insightStatusString
interactionStatusString
insightsLimitInt
insightsOffsetInt
interactionsLimitInt
interactionsOffsetInt
timelineLimitInt
timelineOffsetInt
emailsLimitInt
emailsOffsetInt
GraphQL query
query Engagements($input: EngagementsInput!) {
  engagements(input: $input) { orgHcpId timeline { __typename } counts { insights interactions total emails } }
}
Variables
{
  "input": {
    "organizationHcpId": ""
  }
}
Request

Example responses

POSTexpandConferenceSignalNodecore

Endpoint:
Mind-map Mode-A click-to-expand: 1-hop neighborhood of a node from a report's stored graph + the signals justifying those edges. Synchronous (no agent). Returns { reportId, planId, center, nodes, edges, signals, neighborCount }.

Returns AWSJSON

ArgumentType
reportIdID!
nodeIdID!
GraphQL query
query ExpandConferenceSignalNode($reportId: ID!, $nodeId: ID!) {
  expandConferenceSignalNode(reportId: $reportId, nodeId: $nodeId)
}
Variables
{
  "reportId": "",
  "nodeId": ""
}
Request

Example responses

POSTexpandDrugSignalNodecore

Endpoint:
Mind-map Mode-A click-to-expand: 1-hop neighborhood of a node from a report's stored graph + the signals justifying those edges. Synchronous (no agent). Returns { reportId, drugName, center, nodes, edges, signals, neighborCount }.

Returns AWSJSON

ArgumentType
reportIdID!
nodeIdID!
GraphQL query
query ExpandDrugSignalNode($reportId: ID!, $nodeId: ID!) {
  expandDrugSignalNode(reportId: $reportId, nodeId: $nodeId)
}
Variables
{
  "reportId": "",
  "nodeId": ""
}
Request

Example responses

POSTfdaApprovedDrugcore

Endpoint:

Returns FDAApprovedDrug

ArgumentType
idID!
GraphQL query
query FdaApprovedDrug($id: ID!) {
  fdaApprovedDrug(id: $id) { id name createdAt updatedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTfdaApprovedDrugscore

Endpoint:

Returns FDAApprovedDrugListResult!

ArgumentType
filterFDAApprovedDrugFilter
paginationPaginationInput
FDAApprovedDrugFilter input fields
FieldType
nameString
searchString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query FdaApprovedDrugs($filter: FDAApprovedDrugFilter, $pagination: PaginationInput) {
  fdaApprovedDrugs(filter: $filter, pagination: $pagination) { items { id name createdAt updatedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTfdaProductcore

Endpoint:

Returns FDAProduct

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTfdaProductscore

Endpoint:

Returns FDAProductListResult!

ArgumentType
filterFDAProductFilter
paginationPaginationInput
FDAProductFilter input fields
FieldType
productTypeFDAProductType
regulatoryLabelFDARegulatoryLabel
sourceSystemFDASourceSystem
searchString
dateFromAWSDateTime
dateToAWSDateTime
FDAProductType enum — allowed values

drug device

FDARegulatoryLabel enum — allowed values

pre_market_510k fda_approved

FDASourceSystem enum — allowed values

openfda_510k openfda_pma drugsfda

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTgenerateSyntheticHcpNpicore

Endpoint:

Returns String!

No arguments.

GraphQL query
query GenerateSyntheticHcpNpi {
  generateSyntheticHcpNpi
}
Variables
{}
Request

Example responses

POSTgetConferenceAttendeeImportHeaderscore

Endpoint:

Returns ConferenceAttendeeImportHeaders!

ArgumentType
importJobIdID!
GraphQL query
query GetConferenceAttendeeImportHeaders($importJobId: ID!) {
  getConferenceAttendeeImportHeaders(importJobId: $importJobId) { headers sampleRows totalRows targetFields }
}
Variables
{
  "importJobId": ""
}
Request

Example responses

POSTgetConferenceAttendeeImportJobcore

Endpoint:

Returns ConferenceAttendeeImportJob

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTgetConferenceAttendeeImportTemplateUrlcore

Endpoint:
Bulk Conference Attendee CSV/XLSX import — see types above for the flow.

Returns ConferenceAttendeeImportTemplateUrl!

No arguments.

GraphQL query
query GetConferenceAttendeeImportTemplateUrl {
  getConferenceAttendeeImportTemplateUrl { url fileName expiresInSeconds }
}
Variables
{}
Request

Example responses

POSTgetConferenceExportJobcore

Endpoint:
Async conference export — poll for status + the presigned downloadUrl.

Returns ConferenceExportJob

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTgetConferenceSignalsReportcore

Endpoint:
Conference-Signals (CONFERENCE_INTEL) — read persisted reports. Requires INSIGHT_REPORT_READ. Parallel clone of the drug-signals reads, scoped to an InitiativePlan (scopeKey = planId) instead of a drug.

Returns ConferenceSignalsReport

ArgumentType
idID!
GraphQL query
query GetConferenceSignalsReport($id: ID!) {
  getConferenceSignalsReport(id: $id) { id orgId userId planId scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTgetDrugSignalsReportcore

Endpoint:
Drug-Signals (DRUG_INTEL) — read persisted reports. Requires INSIGHT_REPORT_READ.

Returns DrugSignalsReport

ArgumentType
idID!
GraphQL query
query GetDrugSignalsReport($id: ID!) {
  getDrugSignalsReport(id: $id) { id orgId userId drugName scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTgetHcpCaptureMatchResultcore

Endpoint:
HCP Card Capture (mobile) — fetch a previously-started capture.

Returns MatchHcpCapturePayload

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTgetInteractionFormDefinitioncore

Endpoint:

Returns InteractionTemplate!

ArgumentType
templateIdID!
GraphQL query
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 } }
}
Variables
{
  "templateId": ""
}
Request

Example responses

POSTgetMeetingAiSummarycore

Endpoint:
AI-generated 1–2 paragraph overview of a meeting. Returns null when nothing has been generated yet — call generateMeetingAiSummary first.

Returns MeetingAiSummary

ArgumentType
meetingIdID!
GraphQL query
query GetMeetingAiSummary($meetingId: ID!) {
  getMeetingAiSummary(meetingId: $meetingId) { meetingId status content webSources errorMessage generatedAt updatedAt }
}
Variables
{
  "meetingId": ""
}
Request

Example responses

POSTgetSalesforceAssumptionscore

Endpoint:

Returns SalesforceAssumptionsConfig

No arguments.

GraphQL query
query GetSalesforceAssumptions {
  getSalesforceAssumptions { hcpSourceType ownerMappingMode mslOwnerField phoneEmailPriority addressSource npiRequired customAddressFields }
}
Variables
{}
Request

Example responses

POSTgetSalesforceConfigcore

Endpoint:

Returns SalesforceOAuthConfig

No arguments.

GraphQL query
query GetSalesforceConfig {
  getSalesforceConfig { clientId clientSecret redirectUri loginUrl }
}
Variables
{}
Request

Example responses

POSTgetSalesforceImportConfigcore

Endpoint:

Returns SalesforceImportConfig

No arguments.

GraphQL query
query GetSalesforceImportConfig {
  getSalesforceImportConfig { hcpSourceObject hcoSourceObject hcpEnabled hcoEnabled importFilters }
}
Variables
{}
Request

Example responses

POSTgetSalesforceMappingscore

Endpoint:

Returns SalesforceFieldMappingsConfig

No arguments.

GraphQL query
query GetSalesforceMappings {
  getSalesforceMappings { hcpMappings { canonicalField salesforceField transform defaultValue required } hcoMappings { canonicalField salesforceField transform defaultValue required } }
}
Variables
{}
Request

Example responses

POSThcpcore

Endpoint:

Returns HCP

ArgumentType
idID!
GraphQL query
query Hcp($id: ID!) {
  hcp(id: $id) { id orgId name specialty institution region email createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSThcpInteractioncore

Endpoint:

Returns HCPInteraction

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSThcpInteractionscore

Endpoint:

Returns HcpInteractionListResult!

ArgumentType
filterHcpInteractionFilter
paginationPaginationInput
HcpInteractionFilter input fields
FieldType
organizationHcpIdString
templateIdID
statusHcpInteractionStatus
dateFromAWSDateTime
dateToAWSDateTime
HcpInteractionStatus enum — allowed values

SUBMITTED SAVED

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSThcpscore

Endpoint:

Returns HcpListResult!

ArgumentType
filterHcpFilter
paginationPaginationInput
HcpFilter input fields
FieldType
nameString
specialtyString
institutionString
regionString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Hcps($filter: HcpFilter, $pagination: PaginationInput) {
  hcps(filter: $filter, pagination: $pagination) { items { id orgId name specialty institution region email createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSThcpSummarycore

Endpoint:

Returns HcpSummary

ArgumentType
organizationHcpIdID!
GraphQL query
query HcpSummary($organizationHcpId: ID!) {
  hcpSummary(organizationHcpId: $organizationHcpId) { id orgId organizationHcpId title professionalProfile publicationHighlights engagementOverview clinicalTrials recentNews nextBestActions fullSummary nextActions sources createdAt updatedAt }
}
Variables
{
  "organizationHcpId": ""
}
Request

Example responses

POSThcpXAccountcore

Endpoint:

Returns HcpXAccount

ArgumentType
organizationHcpIdID!
GraphQL query
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 }
}
Variables
{
  "organizationHcpId": ""
}
Request

Example responses

POSThcpXTweetscore

Endpoint:

Returns XTweetListResult!

ArgumentType
hcpXAccountIdID!
filterXTweetFilter
paginationPaginationInput
XTweetFilter input fields
FieldType
tweetTypeString
fromDateAWSDateTime
toDateAWSDateTime
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "hcpXAccountId": "",
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSThealthcore

Endpoint:

Returns String!

No arguments.

GraphQL query
query Health {
  health
}
Variables
{}
Request

Example responses

POSTinsightcore

Endpoint:

Returns Insight

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinsightActivitycore

Endpoint:
Items merge machine-written AuditLog rows (kind AUDIT) with user-authored action-log notes (kind ACTIVITY).

Returns ActivityHistory!

ArgumentType
insightIdID
groupIdID
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "insightId": "",
  "groupId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTinsightCustomFieldcore

Endpoint:

Returns InsightCustomField

ArgumentType
idID!
GraphQL query
query InsightCustomField($id: ID!) {
  insightCustomField(id: $id) { id orgId name type createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinsightCustomFieldscore

Endpoint:

Returns [InsightCustomField!]!

No arguments.

GraphQL query
query InsightCustomFields {
  insightCustomFields { id orgId name type createdAt updatedAt deletedAt }
}
Variables
{}
Request

Example responses

POSTinsightGroupcore

Endpoint:

Returns InsightGroup

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinsightGroupscore

Endpoint:

Returns [InsightGroup!]!

No arguments.

GraphQL query
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 } }
}
Variables
{}
Request

Example responses

POSTinsightReportcore

Endpoint:

Returns InsightReport

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinsightReportscore

Endpoint:
Report queries

Returns InsightReportListResult!

ArgumentType
filterInsightReportFilter
paginationPaginationInput
InsightReportFilter input fields
FieldType
userIdID
statusString
searchString
startDateAWSDateTime
endDateAWSDateTime
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTinteractionTemplatecore

Endpoint:

Returns InteractionTemplate!

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinteractionTemplatescore

Endpoint:

Returns [InteractionTemplate!]!

ArgumentType
filterListInteractionTemplatesFilter
ListInteractionTemplatesFilter input fields
FieldType
statusInteractionTemplateStatus
includeDeletedBoolean
InteractionTemplateStatus enum — allowed values

ACTIVE ARCHIVED

GraphQL query
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 } }
}
Variables
{
  "filter": {}
}
Request

Example responses

POSTkbExtractionUploadUrlcore

Endpoint:
Knowledge Base AI extraction — presigned upload URL for ephemeral file

Returns KbExtractionPresignedUrl!

ArgumentType
inputKbExtractionUploadUrlInput!
KbExtractionUploadUrlInput input fields
FieldType
jobIdID
fileNameString!
contentTypeString!
fileSizeInt!
GraphQL query
query KbExtractionUploadUrl($input: KbExtractionUploadUrlInput!) {
  kbExtractionUploadUrl(input: $input) { uploadUrl s3Key jobId expiresInSeconds }
}
Variables
{
  "input": {
    "fileName": "",
    "contentType": "",
    "fileSize": 0
  }
}
Request

Example responses

POSTknowledgeStageConfigcore

Endpoint:
Knowledge Stage queries

Returns KnowledgeStageConfig

No arguments.

GraphQL query
query KnowledgeStageConfig {
  knowledgeStageConfig { id orgId mode stages businessRules createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
Variables
{}
Request

Example responses

POSTknowledgeStageDistributioncore

Endpoint:

Returns KnowledgeStageDistributionResult!

No arguments.

GraphQL query
query KnowledgeStageDistribution {
  knowledgeStageDistribution { manual { stage count } recommended { stage count } total }
}
Variables
{}
Request

Example responses

POSTknowledgeStageHistorycore

Endpoint:

Returns KnowledgeStageHistoryResult!

ArgumentType
orgHcpIdID!
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "orgHcpId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceAttendeeImportJobscore

Endpoint:

Returns ConferenceAttendeeImportJobList!

ArgumentType
meetingIdID
statusConferenceAttendeeImportJobStatus
limitInt
offsetInt
ConferenceAttendeeImportJobStatus enum — allowed values

UPLOADED MAPPING_REQUIRED PROCESSING COMPLETED COMPLETED_WITH_ERRORS FAILED

GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "status": "UPLOADED",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceAttendeeImportRowscore

Endpoint:

Returns ConferenceAttendeeImportRowList!

ArgumentType
importJobIdID!
statusConferenceAttendeeImportRowStatus
limitInt
offsetInt
ConferenceAttendeeImportRowStatus enum — allowed values

IMPORTED NEEDS_REVIEW FAILED SKIPPED_DUPLICATE

GraphQL query
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 }
}
Variables
{
  "importJobId": "",
  "status": "IMPORTED",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceAttendeescore

Endpoint:
The actual conference roster — every ConferenceAttendee row for the given meeting, regardless of which import created them (or whether they were added manually via createConferenceAttendee). Filters: - linked: true → only attendees linked to an OrganizationHCP - linked: false → only free-form attendees (organizationHcpId is null) - search → case-insensitive prefix match on fullName / npi / email

Returns ConferenceAttendeeListResult!

ArgumentType
meetingIdID!
linkedBoolean
searchString
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "linked": false,
  "search": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceLocationscore

Endpoint:
Distinct locations across the meeting's sessions, with session counts.

Returns ConferenceLocationListResult!

ArgumentType
meetingIdID!
limitInt
offsetInt
GraphQL query
query ListConferenceLocations($meetingId: ID!, $limit: Int, $offset: Int) {
  listConferenceLocations(meetingId: $meetingId, limit: $limit, offset: $offset) { items { name sessionCount } totalCount limit offset }
}
Variables
{
  "meetingId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceSignalsReportscore

Endpoint:

Returns [ConferenceSignalsReport!]!

ArgumentType
planIdString
limitInt
GraphQL query
query ListConferenceSignalsReports($planId: String, $limit: Int) {
  listConferenceSignalsReports(planId: $planId, limit: $limit) { id orgId userId planId scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
Variables
{
  "planId": "",
  "limit": 0
}
Request

Example responses

POSTlistConferenceSpeakerscore

Endpoint:
Deduped speakers across a conference's sessions. Sortable by session count (default) or full name. `search` matches `fullName` case-insensitive.

Returns ConferenceSpeakerListResult!

ArgumentType
meetingIdID!
searchString
limitInt
offsetInt
sortByConferenceSpeakerSort
sortOrderString
ConferenceSpeakerSort enum — allowed values

SESSION_COUNT FULL_NAME

GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "search": "",
  "limit": 0,
  "offset": 0,
  "sortBy": "SESSION_COUNT",
  "sortOrder": ""
}
Request

Example responses

POSTlistConferenceSpeakerSessionscore

Endpoint:
Sessions a single speaker appears in within a conference. Speaker identity is resolved from the `presenterId` (a representative SessionPresenter row from `listConferenceSpeakers`) — we look up its normalized name and return every session in the meeting that has any presenter with that name.

Returns MeetingSessionListResult!

ArgumentType
meetingIdID!
presenterIdID!
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "presenterId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConferenceTopSpeakerscore

Endpoint:
Top N speakers by `sessionCount` within a conference — convenience wrapper over `listConferenceSpeakers` for the "Top Speakers" card.

Returns ConferenceSpeakerListResult!

ArgumentType
meetingIdID!
limitInt
GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "limit": 0
}
Request

Example responses

POSTlistConferenceTrackscore

Endpoint:
Distinct tracks across the meeting's sessions, with session counts. Sorted by sessionCount DESC; supports paging for very large lists.

Returns ConferenceTrackListResult!

ArgumentType
meetingIdID!
limitInt
offsetInt
GraphQL query
query ListConferenceTracks($meetingId: ID!, $limit: Int, $offset: Int) {
  listConferenceTracks(meetingId: $meetingId, limit: $limit, offset: $offset) { items { name sessionCount } totalCount limit offset }
}
Variables
{
  "meetingId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTlistConfigurableFieldscore

Endpoint:

Returns [ConfigurableField!]!

ArgumentType
moduleConfigurableFieldModule!
ConfigurableFieldModule enum — allowed values

INTERACTION INSIGHT

GraphQL query
query ListConfigurableFields($module: ConfigurableFieldModule!) {
  listConfigurableFields(module: $module) { id label module type required referenceSource referenceQuery enumValues embeddingSafe }
}
Variables
{
  "module": "INTERACTION"
}
Request

Example responses

POSTlistDrugSignalsReportscore

Endpoint:

Returns [DrugSignalsReport!]!

ArgumentType
drugNameString
limitInt
GraphQL query
query ListDrugSignalsReports($drugName: String, $limit: Int) {
  listDrugSignalsReports(drugName: $drugName, limit: $limit) { id orgId userId drugName scope signals graph metrics pdfUrl signalsAnalyzed generatedAt }
}
Variables
{
  "drugName": "",
  "limit": 0
}
Request

Example responses

POSTlistExportcore

Endpoint:
Generic data-only export for any supported list view. Reuses existing list query/RBAC logic per entity.

Returns ListExportPayload!

ArgumentType
inputListExportInput!
ListExportInput input fields
FieldType
entityExportEntity
savedReportIdID
filtersAWSJSON
sortAWSJSON
visibleColumns[String!]
hcpIdID
meetingIdID
cursorString
limitInt
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

GraphQL query
query ListExport($input: ListExportInput!) {
  listExport(input: $input) { mode rows columns { key label } total returned nextCursor hasMore asyncJobMessage }
}
Variables
{
  "input": {}
}
Request

Example responses

POSTlistInsightscore

Endpoint:

Returns InsightListResponse!

ArgumentType
paginationPaginationInput
filterInsightFilter
sortInsightSortInput
PaginationInput input fields
FieldType
limitInt
offsetInt
InsightFilter input fields
FieldType
insightIdString
categoryIdID
priorityIdID
organizationHcpIdID
organizationHcoIdID
locationIdID
sentimentString
statusString
sourceInsightChannel
originInsightOrigin
createdByIdID
collectedAtFromString
collectedAtToString
searchString
InsightChannel enum — allowed values

FIELD_MEDICAL PUBLICATION CLINICAL_TRIAL CONFERENCE REGULATORY_NEWS PHARMACOVIGILANCE SOCIAL_KOL

InsightOrigin enum — allowed values

FIELD_LOGGED AI_DERIVED

InsightSortInput input fields
FieldType
fieldInsightSortField!
directionSortDirection
sentimentOrderSentimentSortOrder
statusOrderStatusSortOrder
InsightSortField enum — allowed values

CREATED_AT COLLECTED_AT STATUS CATEGORY PRIORITY SENTIMENT HCP_NAME LOCATION

SortDirection enum — allowed values

ASC DESC

SentimentSortOrder enum — allowed values

NEGATIVE_FIRST POSITIVE_FIRST NEUTRAL_FIRST

StatusSortOrder enum — allowed values

OBSERVATION_FIRST IMPACT_FIRST

GraphQL query
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 }
}
Variables
{
  "pagination": {},
  "filter": {},
  "sort": {
    "field": "CREATED_AT"
  }
}
Request

Example responses

POSTlistMeetingGroupscore

Endpoint:
Meetings (scraped events grouped by meeting)

Returns MeetingGroupListResult!

ArgumentType
filterMeetingsFilterInput
limitInt
offsetInt
sortByMeetingGroupSort
sortOrderString
MeetingsFilterInput input fields
FieldType
idID
timeframeMeetingTimeframe
startAfterAWSDateTime
startBeforeAWSDateTime
sourceKeyString
meetingTypeString
meetingNameSearchString
categoryString
sessionTypeString
titleSearchString
textSearchString
trackSearchString
npiString
presenterRoleString
bookmarkedOnlyBoolean
therapeuticAreas[String!]
MeetingTimeframe enum — allowed values

PAST UPCOMING ALL

MeetingGroupSort enum — allowed values

START_DATE MEETING_NAME SESSION_COUNT

GraphQL query
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 }
}
Variables
{
  "filter": {},
  "limit": 0,
  "offset": 0,
  "sortBy": "START_DATE",
  "sortOrder": ""
}
Request

Example responses

POSTlistMeetingSessionscore

Endpoint:
Sessions belonging to a specific meeting, with pagination + filters.

Returns MeetingSessionListResult!

ArgumentType
meetingIdID!
filterMeetingSessionsFilterInput
limitInt
offsetInt
sortByMeetingSessionSort
sortOrderString
MeetingSessionsFilterInput input fields
FieldType
idID
categoryString
sessionTypeString
titleSearchString
textSearchString
trackSearchString
npiString
presenterRoleString
startAfterAWSDateTime
startBeforeAWSDateTime
MeetingSessionSort enum — allowed values

START_DATE TITLE

GraphQL query
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 }
}
Variables
{
  "meetingId": "",
  "filter": {},
  "limit": 0,
  "offset": 0,
  "sortBy": "START_DATE",
  "sortOrder": ""
}
Request

Example responses

POSTlistTherapeuticAreascore

Endpoint:
Global shared reference table backing the `therapeuticArea` configurable field.

Returns [TherapeuticArea!]!

No arguments.

GraphQL query
query ListTherapeuticAreas {
  listTherapeuticAreas { id slug name }
}
Variables
{}
Request

Example responses

POSTlistWorkflowTablescore

Endpoint:

Returns WorkflowTableListResult!

ArgumentType
filterWorkflowTableFilter
paginationPaginationInput
WorkflowTableFilter input fields
FieldType
scopeString
tableModeString
visibilityString
searchString
includeArchivedBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTlocationcore

Endpoint:

Returns Location

ArgumentType
idID!
GraphQL query
query Location($id: ID!) {
  location(id: $id) { id orgId name createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTlocationscore

Endpoint:

Returns LocationListResult!

ArgumentType
filterLocationFilter
paginationPaginationInput
LocationFilter input fields
FieldType
nameString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Locations($filter: LocationFilter, $pagination: PaginationInput) {
  locations(filter: $filter, pagination: $pagination) { items { id orgId name createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTmecore

Endpoint:

Returns User!

No arguments.

GraphQL query
query Me {
  me { id firstName lastName }
}
Variables
{}
Request

Example responses

POSTmedicaidSpendingByNpicore

Endpoint:

Returns MedicaidSpendingResult!

ArgumentType
npiString!
filterMedicaidSpendingFilterInput
MedicaidSpendingFilterInput input fields
FieldType
monthInt
yearInt
roleMedicaidNpiRole
MedicaidNpiRole enum — allowed values

BILLING SERVICING EITHER

GraphQL query
query MedicaidSpendingByNpi($npi: String!, $filter: MedicaidSpendingFilterInput) {
  medicaidSpendingByNpi(npi: $npi, filter: $filter) { npi items { hcpcsCode hcpcsDescription entries hcpcsCategory claimMonth totalBeneficiaries totalClaims totalPaid } }
}
Variables
{
  "npi": "",
  "filter": {}
}
Request

Example responses

POSTmedicalInsightsDashboardcore

Endpoint:

Returns MedicalInsightsDashboard!

ArgumentType
periodDashboardPeriod!
startString
endString
locationIdString
regionString
DashboardPeriod enum — allowed values

WEEK MONTH CUSTOM

GraphQL query
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 } }
}
Variables
{
  "period": "WEEK",
  "start": "",
  "end": "",
  "locationId": "",
  "region": ""
}
Request

Example responses

POSTmyRolecore

Endpoint:

Returns OrgRole!

No arguments.

GraphQL query
query MyRole {
  myRole { role orgId }
}
Variables
{}
Request

Example responses

POSTnewsArticlescore

Endpoint:
News queries

Returns NewsArticlesResponse!

ArgumentType
sourceCategoryString
sourceDomainString
startDateAWSDateTime
endDateAWSDateTime
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "sourceCategory": "",
  "sourceDomain": "",
  "startDate": "2026-01-01T00:00:00Z",
  "endDate": "2026-01-01T00:00:00Z",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTnewsSummarycore

Endpoint:
News Summary — pass any date + period, backend resolves the matching week/month

Returns NewsSummaryResult

ArgumentType
dateAWSDateTime!
periodString!
GraphQL query
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 }
}
Variables
{
  "date": "2026-01-01T00:00:00Z",
  "period": ""
}
Request

Example responses

POSTopenPaymentsByNpicore

Endpoint:

Returns OpenPaymentsByNpiResponse!

ArgumentType
npiString!
programYearInt
paginationPaginationInput
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query OpenPaymentsByNpi($npi: String!, $programYear: Int, $pagination: PaginationInput) {
  openPaymentsByNpi(npi: $npi, programYear: $programYear, pagination: $pagination) { npi programYear general { total } ownership { total } research { total } }
}
Variables
{
  "npi": "",
  "programYear": 0,
  "pagination": {}
}
Request

Example responses

POSTorganizationConfigcore

Endpoint:

Returns OrganizationConfig

ArgumentType
typeOrganizationConfigType
OrganizationConfigType enum — allowed values

FISCAL INTERACTION_DEFAULT SALESFORCE_CONFIG SALESFORCE_IMPORT_CONFIG SALESFORCE_FIELD_MAPPINGS SALESFORCE_ASSUMPTIONS IMAP_CONFIG INSIGHT_FIELDS

GraphQL query
query OrganizationConfig($type: OrganizationConfigType) {
  organizationConfig(type: $type) { id orgId type config createdAt updatedAt deletedAt }
}
Variables
{
  "type": "FISCAL"
}
Request

Example responses

POSTorganizationHcpcore

Endpoint:

Returns OrganizationHCP

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorganizationHcpscore

Endpoint:

Returns OrganizationHcpListResult!

ArgumentType
filterOrganizationHcpFilter
paginationPaginationInput
OrganizationHcpFilter input fields
FieldType
npiString
firstNameString
middleNameString
lastNameString
nameString
specialtyString
institutionString
organizationInstitutionIdID
regionString
cityString
stateString
zipString
countryString
isExUSBoolean
isKOLBoolean
kolTierString
knowledgeStageString
recommendedStageString
isPublicSyncedBoolean
ownerIdID
hcoIdID
statementAlignmentStatusString
statementAlignmentStatementIdID
misalignedHcpsCohortBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTorganizationInstitutioncore

Endpoint:

Returns OrganizationInstitution

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorganizationInstitutionscore

Endpoint:

Returns OrganizationInstitutionListResult!

ArgumentType
filterOrganizationInstitutionFilter
paginationPaginationInput
OrganizationInstitutionFilter input fields
FieldType
nameString
cityString
stateString
zipString
countryString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTorganizationSummariescore

Endpoint:

Returns OrganizationSummaryListResult!

ArgumentType
paginationPaginationInput
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "pagination": {}
}
Request

Example responses

POSTorganizationSummarycore

Endpoint:

Returns OrganizationSummary

ArgumentType
periodStartDateAWSDateTime!
periodString
autoGenerateBoolean
GraphQL query
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 }
}
Variables
{
  "periodStartDate": "2026-01-01T00:00:00Z",
  "period": "",
  "autoGenerate": false
}
Request

Example responses

POSTorganizationSummaryPreviewcore

Endpoint:

Returns OrganizationSummaryPreview!

ArgumentType
periodStartDateAWSDateTime!
periodEndDateAWSDateTime
periodString
GraphQL query
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 } }
}
Variables
{
  "periodStartDate": "2026-01-01T00:00:00Z",
  "periodEndDate": "2026-01-01T00:00:00Z",
  "period": ""
}
Request

Example responses

POSTorgKnowledgeBasecore

Endpoint:

Returns OrgKnowledgeBase

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorgKnowledgeBasescore

Endpoint:
Org Knowledge Base queries

Returns [OrgKnowledgeBase!]!

No arguments.

GraphQL query
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 }
}
Variables
{}
Request

Example responses

POSTpresentationAbstractcore

Endpoint:
Lazy-fetch a single presentation/poster's abstract text + a presigned PDF download URL. `presentationId` is the global Presentation id (MeetingPresentation.id, or InitiativePresentation.publicPresentationId). Returns hasAbstract:false (not an error) for an id with no ingested abstract.

Returns PresentationAbstract!

ArgumentType
presentationIdID!
GraphQL query
query PresentationAbstract($presentationId: ID!) {
  presentationAbstract(presentationId: $presentationId) { presentationId hasAbstract abstractText abstractPdfUrl }
}
Variables
{
  "presentationId": ""
}
Request

Example responses

POSTprioritiescore

Endpoint:

Returns PriorityListResult!

ArgumentType
filterPriorityFilter
paginationPaginationInput
PriorityFilter input fields
FieldType
nameString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Priorities($filter: PriorityFilter, $pagination: PaginationInput) {
  priorities(filter: $filter, pagination: $pagination) { items { id orgId name order createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTprioritycore

Endpoint:

Returns Priority

ArgumentType
idID!
GraphQL query
query Priority($id: ID!) {
  priority(id: $id) { id orgId name order createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTproductcore

Endpoint:

Returns Product

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTproductscore

Endpoint:

Returns ProductListResult!

ArgumentType
filterProductFilter
paginationPaginationInput
ProductFilter input fields
FieldType
nameString
searchString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTpublicationsByNpicore

Endpoint:

Returns PublicationsByNpiResult!

ArgumentType
npiID!
searchString
paginationPaginationInput
includeTagsBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 } }
}
Variables
{
  "npi": "",
  "search": "",
  "pagination": {},
  "includeTags": false
}
Request

Example responses

POSTpublicationStatsByNpicore

Endpoint:

Returns PublicationStatsByNpiResult!

ArgumentType
npiID!
GraphQL query
query PublicationStatsByNpi($npi: ID!) {
  publicationStatsByNpi(npi: $npi) { totalPublications lastTwoYearsCount publicationsByYear { year count } }
}
Variables
{
  "npi": ""
}
Request

Example responses

POSTpublicHcpcore

Endpoint:

Returns PublicHCP

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTpublicHcpscore

Endpoint:

Returns PublicHcpListResult!

ArgumentType
filterPublicHcpFilter
paginationPaginationInput
PublicHcpFilter input fields
FieldType
npiString
firstNameString
middleNameString
lastNameString
nameString
cityString
stateString
countryString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTrecommendTableColumnscore

Endpoint:

Returns [RecommendedColumn!]!

ArgumentType
inputRecommendTableColumnsInput!
RecommendTableColumnsInput input fields
FieldType
documentIds[ID!]!
queryString
GraphQL query
query RecommendTableColumns($input: RecommendTableColumnsInput!) {
  recommendTableColumns(input: $input) { key name prompt }
}
Variables
{
  "input": {
    "documentIds": [
      ""
    ]
  }
}
Request

Example responses

POSTrecommendTagscore

Endpoint:

Returns [TagRecommendation!]!

ArgumentType
textString!
maxRecommendationsInt
minScoreFloat
GraphQL query
query RecommendTags($text: String!, $maxRecommendations: Int, $minScore: Float) {
  recommendTags(text: $text, maxRecommendations: $maxRecommendations, minScore: $minScore) { tagId tagName score reason }
}
Variables
{
  "text": "",
  "maxRecommendations": 0,
  "minScore": 0
}
Request

Example responses

POSTresearchConversationcore

Endpoint:

Returns ResearchConversation

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTresearchConversationscore

Endpoint:

Returns ResearchConversationListResult!

ArgumentType
filterResearchConversationFilter
paginationPaginationInput
ResearchConversationFilter input fields
FieldType
workflowTypeString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTresearchDocumentcore

Endpoint:

Returns ResearchDocument

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTresearchDocumentscore

Endpoint:

Returns ResearchDocumentListResult!

ArgumentType
filterResearchDocumentFilter
paginationPaginationInput
ResearchDocumentFilter input fields
FieldType
statusString
categoryString
accessLevelString
workflowTypeString
uploadedByString
searchString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTresearchDocumentUploadUrlcore

Endpoint:

Returns PresignedUploadUrl!

ArgumentType
inputResearchDocumentUploadUrlInput!
ResearchDocumentUploadUrlInput input fields
FieldType
fileNameString!
fileTypeString!
fileSizeInt!
categoryString!
GraphQL query
query ResearchDocumentUploadUrl($input: ResearchDocumentUploadUrlInput!) {
  researchDocumentUploadUrl(input: $input) { uploadUrl s3Key documentId }
}
Variables
{
  "input": {
    "fileName": "",
    "fileType": "",
    "fileSize": 0,
    "category": ""
  }
}
Request

Example responses

POSTresearchExportcore

Endpoint:

Returns ResearchExport

ArgumentType
idID!
GraphQL query
query ResearchExport($id: ID!) {
  researchExport(id: $id) { id orgId userId sourceType sourceId workflowType exportType format s3Key s3Url fileSize fileName createdAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTresearchExportscore

Endpoint:

Returns ResearchExportListResult!

ArgumentType
filterResearchExportFilter
paginationPaginationInput
ResearchExportFilter input fields
FieldType
sourceTypeString
workflowTypeString
formatString
startDateAWSDateTime
endDateAWSDateTime
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTsalesforceImportJobcore

Endpoint:

Returns SalesforceImportJob

ArgumentType
jobIdID!
GraphQL query
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 } }
}
Variables
{
  "jobId": ""
}
Request

Example responses

POSTsalesforceImportJobscore

Endpoint:

Returns SalesforceImportJobList!

ArgumentType
limitInt
offsetInt
statusSalesforceImportJobStatus
SalesforceImportJobStatus enum — allowed values

PENDING RUNNING COMPLETED FAILED CANCELLED

GraphQL query
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 }
}
Variables
{
  "limit": 0,
  "offset": 0,
  "status": "PENDING"
}
Request

Example responses

POSTsalesforceImportPreviewcore

Endpoint:

Returns SalesforceImportPreview!

ArgumentType
objectTypeString!
GraphQL query
query SalesforceImportPreview($objectType: String!) {
  salesforceImportPreview(objectType: $objectType) { objectType sourceObject totalAvailable sampleRecords { sourceRecordId sourceData transformedData validationErrors } mappingWarnings }
}
Variables
{
  "objectType": ""
}
Request

Example responses

POSTsalesforceImportReviewcore

Endpoint:

Returns SalesforceImportReview

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTsalesforceImportReviewscore

Endpoint:

Returns SalesforceImportReviewList!

ArgumentType
jobIdID
statusSalesforceImportReviewStatus
limitInt
offsetInt
SalesforceImportReviewStatus enum — allowed values

PENDING APPROVED REJECTED

GraphQL query
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 }
}
Variables
{
  "jobId": "",
  "status": "PENDING",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTsavedReportscore

Endpoint:
Saved-report query. Returns only reports the user has access to. For single-record lookup pass `filter: { id }` (returns a 0/1-item list). To run a saved report, call `listExport(input: { savedReportId, ... })`.

Returns SavedReportListResult!

ArgumentType
filterSavedReportFilter
paginationPaginationInput
SavedReportFilter input fields
FieldType
idID
entityExportEntity
visibilityReportVisibility
scopeSavedReportScope
searchString
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

ReportVisibility enum — allowed values

PUBLIC PRIVATE

SavedReportScope enum — allowed values

OWN SHARED ORG_PUBLIC ALL

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTscientificStatementcore

Endpoint:

Returns ScientificStatement

ArgumentType
idID!
GraphQL query
query ScientificStatement($id: ID!) {
  scientificStatement(id: $id) { id orgId knowledgeBaseId statementText status sortOrder createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTscientificStatementscore

Endpoint:

Returns [ScientificStatement!]!

ArgumentType
knowledgeBaseIdID!
GraphQL query
query ScientificStatements($knowledgeBaseId: ID!) {
  scientificStatements(knowledgeBaseId: $knowledgeBaseId) { id orgId knowledgeBaseId statementText status sortOrder createdBy { id firstName lastName } createdById createdAt updatedAt deletedAt }
}
Variables
{
  "knowledgeBaseId": ""
}
Request

Example responses

POSTsearchDocumentChunkscore

Endpoint:

Returns [DocumentChunkResult!]!

ArgumentType
inputSearchDocumentChunksInput!
SearchDocumentChunksInput input fields
FieldType
queryString!
documentIds[ID!]
limitInt
minSimilarityFloat
GraphQL query
query SearchDocumentChunks($input: SearchDocumentChunksInput!) {
  searchDocumentChunks(input: $input) { chunkId documentId fileName content chunkIndex tokenCount similarity metadata }
}
Variables
{
  "input": {
    "query": ""
  }
}
Request

Example responses

POSTsearchXAccountscore

Endpoint:
X (Twitter) Integration

Returns XAccountSearchResult!

ArgumentType
inputSearchXAccountsInput!
SearchXAccountsInput input fields
FieldType
organizationHcpIdID!
queryString
maxResultsInt
nextTokenString
GraphQL query
query SearchXAccounts($input: SearchXAccountsInput!) {
  searchXAccounts(input: $input) { candidates { xUserId xUsername xDisplayName xProfileUrl xProfileImageUrl xBio xFollowersCount xFollowingCount xVerified } total nextToken }
}
Variables
{
  "input": {
    "organizationHcpId": ""
  }
}
Request

Example responses

POSTtagcore

Endpoint:

Returns Tag

ArgumentType
idID!
GraphQL query
query Tag($id: ID!) {
  tag(id: $id) { id orgId name color active createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTtagscore

Endpoint:

Returns TagListResult!

ArgumentType
filterTagFilter
paginationPaginationInput
TagFilter input fields
FieldType
nameString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Tags($filter: TagFilter, $pagination: PaginationInput) {
  tags(filter: $filter, pagination: $pagination) { items { id orgId name color active createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTtaskcore

Endpoint:

Returns Task

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTtaskCommentscore

Endpoint:

Returns TaskCommentListResult!

ArgumentType
taskIdID!
paginationPaginationInput
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query TaskComments($taskId: ID!, $pagination: PaginationInput) {
  taskComments(taskId: $taskId, pagination: $pagination) { items { id taskId userId content createdAt updatedAt deletedAt } total }
}
Variables
{
  "taskId": "",
  "pagination": {}
}
Request

Example responses

POSTtaskscore

Endpoint:

Returns TaskListResult!

ArgumentType
filterTaskFilter
paginationPaginationInput
TaskFilter input fields
FieldType
organizationHcpIdID
assignedToID
createdByID
statusString
taskType[String]
priorityString
dueDateFromAWSDateTime
dueDateToAWSDateTime
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTterritoryDetailcore

Endpoint:

Returns TerritoryDetailResult!

ArgumentType
stateString!
periodStartDateAWSDateTime!
periodEndDateAWSDateTime
periodString
GraphQL query
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 } }
}
Variables
{
  "state": "",
  "periodStartDate": "2026-01-01T00:00:00Z",
  "periodEndDate": "2026-01-01T00:00:00Z",
  "period": ""
}
Request

Example responses

POSTthemecore

Endpoint:

Returns Theme

ArgumentType
idID!
GraphQL query
query Theme($id: ID!) {
  theme(id: $id) { id orgId name description active createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTthemescore

Endpoint:

Returns ThemeListResult!

ArgumentType
filterThemeFilter
paginationPaginationInput
ThemeFilter input fields
FieldType
nameString
activeBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Themes($filter: ThemeFilter, $pagination: PaginationInput) {
  themes(filter: $filter, pagination: $pagination) { items { id orgId name description active createdAt updatedAt deletedAt } total }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTtopiccore

Endpoint:

Returns Topic

ArgumentType
idID!
GraphQL query
query Topic($id: ID!) {
  topic(id: $id) { id orgId name description active createdAt updatedAt deletedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTtopicscore

Endpoint:

Returns TopicListResult!

ArgumentType
filterTopicFilter
paginationPaginationInput
TopicFilter input fields
FieldType
nameString
activeBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Topics($filter: TopicFilter, $pagination: PaginationInput) {
  topics(filter: $filter, pagination: $pagination) { items { id orgId name description active createdAt updatedAt deletedAt } total limit offset }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTuserscore

Endpoint:

Returns UserConnection!

ArgumentType
filterUserFilterInput
paginationPaginationInput
UserFilterInput input fields
FieldType
searchString
emailString
firstNameString
lastNameString
roleString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query Users($filter: UserFilterInput, $pagination: PaginationInput) {
  users(filter: $filter, pagination: $pagination) { total items { id clerkId email firstName lastName role createdAt } }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTvalidateSalesforceConnectioncore

Endpoint:

Returns SalesforceConnectionStatus!

No arguments.

GraphQL query
query ValidateSalesforceConnection {
  validateSalesforceConnection { valid error }
}
Variables
{}
Request

Example responses

POSTvalidateScientificStatementcore

Endpoint:
Pre-save AI validation: returns per-axis quality scores, compliance flags, and rewrite recommendations.

Returns StatementValidationResult!

ArgumentType
inputValidateScientificStatementInput!
ValidateScientificStatementInput input fields
FieldType
knowledgeBaseIdID!
statementTextString!
GraphQL query
query ValidateScientificStatement($input: ValidateScientificStatementInput!) {
  validateScientificStatement(input: $input) { overallScore label blockSave axes { clinicalRelevance singleClaim specificity measurability kbAlignment } complianceFlags recommendations }
}
Variables
{
  "input": {
    "knowledgeBaseId": "",
    "statementText": ""
  }
}
Request

Example responses

POSTworkflowRuncore

Endpoint:

Returns WorkflowRun

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTworkflowRunscore

Endpoint:

Returns WorkflowRunListResult!

ArgumentType
filterWorkflowRunFilter
paginationPaginationInput
WorkflowRunFilter input fields
FieldType
workflowTypeString
statusString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTworkflowSourceSetscore

Endpoint:

Returns WorkflowSourceSetListResult!

ArgumentType
paginationPaginationInput
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query WorkflowSourceSets($pagination: PaginationInput) {
  workflowSourceSets(pagination: $pagination) { items { id orgId userId name createdAt updatedAt } total limit offset remaining }
}
Variables
{
  "pagination": {}
}
Request

Example responses

POSTworkflowTablecore

Endpoint:

Returns WorkflowTable

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTworkflowTableByRunIdcore

Endpoint:

Returns WorkflowTable

ArgumentType
workflowRunIdID!
GraphQL query
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 } }
}
Variables
{
  "workflowRunId": ""
}
Request

Example responses

POSTworkflowTableWithContextcore

Endpoint:

Returns WorkflowTableContext

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

dashboards

Dashboards — server-side metrics/aggregate API + per-entity measure/dimension catalogs.

POSTdashboardDimensionsdashboards

Endpoint:

Returns [DashboardDimension!]!

ArgumentType
entityExportEntity!
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

GraphQL query
query DashboardDimensions($entity: ExportEntity!) {
  dashboardDimensions(entity: $entity) { field label type isArray }
}
Variables
{
  "entity": "HCP"
}
Request

Example responses

POSTdashboardDistinctValuesdashboards

Endpoint:
Distinct values for a filter picker (Ask 6) — matches chart bucket labels.

Returns [String!]!

ArgumentType
entityExportEntity!
fieldString!
filtersAWSJSON
searchString
limitInt
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

GraphQL query
query DashboardDistinctValues($entity: ExportEntity!, $field: String!, $filters: AWSJSON, $search: String, $limit: Int) {
  dashboardDistinctValues(entity: $entity, field: $field, filters: $filters, search: $search, limit: $limit)
}
Variables
{
  "entity": "HCP",
  "field": "",
  "filters": "{}",
  "search": "",
  "limit": 0
}
Request

Example responses

POSTdashboardMeasuresdashboards

Endpoint:

Returns [DashboardMeasure!]!

ArgumentType
entityExportEntity!
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

GraphQL query
query DashboardMeasures($entity: ExportEntity!) {
  dashboardMeasures(entity: $entity) { id label source field aggregations defaultAggregation format }
}
Variables
{
  "entity": "HCP"
}
Request

Example responses

POSTdashboardMetricdashboards

Endpoint:
Pre-aggregated chart series over the full dataset (replaces client draining).

Returns DashboardMetricResult!

ArgumentType
inputDashboardMetricInput!
DashboardMetricInput input fields
FieldType
entityExportEntity!
measureMeasureInput!
aggregationAggregationKind!
dimensionDimensionInput
breakdownDimensionInput
filtersAWSJSON
sortMetricSort
topNInt
hcpIdID
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

MeasureInput input fields
FieldType
sourceMeasureSource!
fieldString
metricIdString
MeasureSource enum — allowed values

COUNT FIELD METRIC

AggregationKind enum — allowed values

COUNT COUNT_UNIQUE SUM AVG MIN MAX MEDIAN PERCENT_OF_TOTAL

DimensionInput input fields
FieldType
fieldString!
dateGranularityDateGranularity
DateGranularity enum — allowed values

DAY WEEK MONTH QUARTER YEAR

MetricSort input fields
FieldType
byMetricSortField!
dirSortDir!
MetricSortField enum — allowed values

VALUE LABEL

SortDir enum — allowed values

ASC DESC

GraphQL query
query DashboardMetric($input: DashboardMetricInput!) {
  dashboardMetric(input: $input) { series { key label } rows { dimension sortKey values } total categoryCount truncated }
}
Variables
{
  "input": {
    "entity": "HCP",
    "measure": {
      "source": "COUNT"
    },
    "aggregation": "COUNT"
  }
}
Request

Example responses

POSTdashboardMetricsdashboards

Endpoint:
Batched variant — one round-trip for a whole board (server dedupes inputs).

Returns [DashboardMetricResult!]!

ArgumentType
inputs[DashboardMetricInput!]!
DashboardMetricInput input fields
FieldType
entityExportEntity!
measureMeasureInput!
aggregationAggregationKind!
dimensionDimensionInput
breakdownDimensionInput
filtersAWSJSON
sortMetricSort
topNInt
hcpIdID
ExportEntity enum — allowed values

HCP PUBLIC_HCP ORGANIZATION_HCP HCP_INTERACTION_HISTORY INTERACTION INSIGHT TASK USER_ACTIVITY CONFERENCE_ATTENDEE CONFERENCE_SESSION CONFERENCE_SPEAKER

MeasureInput input fields
FieldType
sourceMeasureSource!
fieldString
metricIdString
MeasureSource enum — allowed values

COUNT FIELD METRIC

AggregationKind enum — allowed values

COUNT COUNT_UNIQUE SUM AVG MIN MAX MEDIAN PERCENT_OF_TOTAL

DimensionInput input fields
FieldType
fieldString!
dateGranularityDateGranularity
DateGranularity enum — allowed values

DAY WEEK MONTH QUARTER YEAR

MetricSort input fields
FieldType
byMetricSortField!
dirSortDir!
MetricSortField enum — allowed values

VALUE LABEL

SortDir enum — allowed values

ASC DESC

GraphQL query
query DashboardMetrics($inputs: [DashboardMetricInput!]!) {
  dashboardMetrics(inputs: $inputs) { series { key label } rows { dimension sortKey values } total categoryCount truncated }
}
Variables
{
  "inputs": [
    {
      "entity": "HCP",
      "measure": {
        "source": "COUNT"
      },
      "aggregation": "COUNT"
    }
  ]
}
Request

Example responses

POSTdashboardsdashboards

Endpoint:
Persisted boards — scope OWN/SHARED/ORG_PUBLIC/ALL. Single-record lookup via `dashboards(filter: { id })` (mirrors savedReports; no standalone get field).

Returns DashboardListResult!

ArgumentType
filterDashboardFilter
paginationPaginationInput
DashboardFilter input fields
FieldType
idID
visibilityReportVisibility
scopeSavedReportScope
searchString
bookmarkedBoolean
ReportVisibility enum — allowed values

PUBLIC PRIVATE

SavedReportScope enum — allowed values

OWN SHARED ORG_PUBLIC ALL

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTgdprConsentConfiggdpr-consent

Endpoint:

Returns GdprConsentConfig!

No arguments.

GraphQL query
query GdprConsentConfig {
  gdprConsentConfig { enabled optInEnabled optOutEnabled optInCountries optOutCountries controllerName controllerContact optInTemplate optOutTemplate templateVersion }
}
Variables
{}
Request

Example responses

POSThcpConsentgdpr-consent

Endpoint:
Null when no consent flow applies to the HCP (rows are created lazily)

Returns HcpConsent

ArgumentType
orgHcpIdID!
GraphQL query
query HcpConsent($orgHcpId: ID!) {
  hcpConsent(orgHcpId: $orgHcpId) { id orgHcpId consentMode status capturedAt captureSource notifiedAt notifiedByUserId templateVersion deletionRequestedAt deletionActionedAt deletionActionedByUserId createdAt updatedAt }
}
Variables
{
  "orgHcpId": ""
}
Request

Example responses

POSTpendingConsentRequestsgdpr-consent

Endpoint:

Returns PendingConsentRequestListResult!

ArgumentType
statusString
paginationPaginationInput
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
query PendingConsentRequests($status: String, $pagination: PaginationInput) {
  pendingConsentRequests(status: $status, pagination: $pagination) { items { id orgHcpId consentMode status capturedAt notifiedAt deletionRequestedAt createdAt hcpName country isOverdue } total }
}
Variables
{
  "status": "",
  "pagination": {}
}
Request

Example responses

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

Endpoint:

Returns OrganizationHco

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorganizationHcoshco-accounts

Endpoint:

Returns OrganizationHcoListResult!

ArgumentType
filterOrganizationHcoFilter
paginationPaginationInput
OrganizationHcoFilter input fields
FieldType
nameString
stateString
accountTypeHcoAccountType
statusHcoStatus
npiString
parentHcoIdID
assignedUserIdID
HcoAccountType enum — allowed values

HOSPITAL HEALTH_SYSTEM CLINIC ACADEMIC_MEDICAL_CENTER GROUP_PRACTICE PHARMACY PAYER OTHER

HcoStatus enum — allowed values

ACTIVE INACTIVE MERGED

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTorganizationHcoTreehco-accounts

Endpoint:
All live HCOs of the org assembled into roots > children > grandchildren.

Returns [OrganizationHcoTreeNode!]!

No arguments.

GraphQL query
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 } }
}
Variables
{}
Request

Example responses

POSTpublicHcohco-accounts

Endpoint:

Returns PublicHco

ArgumentType
npiString!
GraphQL query
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 }
}
Variables
{
  "npi": ""
}
Request

Example responses

POSTsearchPublicHcohco-accounts

Endpoint:
NPPES Type-2 registry search. name matches orgName OR the DBA/trade name.

Returns PublicHcoListResult!

ArgumentType
filterPublicHcoFilter
paginationPaginationInput
PublicHcoFilter input fields
FieldType
nameString
npiString
cityString
stateString
zipString
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTsuggestHcoAffiliationshco-accounts

Endpoint:
Auto-suggest HCO links for an HCP (claims affiliations + institution text).

Returns [HcoAffiliationSuggestion!]!

ArgumentType
organizationHcpIdID!
GraphQL query
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 } }
}
Variables
{
  "organizationHcpId": ""
}
Request

Example responses

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

Endpoint:
List + single lookup via `filter: { id }` (mirrors hcpLists — no standalone get field). `members` is populated (paginated via memberPagination) ONLY on a single-id lookup; list views get memberCount.

Returns HcoListListResult!

ArgumentType
filterHcoListFilter
paginationPaginationInput
memberPaginationPaginationInput
HcoListFilter input fields
FieldType
idID
visibilityReportVisibility
scopeSavedReportScope
searchString
containsHcoIdID
ReportVisibility enum — allowed values

PUBLIC PRIVATE

SavedReportScope enum — allowed values

OWN SHARED ORG_PUBLIC ALL

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {},
  "memberPagination": {}
}
Request

Example responses

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

Endpoint:
List + single lookup via `filter: { id }` (mirrors savedReports — no standalone get field). `members` is populated (paginated via memberPagination) ONLY on a single-id lookup; list views get memberCount.

Returns HcpListListResult!

ArgumentType
filterHcpListFilter
paginationPaginationInput
memberPaginationPaginationInput
HcpListFilter input fields
FieldType
idID
listTypeHcpListType
visibilityReportVisibility
scopeSavedReportScope
searchString
containsOrganizationHcpIdID
HcpListType enum — allowed values

STATIC DYNAMIC

ReportVisibility enum — allowed values

PUBLIC PRIVATE

SavedReportScope enum — allowed values

OWN SHARED ORG_PUBLIC ALL

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {},
  "memberPagination": {}
}
Request

Example responses

initiative-reports

POSTinitiativePlanReportinitiative-reports

Endpoint:

Returns InitiativePlanReport

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativePlanReportsinitiative-reports

Endpoint:
Latest-first history per plan.

Returns [InitiativePlanReport!]!

ArgumentType
planIdID!
limitInt
offsetInt
GraphQL query
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 } }
}
Variables
{
  "planId": "",
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSTinitiativePlanSummaryinitiative-reports

Endpoint:

Returns InitiativePlanSummary

ArgumentType
planIdID!
GraphQL query
query InitiativePlanSummary($planId: ID!) {
  initiativePlanSummary(planId: $planId) { id planId status errorMessage content paragraphs sourceDocumentIds sourceTaskDocumentIds revision tokenUsage createdAt updatedAt lastTriggeredBy { id firstName lastName } }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTinitiativePlanSummaryDocinitiative-reports

Endpoint:

Returns InitiativePlanSummaryDoc

ArgumentType
idID!
GraphQL query
query InitiativePlanSummaryDoc($id: ID!) {
  initiativePlanSummaryDoc(id: $id) { id planId uploadedById fileName mimeType fileSize status errorMessage extractedCharCount extractionMethod createdAt updatedAt uploadedBy { id firstName lastName } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativePlanSummaryDocDownloadUrlinitiative-reports

Endpoint:

Returns InitiativePlanSummaryDocDownloadUrl!

ArgumentType
idID!
GraphQL query
query InitiativePlanSummaryDocDownloadUrl($id: ID!) {
  initiativePlanSummaryDocDownloadUrl(id: $id) { downloadUrl fileName expiresInSeconds }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativePlanSummaryDocsinitiative-reports

Endpoint:

Returns [InitiativePlanSummaryDoc!]!

ArgumentType
planIdID!
GraphQL query
query InitiativePlanSummaryDocs($planId: ID!) {
  initiativePlanSummaryDocs(planId: $planId) { id planId uploadedById fileName mimeType fileSize status errorMessage extractedCharCount extractionMethod createdAt updatedAt uploadedBy { id firstName lastName } }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTstatementAlignmentReportinitiative-reports

Endpoint:

Returns StatementAlignmentReport

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTstatementAlignmentReportsinitiative-reports

Endpoint:

Returns StatementAlignmentReportListResult!

ArgumentType
filterStatementAlignmentReportFilter
paginationPaginationInput
StatementAlignmentReportFilter input fields
FieldType
userIdID
statusStatementAlignmentReportStatus
searchString
startDateAWSDateTime
endDateAWSDateTime
StatementAlignmentReportStatus enum — allowed values

QUEUED RUNNING COMPLETED FAILED

PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

initiative-sessions

POSTgetInitiativeSessioninitiative-sessions

Endpoint:
Single-session detail.

Returns InitiativeSession!

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTindustryEventRollupinitiative-sessions

Endpoint:

Returns IndustryEventRollup!

ArgumentType
planIdID!
GraphQL query
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 } }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTindustryEventSessionsForHcpinitiative-sessions

Endpoint:
Sessions an HCP is attributed to within an Industry Event plan. Attribution today is via InitiativePresentationSpeaker.orgHcpId; the query is forward-compatible with future session-level HCP links.

Returns [InitiativeSession!]!

ArgumentType
planIdID!
orgHcpIdID!
GraphQL query
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 }
}
Variables
{
  "planId": "",
  "orgHcpId": ""
}
Request

Example responses

POSTindustryEventUnlinkedSpeakersinitiative-sessions

Endpoint:
Presentation-speakers who appear on this plan's sessions but are NOT plan HCPs — the dotted-row cohort on the HCPs tab. Server-side dedup so the list stays complete under session pagination.

Returns [IndustryEventUnlinkedSpeaker!]!

ArgumentType
planIdID!
GraphQL query
query IndustryEventUnlinkedSpeakers($planId: ID!) {
  industryEventUnlinkedSpeakers(planId: $planId) { orgHcpId npi speakerName speakerAffiliation presentationCount role assignee { id firstName lastName } }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTindustryEventUpcomingSessionsinitiative-sessions

Endpoint:
Next-N upcoming sessions for the Overview "Upcoming Sessions" card. Server-side aggregate so pagination on initiativeSessions doesn't break the card. Defaults to limit=5; clamped at 25.

Returns [InitiativeSession!]!

ArgumentType
planIdID!
limitInt
GraphQL query
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 }
}
Variables
{
  "planId": "",
  "limit": 0
}
Request

Example responses

POSTinitiativeDigestsinitiative-sessions

Endpoint:

Returns [InitiativeDigest!]!

ArgumentType
planIdID!
GraphQL query
query InitiativeDigests($planId: ID!) {
  initiativeDigests(planId: $planId) { id planId digestDate content distributionStatus sentAt createdAt }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTinitiativeInteractionsinitiative-sessions

Endpoint:
Filter-aware feed for the IE Interactions tab.

Returns InteractionConnection!

ArgumentType
filterInteractionFilter!
paginationCursorPaginationInput
InteractionFilter input fields
FieldType
planIdID
orgHcpIdID
userIdID
dateFromAWSDateTime
dateToAWSDateTime
searchString
sentimentString
themeString
hasInsightsBoolean
CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTinitiativeSessionDocumentsinitiative-sessions

Endpoint:

Returns [InitiativeSessionDocument!]!

ArgumentType
sessionIdID!
GraphQL query
query InitiativeSessionDocuments($sessionId: ID!) {
  initiativeSessionDocuments(sessionId: $sessionId) { id sessionId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
Variables
{
  "sessionId": ""
}
Request

Example responses

POSTinitiativeSessionNotesinitiative-sessions

Endpoint:

Returns [InitiativeSessionNote!]!

ArgumentType
sessionIdID!
GraphQL query
query InitiativeSessionNotes($sessionId: ID!) {
  initiativeSessionNotes(sessionId: $sessionId) { id sessionId authorId author { id firstName lastName } content linkedInteractionId createdAt updatedAt }
}
Variables
{
  "sessionId": ""
}
Request

Example responses

POSTinitiativeSessionsinitiative-sessions

Endpoint:
Paginated session list — mirrors listMeetingSessions shape exactly. Defaults: limit=100, offset=0, sortBy=START_DATE, sortOrder=asc.

Returns InitiativeSessionListResult!

ArgumentType
planIdID!
filterInitiativeSessionFilter
limitInt
offsetInt
sortByInitiativeSessionSort
sortOrderString
InitiativeSessionFilter input fields
FieldType
trackString
sessionTypeInitiativeSessionType
dateAWSDateTime
fromAWSDateTime
myAgendaBoolean
searchString
InitiativeSessionType enum — allowed values

ORAL POSTER SYMPOSIUM PLENARY WORKSHOP BREAKOUT ROUNDTABLE OTHER

InitiativeSessionSort enum — allowed values

START_DATE TITLE

GraphQL query
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 }
}
Variables
{
  "planId": "",
  "filter": {},
  "limit": 0,
  "offset": 0,
  "sortBy": "START_DATE",
  "sortOrder": ""
}
Request

Example responses

initiatives

POSTinitiativeAvailableHcpsinitiatives

Endpoint:

Returns OrganizationHcpListResult!

ArgumentType
planIdID!
filterOrganizationHcpFilter
paginationPaginationInput
OrganizationHcpFilter input fields
FieldType
npiString
firstNameString
middleNameString
lastNameString
nameString
specialtyString
institutionString
organizationInstitutionIdID
regionString
cityString
stateString
zipString
countryString
isExUSBoolean
isKOLBoolean
kolTierString
knowledgeStageString
recommendedStageString
isPublicSyncedBoolean
ownerIdID
hcoIdID
statementAlignmentStatusString
statementAlignmentStatementIdID
misalignedHcpsCohortBoolean
PaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "planId": "",
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTinitiativeCategoriesinitiatives

Endpoint:

Returns [InitiativeCategory!]!

No arguments.

GraphQL query
query InitiativeCategories {
  initiativeCategories { id name description sortOrder active }
}
Variables
{}
Request

Example responses

POSTinitiativeColumnFileDownloadUrlinitiatives

Endpoint:

Returns InitiativeFileDownloadUrl!

ArgumentType
fileUploadIdID!
GraphQL query
query InitiativeColumnFileDownloadUrl($fileUploadId: ID!) {
  initiativeColumnFileDownloadUrl(fileUploadId: $fileUploadId) { downloadUrl fileName expiresIn }
}
Variables
{
  "fileUploadId": ""
}
Request

Example responses

POSTinitiativePlaninitiatives

Endpoint:

Returns InitiativePlan

ArgumentType
idID!
GraphQL query
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 } }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativePlanActivityinitiatives

Endpoint:

Returns InitiativePlanActivityResult!

ArgumentType
planIdID!
paginationCursorPaginationInput
CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
query InitiativePlanActivity($planId: ID!, $pagination: CursorPaginationInput) {
  initiativePlanActivity(planId: $planId, pagination: $pagination) { items { id entity entityId action message changes userId createdAt } nextCursor }
}
Variables
{
  "planId": "",
  "pagination": {}
}
Request

Example responses

POSTinitiativePlanDocumentsinitiatives

Endpoint:

Returns [InitiativePlanDocument!]!

ArgumentType
planIdID!
GraphQL query
query InitiativePlanDocuments($planId: ID!) {
  initiativePlanDocuments(planId: $planId) { id planId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTinitiativePlanNotesinitiatives

Endpoint:

Returns [InitiativePlanNote!]!

ArgumentType
planIdID!
paginationCursorPaginationInput
CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
query InitiativePlanNotes($planId: ID!, $pagination: CursorPaginationInput) {
  initiativePlanNotes(planId: $planId, pagination: $pagination) { id planId orgHcpId authorId author { id firstName lastName } content linkedInteractionId createdAt }
}
Variables
{
  "planId": "",
  "pagination": {}
}
Request

Example responses

POSTinitiativePlansinitiatives

Endpoint:

Returns InitiativePlanListResult!

ArgumentType
filterInitiativePlanFilter
paginationCursorPaginationInput
orderByInitiativePlanOrderByInput
InitiativePlanFilter input fields
FieldType
status[InitiativePlanStatus!]
assigneeIdID
productIds[ID!]
typeIdID
orgHcpIdID
searchString
includeDraftsBoolean
InitiativePlanStatus enum — allowed values

DRAFT NOT_STARTED IN_PROGRESS STALLED COMPLETE

CursorPaginationInput input fields
FieldType
limitInt
cursorString
InitiativePlanOrderByInput input fields
FieldType
fieldInitiativePlanOrderByField!
directionOrderDirection!
InitiativePlanOrderByField enum — allowed values

CREATED_AT LAST_ACTIVITY_AT DUE_DATE

OrderDirection enum — allowed values

ASC DESC

GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {},
  "orderBy": {
    "field": "CREATED_AT",
    "direction": "ASC"
  }
}
Request

Example responses

POSTinitiativePlanTaskDocumentsinitiatives

Endpoint:

Returns [InitiativePlanTaskDocument!]!

ArgumentType
taskIdID!
GraphQL query
query InitiativePlanTaskDocuments($taskId: ID!) {
  initiativePlanTaskDocuments(taskId: $taskId) { id taskId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
Variables
{
  "taskId": ""
}
Request

Example responses

POSTinitiativePlanTasksinitiatives

Endpoint:

Returns InitiativePlanTaskListResult!

ArgumentType
filterInitiativePlanTaskFilter!
paginationCursorPaginationInput
InitiativePlanTaskFilter input fields
FieldType
planIdID!
orgHcpIdID
assigneeIdID
status[InitiativePlanTaskStatus!]
objectiveIdID
isMilestoneBoolean
InitiativePlanTaskStatus enum — allowed values

NOT_STARTED IN_PROGRESS COMPLETE

CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
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 }
}
Variables
{
  "filter": {
    "planId": ""
  },
  "pagination": {}
}
Request

Example responses

POSTinitiativeSessionDocumentDownloadUrlinitiatives

Endpoint:
Presigned GET for an InitiativeSessionDocument (slide decks, abstracts, photos attached to an Industry Event session). id is the link row id — same pattern as the task + column variants above.

Returns InitiativeFileDownloadUrl!

ArgumentType
idID!
GraphQL query
query InitiativeSessionDocumentDownloadUrl($id: ID!) {
  initiativeSessionDocumentDownloadUrl(id: $id) { downloadUrl fileName expiresIn }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativeTaskDocumentDownloadUrlinitiatives

Endpoint:
Presigned GET URLs for initiative-scoped files (task docs + FILE column cells).

Returns InitiativeFileDownloadUrl!

ArgumentType
idID!
GraphQL query
query InitiativeTaskDocumentDownloadUrl($id: ID!) {
  initiativeTaskDocumentDownloadUrl(id: $id) { downloadUrl fileName expiresIn }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTinitiativeTypesinitiatives

Endpoint:

Returns [InitiativeType!]!

ArgumentType
categoryIdID
GraphQL query
query InitiativeTypes($categoryId: ID) {
  initiativeTypes(categoryId: $categoryId) { id orgId categoryId category { id name description sortOrder active } name description active }
}
Variables
{
  "categoryId": ""
}
Request

Example responses

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

Endpoint:
Exportable impact report (default window: last 90 days).

Returns InsightImpactReport!

ArgumentType
inputInsightImpactReportInput
InsightImpactReportInput input fields
FieldType
startAWSDateTime
endAWSDateTime
GraphQL query
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 } }
}
Variables
{
  "input": {}
}
Request

Example responses

POSTlistNotificationsinsights-collab

Endpoint:
The caller's own notifications, newest first.

Returns NotificationList!

ArgumentType
unreadOnlyBoolean
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "unreadOnly": false,
  "limit": 0,
  "offset": 0
}
Request

Example responses

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

Endpoint:

Returns MeetingPrepBrief

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTmeetingPrepBriefsmeeting-prep

Endpoint:

Returns MeetingPrepBriefListResult!

ArgumentType
filterMeetingPrepBriefFilter
paginationMeetingPrepBriefPaginationInput
MeetingPrepBriefFilter input fields
FieldType
idID
orgHcpIdID
hcpMeetingIdID
ancillaryEventIdID
visibilityMeetingPrepBriefVisibility
scopeMeetingPrepBriefScope
MeetingPrepBriefVisibility enum — allowed values

PUBLIC PRIVATE

MeetingPrepBriefScope enum — allowed values

OWN PUBLIC ALL

MeetingPrepBriefPaginationInput input fields
FieldType
limitInt
offsetInt
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

meetings

POSTancillaryEventsmeetings

Endpoint:

Returns [AncillaryEvent!]!

ArgumentType
planIdID!
filterAncillaryEventFilter
AncillaryEventFilter input fields
FieldType
statusAncillaryEventStatus
productIdID
assigneeIdID
AncillaryEventStatus enum — allowed values

SCHEDULED COMPLETED CANCELLED

GraphQL query
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 }
}
Variables
{
  "planId": "",
  "filter": {}
}
Request

Example responses

POSTmeetingDocumentDownloadUrlmeetings

Endpoint:

Returns MeetingDocumentDownloadUrl!

ArgumentType
idID!
GraphQL query
query MeetingDocumentDownloadUrl($id: ID!) {
  meetingDocumentDownloadUrl(id: $id) { downloadUrl fileName }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTmeetingDocumentsmeetings

Endpoint:

Returns [MeetingDocument!]!

ArgumentType
meetingIdID!
GraphQL query
query MeetingDocuments($meetingId: ID!) {
  meetingDocuments(meetingId: $meetingId) { id meetingId fileId file { id fileName s3Path type status createdAt } uploadedBy uploader { id firstName lastName } createdAt }
}
Variables
{
  "meetingId": ""
}
Request

Example responses

POSTmeetingNotesmeetings

Endpoint:

Returns [MeetingNote!]!

ArgumentType
meetingIdID!
GraphQL query
query MeetingNotes($meetingId: ID!) {
  meetingNotes(meetingId: $meetingId) { id meetingId authorId content linkedInteractionId author { id firstName lastName } createdAt updatedAt }
}
Variables
{
  "meetingId": ""
}
Request

Example responses

POSTmeetingsmeetings

Endpoint:

Returns MeetingListResult!

ArgumentType
planIdID!
filterMeetingFilter
limitInt
offsetInt
MeetingFilter input fields
FieldType
statusMeetingStatus
productIdID
assigneeIdID
dateAWSDate
MeetingStatus enum — allowed values

INVITED CONFIRMED SCHEDULED ATTENDED DECLINED NOT_ATTENDING

GraphQL query
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 } }
}
Variables
{
  "planId": "",
  "filter": {},
  "limit": 0,
  "offset": 0
}
Request

Example responses

POSToutboundEmailStatusmeetings

Endpoint:

Returns OutboundEmailStatus!

No arguments.

GraphQL query
query OutboundEmailStatus {
  outboundEmailStatus { connected provider sendAsEmail status }
}
Variables
{}
Request

Example responses

POSTplanMeetingMetricsmeetings

Endpoint:

Returns PlanMeetingMetrics!

ArgumentType
planIdID!
GraphQL query
query PlanMeetingMetrics($planId: ID!) {
  planMeetingMetrics(planId: $planId) { planId meetingsBooked interactionsLogged kolsEngaged ancillaryEvents statusCounts { status count } }
}
Variables
{
  "planId": ""
}
Request

Example responses

speaker-programs

POSTorgInitiativeDefaultTasksspeaker-programs

Endpoint:

Returns [OrgInitiativeDefaultTask!]!

ArgumentType
initiativeTypeIdID!
GraphQL query
query OrgInitiativeDefaultTasks($initiativeTypeId: ID!) {
  orgInitiativeDefaultTasks(initiativeTypeId: $initiativeTypeId) { id initiativeTypeId title description defaultAssigneeRole dueDateOffsetDays isMilestone sortOrder active createdAt updatedAt }
}
Variables
{
  "initiativeTypeId": ""
}
Request

Example responses

POSTorgSpeakerEvaluationQuestionsspeaker-programs

Endpoint:

Returns [OrgSpeakerEvaluationQuestion!]!

No arguments.

GraphQL query
query OrgSpeakerEvaluationQuestions {
  orgSpeakerEvaluationQuestions { id text category questionType scaleMin scaleMax isRequired sortOrder active createdAt updatedAt }
}
Variables
{}
Request

Example responses

POSTspeakerContractFilesspeaker-programs

Endpoint:

Returns [SpeakerContractFile!]!

ArgumentType
speakerProgramSpeakerIdID!
GraphQL query
query SpeakerContractFiles($speakerProgramSpeakerId: ID!) {
  speakerContractFiles(speakerProgramSpeakerId: $speakerProgramSpeakerId) { id fileName s3Path uploadedBy { id firstName lastName } uploadedAt isCurrent viewCount viewedByMeAt viewers { userId viewedAt } }
}
Variables
{
  "speakerProgramSpeakerId": ""
}
Request

Example responses

POSTspeakerEngagementHistoryspeaker-programs

Endpoint:

Returns [SpeakerProgramSpeaker!]!

ArgumentType
speakerProfileIdID!
GraphQL query
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 }
}
Variables
{
  "speakerProfileId": ""
}
Request

Example responses

POSTspeakerEvaluationHistoryspeaker-programs

Endpoint:

Returns [SpeakerEvaluation!]!

ArgumentType
speakerProfileIdID!
GraphQL query
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 }
}
Variables
{
  "speakerProfileId": ""
}
Request

Example responses

POSTspeakerFmvGuidancespeaker-programs

Endpoint:

Returns SpeakerFmvGuidance!

ArgumentType
orgHcpIdID!
productIdID
GraphQL query
query SpeakerFmvGuidance($orgHcpId: ID!, $productId: ID) {
  speakerFmvGuidance(orgHcpId: $orgHcpId, productId: $productId) { orgHcpId npi productId productName nature { natureOfPayment } generatedAt }
}
Variables
{
  "orgHcpId": "",
  "productId": ""
}
Request

Example responses

POSTspeakerPaymentHistoryspeaker-programs

Endpoint:

Returns [SpeakerProgramInvoice!]!

ArgumentType
speakerProfileIdID!
GraphQL query
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 }
}
Variables
{
  "speakerProfileId": ""
}
Request

Example responses

POSTspeakerProfilespeaker-programs

Endpoint:

Returns SpeakerProfile

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTspeakerProfileByHcpspeaker-programs

Endpoint:

Returns SpeakerProfile

ArgumentType
orgHcpIdID!
GraphQL query
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 }
}
Variables
{
  "orgHcpId": ""
}
Request

Example responses

POSTspeakerProfilesspeaker-programs

Endpoint:

Returns SpeakerProfileListResult!

ArgumentType
filterSpeakerProfileFilter
paginationCursorPaginationInput
SpeakerProfileFilter input fields
FieldType
onboardingStatusSpeakerOnboardingStatus
minRatingFloat
searchString
SpeakerOnboardingStatus enum — allowed values

NOT_STARTED IN_PROGRESS COMPLETE

CursorPaginationInput input fields
FieldType
limitInt
cursorString
GraphQL query
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 }
}
Variables
{
  "filter": {},
  "pagination": {}
}
Request

Example responses

POSTspeakerProgramspeaker-programs

Endpoint:

Returns InitiativePlan

ArgumentType
planIdID!
GraphQL query
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 } }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTspeakerProgramInvoicesspeaker-programs

Endpoint:

Returns [SpeakerProgramInvoice!]!

ArgumentType
planIdID!
GraphQL query
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 }
}
Variables
{
  "planId": ""
}
Request

Example responses

POSTspeakerProgramSettingsspeaker-programs

Endpoint:

Returns SpeakerProgramSettings!

No arguments.

GraphQL query
query SpeakerProgramSettings {
  speakerProgramSettings { contractingEnabled speakerEvaluationScaleDirection }
}
Variables
{}
Request

Example responses

POSTspeakerProgramSpeakersspeaker-programs

Endpoint:

Returns [SpeakerProgramSpeaker!]!

ArgumentType
planIdID!
GraphQL query
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 }
}
Variables
{
  "planId": ""
}
Request

Example responses

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

Endpoint:
Pre-write validation helper: which existing territories already claim any of these states.

Returns [TerritoryStateOverlap!]!

ArgumentType
states[String!]!
excludeTerritoryIdID
GraphQL query
query CheckTerritoryStateOverlap($states: [String!]!, $excludeTerritoryId: ID) {
  checkTerritoryStateOverlap(states: $states, excludeTerritoryId: $excludeTerritoryId) { state territoryId territoryName }
}
Variables
{
  "states": [
    ""
  ],
  "excludeTerritoryId": ""
}
Request

Example responses

POSThcpTerritoryterritory-mapping

Endpoint:
Territory for an HCP, derived from its resolved state.

Returns OrgTerritory

ArgumentType
orgHcpIdID!
GraphQL query
query HcpTerritory($orgHcpId: ID!) {
  hcpTerritory(orgHcpId: $orgHcpId) { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
Variables
{
  "orgHcpId": ""
}
Request

Example responses

POSTmyRegionsterritory-mapping

Endpoint:

Returns [OrgRegion!]!

No arguments.

GraphQL query
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 }
}
Variables
{}
Request

Example responses

POSTmyTerritoriesterritory-mapping

Endpoint:
Territories/regions assigned to the calling user (their scope).

Returns [OrgTerritory!]!

No arguments.

GraphQL query
query MyTerritories {
  myTerritories { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
Variables
{}
Request

Example responses

POSTorgRegionterritory-mapping

Endpoint:

Returns OrgRegion

ArgumentType
idID!
GraphQL query
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 }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTorgRegionsterritory-mapping

Endpoint:

Returns [OrgRegion!]!

No arguments.

GraphQL query
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 }
}
Variables
{}
Request

Example responses

POSTterritoriesterritory-mapping

Endpoint:

Returns [OrgTerritory!]!

No arguments.

GraphQL query
query Territories {
  territories { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
Variables
{}
Request

Example responses

POSTterritoryterritory-mapping

Endpoint:

Returns OrgTerritory

ArgumentType
idID!
GraphQL query
query Territory($id: ID!) {
  territory(id: $id) { id name states color users { id firstName lastName } products { id productId createdAt } hcpCount kolTier1Count createdById createdAt updatedAt }
}
Variables
{
  "id": ""
}
Request

Example responses

POSTterritoryMappingConfigterritory-mapping

Endpoint:

Returns TerritoryMappingConfig!

No arguments.

GraphQL query
query TerritoryMappingConfig {
  territoryMappingConfig { operatingCountries territoriesEnabled regionsEnabled }
}
Variables
{}
Request

Example responses

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

Endpoint:
The current user's mailbox connection(s) for this org.

Returns [UserEmailConnectionInfo!]!

No arguments.

GraphQL query
query MyEmailConnections {
  myEmailConnections { id orgId status provider emailAddress credentialStatus lastSyncedAt lastError }
}
Variables
{}
Request

Example responses