Skip to content

Create a subject

POST /api/Subjects

Send your private API key in the X-Api-Key header. Keep it on your server.

A successful create returns a Subject with HTTP 200. Include subjectData.name. Debug mode skips the subject insert but is not a general sandbox; see the quickstart.

This request can change account configuration or stored data. Review the example values before running it.

Use subjectData.notes for optional free-form context for the reviewing analyst. Read it back as notes in the returned subject. This creation field is available in the updated backend model; confirm deployment support with Integrations if it is not yet listed in your live Swagger schema.

Examples use illustrative values. Set FERRETLY_API_KEY in your server environment for JavaScript, Python, and C#. Replace sample IDs, URLs, and profile values before use.

Terminal window
curl --fail -sS -X POST "https://api.ferretly.com/api/Subjects" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data-raw '{
"subjectData": {
"name": "Example Candidate",
"city": "Example City",
"country": "US",
"email": "candidate@example.com",
"linkedInUrl": "https://www.linkedin.com/in/your-candidate",
"tags": [
"integration-example"
],
"notes": "Please review the supplied profile information."
},
"handles": [
{
"platform": "Twitter",
"handle": "your_candidate",
"profileUrl": "https://x.com/your_candidate"
}
],
"externalSystemId": "candidate-001",
"assignToFerretlyAnalyst": false,
"isDebug": true
}'

Use application/json for JSON examples. The published operation also advertises these content types.

PropertyTypeDescription
subjectDataEditSubject
handlesarray of ApiSubjectHandleOptional list of ApiSubjectHandle instances to add to the subject. Can be used instead of FacebookUrl, InstagramUrl, or TwitterUrl (for example) to add handles to a subject. Nullable.
assignToFerretlyAnalystbooleanBoolean indicating whether to assign the subject to a Ferretly analyst. The organization must have analyst assistance enabled.
externalSystemIdstringOptional but recommended identifier for the subject as it’s known in the source system. This value will be included in webhook notifications and can be used in query methods such as Nullable.
ownerEmailstringOptional. If the subject should be assigned to a user other than the user associated with the API key, specifies that user’s email address. If the organization does not have a user with the specified email address, then the new subject will be assigned to the user associated with the API key. Nullable.
documentUploadSubjectDocument
isDebugbooleanIf true, the new subject will NOT BE ADDED to the database. This is useful for testing.
organizationIdstring (uuid)For internal use only. External API clients will not use this property. Organization ID to associate the subject with. If null, then an API key must be provided. Nullable.
preferencesProfilestring(optional) The name or Guid id of the preference profile to use when creating the subject. If null or not specified, the ‘Default New Subject Profile’ for the registered subscriber (usually the org admin) will be used. Nullable.
continuousScreeningNewSubjectContinuousScreening
subjectData properties
PropertyTypeDescription
namestringRequired. The name of the subject. Nullable.
nicknamestringOptional. Another name/alias property for the subject Nullable.
profilePicUrlstringOptional. A profile picture URL for the subject. Nullable.
addressstringOptional. The street address of the subject. Nullable.
citystringOptional. The name of the city where the subject lives. Nullable.
statestringOptional. The name of the state name the subject lives. Nullable.
countrystringOptional. The name of the country where the subject lives. Nullable.
ageOrDateOfBirthstringOptional. The age or birth date of the subject. Nullable.
emailstringOptional. The email address of the subject. Note that this will not be automatically checked for validity. Nullable.
highSchoolstringOptional. The name of the high school the subject attended. Nullable.
collegestringOptional. The name of the college the subject attended. Nullable.
companystringOptional. The name of the company the subject works for. Nullable.
phonestringOptional. The phone number of the subject. Note that this will not be automatically checked for validity. Nullable.
twitterUrlstringOptional. The URL of the subject’s Twitter profile. Nullable.
facebookUrlstringOptional. The URL of the subject’s Facebook profile. Nullable.
instagramUrlstringOptional. The URL of the subject’s Instagram profile. Nullable.
linkedInUrlstringOptional. The URL of the subject’s LinkedIn profile. Nullable.
tiktokUrlstringOptional. The URL of the subject’s TikTok profile. Nullable.
redditUrlstringOptional. The URL of the subject’s Reddit profile. Nullable.
pinterestUrlstringOptional. The URL of the subject’s Pinterest profile. Nullable.
youtubeUrlstringOptional. The URL of the subject’s YouTube channel. All four channel URL forms are accepted: a handle ({/@name}), a channel id ({/channel/UC…}), and the legacy {/c/name} and {/user/name} forms. The identifier is stored with its prefix, because the forms are not interchangeable and may resolve to different channels. Nullable.
tagsarray of stringOptional. A set of tags to associate with the subject. Nullable.
notesstringOptional. Free-form notes about the subject, including context for the reviewing analyst. Notes can be read back from Subject.notes and edited in the Ferretly app. Nullable.
handles properties
PropertyTypeDescription
profilePicUrlstringNullable.
titlestringThe name of the subject as it appears on the social media platform. Nullable.
locationstringNullable.
workplacestringNullable.
schoolstringNullable.
livesInstringNullable.
fromstringNullable.
facebookStatusstringNullable.
socialMediaLinkedAccountstringNullable.
joinedstring (date-time)Nullable.
postCountinteger (int32)Nullable.
followersinteger (int32)Nullable.
followinginteger (int32)Nullable.
biostringNullable.
platformstringNullable.
handlestringNullable.
profileUrlstringThe direct URL to the profile on the social media platform. Nullable.
isPersonalProfilebooleanIndicates whether this handle represents a personal profile, as opposed to a business or organization page.
document properties
PropertyTypeDescription
filenamestringRequired name for the document to be uploaded Nullable.
contentTypestringRequired content type for the document to be uploaded Nullable.
imageDatastring (byte)Required base64-encoded content for the document to be uploaded Nullable.
continuousScreening properties
PropertyTypeDescription
isEnabledbooleanWhether continuous screening should be enabled for this subject.
intervalContinuousScreeningInterval
notificationEmailstring (email)Optional email address to notify when a continuous screening background check completes. Nullable.

