DNA Behavior Public API: Endpoint Reference Guide
This guide explains what each endpoint does, when to use it, what parameters it requires, and what it returns. For full schema definitions, refer to the Developer Portal.
Note: All requests require your subscription key passed in the Ocp-Apim-Subscription-Key header.
A note on Single vs Array endpoints
Several endpoints exist in two versions: a standard version and an Array version (e.g. GetBDNA5Scores and GetBDNA5ScoresArray). The standard versions return data in a fixed named-field structure. The Array versions return the same data as a flat array of objects, which is easier to iterate over programmatically. Use the Array version when you are building dynamic UI or looping through results in code. Use the standard version when you need to access specific named fields directly.
Setup and Validation
Ping GET /Accounts/Ping/{AccountId}
Use this to verify your account credentials and confirm the API is reachable before making other calls. Returns a basic success response if your account ID and subscription key are valid. Useful as a health check at the start of an integration or during debugging.
GetSubscriptionFeaturesByAccountId GET /Accounts/GetSubscriptionFeaturesByAccountId/{AccountId}
Returns the package name and list of features enabled for the specified account. Each feature includes a heading, name, and active status flag. Use this to check which endpoints and capabilities your account plan supports before calling them.
Participant Management
CheckIfParticipantExists GET /Discovery/CheckIfParticipantExists/{UserName}
Checks whether a participant already exists in the platform using their username (email). Returns personId, creditId, and questionPattern if found. Call this before InsertParticipantInAccount to avoid duplicate insertion errors, and before result endpoints to confirm the participant record exists.
InsertParticipantInAccount POST /Discovery/InsertParticipantInAccount
Registers a new participant under your account. Pass firstName, lastName, email, selfRegistrationId, and questionPattern (11, 17, or 46). On success, returns personId, creditId, and questionPattern. The personId and creditId returned here are required for all subsequent answer submission and result retrieval calls. Email addresses must be unique per account.
Discovery Status
GetDiscoveryStatus GET /Discovery/GetDiscoveryStatus/{CreditID}
Returns the current status of a participant's discovery for each question model (11, 17, and 46). Each model returns three boolean flags: scheduled, inProgress, and completed. Call this before pulling results to confirm the discovery is complete. Many result endpoints return 404 or empty responses if the discovery is not yet finished.
Answer Submission
InsertQuestionAnswer POST /Discovery/InsertQuestionAnswer
Submits a single question answer for the 46-question discovery flow. Pass creditId, parentId, and the answer as a question object with least and most fields. Use this when building a custom question-by-question interface where answers are submitted one at a time as the participant progresses.
Insert11Q17QAnswers POST /Discovery/Insert11Q17QAnswers
Submits a single answer for the 11 or 17 question discovery flows. Same structure as InsertQuestionAnswer but requires questionPattern to specify which model (11 or 17) is being used. Use this for short-form discovery implementations.
SubmitAnswers POST /NaturalBehavior/SubmitAnswers
Submits all 46 answers in a single request. Requires firstName, lastName, userName (must be a valid email), and all 46 question answer objects (q1 through q46), each with least and most values. All 46 questions are marked required. Returns a personId on success. Use this when collecting answers externally and submitting the full set at once rather than question by question.
PostDigitalScanToDatabase POST /NaturalBehavior/PostDigitalScanToDatabase
Submits pre-computed behavioral T-scores directly to the database, bypassing the questionnaire flow entirely. Used specifically for the Digital Scan product. Pass firstName, lastName, userName, and 32 individual T-score fields (one per behavioral trait, e.g. commanding5Tscore, people6Tscore). Returns a personId on success. This endpoint is not part of the standard discovery flow.
GetQuestionAnswer GET /Discovery/GetQuestionAnswer/{PersonId}
Retrieves the saved question and answer data for a participant, including their creditId, parentId, and an array of question-answer pairs showing which answer was selected for each question. Useful for auditing responses or resuming a partially completed discovery.
Core Identity and Behavioral Profile
GetAssessmentResults GET /NaturalBehavior/GetAssessmentResults/{PersonID}
Returns the raw T-score data underpinning the participant's behavioral profile. Includes personId, creditId, completionDate, behaviorTypeID, languageID, and scores for each factor (factorID5 through factorID36), plus the top two behavioral factors. This is the foundational data that all other behavioral endpoints derive from. Use this if you need the raw scores rather than interpreted insights.
GetUniqueStyleAndDescription GET /NaturalBehavior/GetUniqueStyleAndDescription/{PersonID}/{LanguageID}
Returns the participant's Natural Behavior style as a behaviorTypeID, behaviorTypeName, and a plain-language behaviorTypeDescription. This is the most concise summary of who someone is behaviorally. Use this for profile display, CRM enrichment, or anywhere you need a human-readable behavioral label.
GetUniqueStyleAndDescriptionArray GET /NaturalBehavior/GetUniqueStyleAndDescriptionArray/{PersonID}/{LanguageID}
Returns the same data as an array. Use this version when integrating with systems that expect array-structured responses.
Business DNA (Workplace) Endpoints
GetBDNA5Scores GET /NaturalBehavior/GetBDNA5Scores/{PersonID}/{LanguageID}
Returns the five core Business DNA dimensions as named score objects. Each dimension includes a numeric value, a description, and a label. The five dimensions are: Results vs Relationships, Daring vs Careful, Abstract vs Concrete, Systematic vs Flexible, and Promoting vs Operating. Use this to display the core BDNA work style profile.
GetBDNA5ScoresArray GET /NaturalBehavior/GetBDNA5ScoresArray/{PersonID}/{LanguageID}
Returns the same five BDNA scores as an array. Use this version for dynamic rendering or when building reusable components that loop through score data.
GetBDNAWorkplaceInsights GET /NaturalBehavior/GetBDNAWorkplaceInsights/{PersonID}/{LanguageID}
Returns 12 workplace behavioral insights, each with an insightName, a High/Medium/Low rating (hml), and a population percentage score (0-100). These insights correspond to the Business DNA Summary and Workplace Operations reports. Use this to show how someone operates in a work environment relative to the broader population.
GetBDNADashboardSetting GET /Discovery/GetBDNADashboardSetting/{SelfRegistrationId}/{AccountId}
Returns the dashboard configuration for a specific self-registration process under your account. The response is a set of boolean flags controlling which sections are visible on the BDNA dashboard: video, report, BDNA5 work talents, desired task talents, performance guide, top two traits, and active status. Use this to determine what your account is configured to show participants after completing the Business DNA discovery.
Financial DNA (FDNA) Endpoints
GetFDNA5Scores GET /NaturalBehavior/GetFDNA5Scores/{PersonID}/{LanguageID}
Returns the five core Financial DNA dimensions. Each includes a numeric value and description. The five dimensions are: Risk Behavior, Financial Relationship Management, Financial Planning Management, Wealth Building Motivation, and Financial Emotional Intelligence. Use this to display the core FDNA financial behavior profile.
GetFDNA5ScoresArray GET /NaturalBehavior/GetFDNA5ScoresArray/{PersonID}/{LanguageID}
Returns the same five FDNA scores as an array. Use this version for dynamic rendering.
GetFDNAFinancialPlanningInsights GET /NaturalBehavior/GetFDNAFinancialPlanningInsights/{PersonId}/{LanguageId}
Returns 13 financial planning behavioral insights. Each insight includes an insightName, an hml rating (High, Medium, or Low), and a population percentage. Use this to show how a participant's financial behavior compares to the broader population across key planning dimensions.
GetRiskAllocation GET /NaturalBehavior/GetRiskAllocation/{PersonID}
Returns the participant's behavioral risk score (riskScore), risk group (riskGroup), and a portfolioStructure recommendation. Use this in financial planning or investment advisory contexts to surface risk profile data for portfolio construction.
GetMarketMood GET /NaturalBehavior/GetMarketMood/{PersonID}/{PortfolioValue}/{Date}
Returns a real-time behavioral assessment of how a specific investor is likely reacting to current market conditions, based on their behavioral profile. Requires PersonID, their portfolio value, and the current date. Returns a mood, color, riskScore, riskGroup, marketPercentage, behavioral type, and a rich set of description and action fields for both market up and market down scenarios. Use this to proactively coach clients during volatile market periods.
GetMarketMoodArray GET /NaturalBehavior/GetMarketMoodArray/{PersonID}/{PortfolioValue}/{Date}
Returns the same Market Mood data in an array-friendly structure with marketMoodDescriptions as an array of heading and description objects. Use this version for dynamic UI rendering.
GetMarketMoodLite GET /NaturalBehavior/GetMarketMoodLite/{RiskScore}/{PortfolioValue}/{Date}
A lightweight version of Market Mood that does not require a PersonID. Works with just a risk score, portfolio value, and date. Returns mood, color, riskGroup, and marketPercentage. Use this when you have a client's risk appetite but they have not completed the full FDNA discovery.
GetBehavioralBiases GET /NaturalBehavior/GetBehavioralBiases/{PersonID}/{LanguageID}
Returns 16 behavioral biases as named objects. Each bias includes a biasID, name, description, and population percentage. Use this to show clients the specific cognitive and emotional tendencies that influence their financial decision-making.
GetBehavioralBiasesArray GET /NaturalBehavior/GetBehavioralBiasesArray/{PersonID}/{LanguageID}
Returns the same 16 behavioral biases as a flat array. Use this version for dynamic rendering or list-based UI components.
GetFDNADashboardSetting GET /Discovery/GetFDNADashboardSetting/{selfRegistrationId}/{accountId}
Returns the dashboard configuration for a specific self-registration process under your account for the Financial DNA discovery. Boolean flags control visibility of: video, report, FDNA5 scores, behavioral overview, behavioral biases, market mood, performance guide, top two traits, interactive insights, financial planning insights, and risk portfolio group. Use this to determine what your account is configured to show participants after completing the FDNA discovery.
Workplace and Hiring Endpoints
GetPerformanceGuide GET /NaturalBehavior/GetPerformanceGuide/{PersonID}/{LanguageID}
Returns 13 behavioral insights structured as 5 strengths, 3 struggles, and 5 performance environment keys. Each includes an id, description, and detailedDescription. Use this to support coaching, onboarding, and performance management conversations.
GetPerformanceGuideArray GET /NaturalBehavior/GetPerformanceGuideArray/{PersonID}/{LanguageID}
Returns the same performance guide data as flat arrays for strengths, struggles, and environment keys. Use this version for dynamic rendering.
GetHiringData GET /NaturalBehavior/GetHiringData/{PersonID}
Returns 25 hiring and career insights structured across four categories: talents (10 insights), roles (5), environments (5), and rewards (5). Each insight includes an id, name, and numeric value. Use this to support hiring decisions, role alignment, and career development conversations.
GetHiringDataArray GET /NaturalBehavior/GetHiringDataArray/{PersonID}
Returns the same hiring data as flat arrays for each category. Use this version for dynamic rendering or filtering.
GetWorkplaceTalentInsights GET /NaturalBehavior/GetWorkplaceTalentInsights/{PersonID}
Returns 19 workplace talent insight scores as named integer fields. Each field represents a behavioral tendency relevant to workplace performance, such as promoting, operating, riskBehavior, adaptability, preparesCarefully, and others. Values are numeric scores. Use this for talent assessment and workplace fit analysis.
GetSalesInsights GET /NaturalBehavior/GetSalesInsights/{PersonID}
Returns 21 sales behavior insight scores as named integer fields. Covers dimensions such as buildsNewTerritories, solutionBasedSales, negotiator, strategicSalesFocus, riskBehavior, adaptability, and others. Use this to assess sales style, identify strengths, and tailor coaching for sales professionals.
Relationship Intelligence
GetStyleMatch GET /ParticipantProfile/GetStyleMatch/{personId1}/{personId2}
Takes two PersonID values and returns a behavioral compatibility assessment between the two individuals. Use this for advisor-client matching, team composition analysis, or relationship coaching. Both participants must have completed their discovery before this endpoint will return data.
Reports and Media
GetVideoUrl GET /Discovery/GetVideoUrl/{personId}
Returns the video URLs associated with the participant's behavioral profile. The response includes a creditId, fdnaVideo URL, and bdnaVideo URL. Use this to embed or link to personalized behavioral explanation videos within your application.
Webhook Management
RegisterWebhookURL POST /Discovery/RegisterWebhookURL
Registers or updates a webhook URL for your account. Pass accountId, webhookURL, and status (true to activate). Once registered, the DNA platform will POST a payload to this URL when a participant completes their discovery. Re-submitting with a new URL overwrites the existing registration.
GetWebhookURLByAccountId GET /Discovery/GetWebhookURLByAccountId/{AccountId}
Retrieves the currently registered webhook URL and its active status for the specified account. Use this to verify your webhook registration or confirm the URL after an update.
WebhookSync GET /Accounts/WebhookSync/{AccountId}
Manually triggers a webhook payload delivery for all participants who have completed their discovery under the specified account but whose webhook payload may not have been received. Returns an array of webhook payloads, each containing contact details, tags, completion date, unique style, BDNA5 scores, FDNA5 scores, preferred contact method, and communication keys. Use this as a recovery mechanism if your webhook endpoint was temporarily unavailable.
WebhookSyncAll GET /Accounts/WebhookSyncAll/{AccountId}
Same as WebhookSync but returns payloads for all completed participants across the account regardless of prior delivery status. Use this for a full data resync, for example when setting up a new integration or recovering from an extended outage.
Still need help?
Submit a support ticket here. Include the endpoint you are calling, your accountId, and any error responses you are receiving. Do not include your subscription key or encryption key in the ticket.