Created

Requested Analyst Support but organization does not have Analyst Support

Illustrative, shortened HTTP 200 response. Optional fields can be absent or null.

{
"id": "11111111-1111-4111-8111-111111111111",
"name": "Example Candidate",
"externalSystemId": "candidate-001",
"status": "Active",
"dateAdded": "2026-10-14T12:00:00Z",
"handleList": [
{
"platform": "Twitter",
"handle": "your_candidate",
"profileUrl": "https://x.com/your_candidate",
"verified": false,
"status": "Unverified",
"isPersonalProfile": true
}
],
"isAssignedToFerretlyAnalyst": false,
"isExternalApiSubject": true,
"notes": "Please review the supplied profile information."
}
Response properties
PropertyTypeDescription
idstring (uuid)
subscriberIdstring (uuid)The ID of the subscriber that added this subject or who currently “owns” it (see OwnerFirstName and OwnerLastName)
ownerFirstNamestringFirst name of the subscriber that added this subject or who currently “owns” it Nullable.
ownerLastNamestringLast name of the subscriber that added this subject or who currently “owns” it Nullable.
ownerEmailstringEmail of the subscriber that added this subject or who currently “owns” it Nullable.
ownerProfilePhotoUrlstringProfile photo url of the subscriber that added this subject or who currently “owns” it Nullable.
organizationIdstring (uuid)
namestringNullable.
nicknamestringAnother name/alias property for the subject Nullable.
handlesstringNullable.
handleListarray of SubjectHandleNullable.
mostRecentRunIdstring (uuid)Nullable.
dateAddedstring (date-time)Nullable.
subjectAddedAuditInfoAuditInfo
profilePicUrlstringNullable.
lastRunDatestring (date-time)Represents the date/time that the most recent run completed Nullable.
scoreinteger (int32)Nullable.
statusSubjectStatus
lastRunStatusRunStatusEnum
lastRunStatusMessagestringNullable.
lastRunFinishedScrapingstring (date-time)Nullable.
currentRunStartedstring (date-time)Nullable.
currentBackgroundCheckStartedBystringNullable.
currentRunStatusRunStatusEnum
currentRunIdstring (uuid)Nullable.
backgroundReportFileNamestringGets and sets the name of a newly-generated background report file. Also sets IsBackgroundReportStale to false. Nullable.
isBackgroundReportStalebooleanA Boolean to indicate that there have been data changes which cause the current background report file to be outdated
addressstringNullable.
citystringNullable.
statestringNullable.
countrystringNullable.
coordinatesGeoLocation
emailstringNullable.
highSchoolstringNullable.
collegestringNullable.
companystringNullable.
phoneNumberstringNullable.
twitterUrlstringNullable.
facebookUrlstringNullable.
instagramUrlstringNullable.
linkedInUrlstringNullable.
tiktokUrlstringNullable.
redditUrlstringNullable.
pinterestUrlstringNullable.
youtubeUrlstringNullable.
tagsarray of stringNullable.
riskMakeupsarray of RiskMakeupNullable.
channelVolumesarray of ChannelVolumeNullable.
isRedressedboolean
lastMarkAsRedressedOnstring (date-time)Nullable.
lastMarkedAsRedressedBystring (uuid)Nullable.
lastMarkedAsRedressedEmailstringNullable.
lastMarkedAsRedressedNamestringNullable.
lastMarkedAsRedressedAuditInfoAuditInfo
totalPostsinteger (int32)Note that this does not include WebSearch posts Read-only response field.
flaggedPostsinteger (int32)
totalSentimentnumber (double)
webSearchPostsinteger (int32)
sanctionsSearchPostsinteger (int32)
hasAvailablePostsbooleanRead-only response field.
isBackgroundCheckInProgressbooleanRead-only response field.
preferencesProfileIDstring (uuid)The ID of the OrganizationPreferencesProfile used in background checks Nullable.
isEnabledForContinuousScreeningbooleanBoolean to indicate whether this subject is enabled for continuous screening
subscriberEnablingContinuousScreeningstring (uuid)Nullable.
continuousScreeningPreferencesOrganizationPreferencesProfile
continuousScreeningIntervalContinuousScreeningInterval
continuousScreeningHourBucketinteger (int32)Round-robin hour-of-day bucket (0-23) this subject’s Daily-interval continuous screening run is assigned to. Only set when ContinuousScreeningInterval is Daily; null for Monthly+ subjects and when continuous screening is disabled. Nullable.
continuousScreeningNotificationEmailstringNullable.
continuousScreeningLastCreditChargedAtstring (date-time)The date/time when a credit was last charged for a continuous screening background check for this subject. Used to determine whether a credit should be charged when a new continuous screening check is initiated (a charge is made if this is null or more than 12 months ago). Nullable.
supplementaryDocumentBlobNamestringNullable.
supplementaryDocumentFilenamestringNullable.
supplementaryDocumentContentTypestringNullable.
previousRunDatestring (date-time)Nullable.
nextScreeningDatestring (date-time)Nullable.
originalScreeningDatestring (date-time)Nullable.
isAssignedToFerretlyAnalystboolean
dateAssignedToAnalyststring (date-time)Nullable.
assignedToAnalystAuditInfoAuditInfo
assignedAnalystIdstring (uuid)Gets and sets the ID of the analyst assigned to this subject Nullable.
slaTimeInHoursinteger (int32)Gets or sets the number of hours that was used for calculating SLA expiration time. Nullable.
slaExpirationTimestring (date-time)Gets and sets the date/time when the SLA expires. Nullable.
turnAroundTimeInHoursnumber (double)Gets and sets the turn-around, in hours, for this subject. The calculation is performed differently for subjects assigned to an analyst than otherwise. Nullable.
ageOrDateOfBirthstringNullable.
isExternalApiSubjectbooleanIndicates whether the subject was created via the external API
externalSystemIdstringAn identifier for the subject as it’s known to the external system Nullable.
isPostMigrationScheduledboolean
areSubjectProfilesReviewedbooleanIndicates whether the subject’s profiles have been reviewed by Analyst after search
runBGCheckAfterSearchIsFinishedbooleanIf true, a background check will be automatically triggered after agentic search completes profile validation, provided the organization has no Analyst Assistance.
notesstringNotes about this subject. Free-form text. Nullable.
lastUpdatedstring (date-time)Date/time of the last update to this subject Nullable. Read-only response field.
lastUpdatedBystringThe name of the person who last updated this subject Nullable. Read-only response field.
lastUpdatedByEmailstringThe email address of the person who last updated this subject Nullable. Read-only response field.
lastUpdatedBySubscriberIdstring (uuid)The ID of the subscriber who last updated this subject Nullable. Read-only response field.
lastUpdatedAuditInfoAuditInfo
platformSearchStatusesarray of PlatformSearchStatusNullable.
hasAgenticProfileSearchbooleanTrue if an Agentic Profile Search has been initiated for this subject at least once. A credit is charged on first initiation, so this indicates that credit has been paid and the first background check can be run without an additional charge. Read-only response field.
postSummaryTextstringA string that represents AI-generated text that summarizes the subject’s most-recent flagged posts Nullable.
oceanPersonalityTraitsOceanPersonalityTraits
partitionKeystringNullable.
rowKeystringNullable.
timestampstring (date-time)Nullable.
eTagETag
handleList properties
PropertyTypeDescription
platformstringOverride the platform JSON output so that we get the correct casing. A value naming no known platform falls through as stored instead of becoming null, so it stays visible in an API response, and the setter writes the stored one, so this carries the inbound bind as well as the outbound. Nullable.
isSubjectProvidedboolean
verifiedboolean
profileUrlstringNullable.
profilePicUrlstringNullable.
titlestringNullable.
locationstringNullable.
workplacestringNullable.
schoolstringNullable.
livesInstringNullable.
fromstringNullable.
livesInCoordinatesGeoLocation
fromCoordinatesGeoLocation
facebookStatusstringNullable.
socialMediaLinkedAccountstringNullable.
joinedstring (date-time)
postCountinteger (int32)
followersinteger (int32)
followinginteger (int32)
biostringNullable.
statusHandleStatus
socialMediaProfileIdstringNullable.
candidateProfileIdstring (uuid)The ID of the CandidateProfile that this handle is associated with. Nullable.
handleCreatedstring (date-time)Nullable.
validationStartedstring (date-time)Nullable.
validationCompletedstring (date-time)Nullable.
candidateProfileCandidateProfileModel
handleSourceHandleSource
pronounsstringGets and sets any pronouns that are associated with this handle. Nullable.
handlestringNullable.
isPersonalProfilebooleanIndicates whether this handle represents a personal profile, as opposed to a business or organization page.
subjectAddedAuditInfo properties
PropertyTypeDescription
occurredOnstring (date-time)Date/time of the action Nullable.
subscriberNamestringThe name of the person who performed the action Nullable.
subscriberEmailstringThe email address of the person who performed the action Nullable.
subscriberIdstring (uuid)The ID of the subscriber who performed the action Nullable.
coordinates properties
PropertyTypeDescription
latitudenumber (double)
longitudenumber (double)
riskMakeups properties
PropertyTypeDescription
riskNamestringThe name of the behavior Nullable.
countinteger (int32)Count of the number of posts flagged for this behavior
channelVolumes properties
PropertyTypeDescription
channelNamestringNullable.
countinteger (int32)
flaggedPostsinteger (int32)Nullable.
lastMarkedAsRedressedAuditInfo properties
PropertyTypeDescription
occurredOnstring (date-time)Date/time of the action Nullable.
subscriberNamestringThe name of the person who performed the action Nullable.
subscriberEmailstringThe email address of the person who performed the action Nullable.
subscriberIdstring (uuid)The ID of the subscriber who performed the action Nullable.
continuousScreeningPreferences properties
PropertyTypeDescription
idstring (uuid)The unique identifier for this profile
profile_namestringNullable.
organizationIdstring (uuid)The organization to which this profile belongs
organizationNamestringThe name of the organization Nullable.
isOrganizationDefaultProfilebooleanWhether or not this profile is the organization default Read-only response field.
subscriberIdstring (uuid)If not null, this is a private profile Nullable.
isPrivateProfilebooleanRead-only response field.
isActivebooleanSupport soft deletes of profiles
risk_categoriesarray of OrganizationRiskCategoryNullable.
key_wordsKeyWords
general_settingsGeneralSettings
disabledPlatformsarray of stringA list of social media platforms this profile has turned off. This list is exclusionary: if it is not empty, then handles on those platforms are not scraped and profiles found there are not attached automatically. If the list is empty, every platform applies. Nullable.
lastEditedstring (date-time)
lastEditedBystring (uuid)The ID of the Subscriber who last edited this profile. Null when the profile was last edited via the external API. Nullable.
lastEditedByNamestringThe display name of the person or system that last edited this profile. Populated at write time. For human edits this is “{FirstName} {LastName}”; for external API edits this is the API client’s Owner name. Nullable.
assignedToAnalystAuditInfo properties
PropertyTypeDescription
occurredOnstring (date-time)Date/time of the action Nullable.
subscriberNamestringThe name of the person who performed the action Nullable.
subscriberEmailstringThe email address of the person who performed the action Nullable.
subscriberIdstring (uuid)The ID of the subscriber who performed the action Nullable.
lastUpdatedAuditInfo properties
PropertyTypeDescription
occurredOnstring (date-time)Date/time of the action Nullable.
subscriberNamestringThe name of the person who performed the action Nullable.
subscriberEmailstringThe email address of the person who performed the action Nullable.
subscriberIdstring (uuid)The ID of the subscriber who performed the action Nullable.
platformSearchStatuses properties
PropertyTypeDescription
platformSearchPlatform
statusSearchStatusEnum
startedOnstring (date-time)Nullable.
completedOnstring (date-time)Nullable.
statusMessagestringNullable.
requestIdstring (uuid)Nullable.
timeoutMessageSequenceNumberinteger (int64)Sequence number of the scheduled Service Bus timeout message. Set by SearchProgressHandler when the search receives a slot (Started status). Used by AgenticSearchCompletedHandler to cancel the timeout on completion. Null means no timeout has been scheduled yet (search is still queued). Nullable.
oceanPersonalityTraits properties
PropertyTypeDescription
opennessnumber (double)
conscientiousnessnumber (double)
extraversionnumber (double)
agreeablenessnumber (double)
neuroticismnumber (double)