Skip to main content

Webhooks

Webhooks allow you to receive real-time notifications when a report is completed. WeCheck will automatically send a POST request to the webhook URL you have configured in your API key settings.

When are Webhooks Triggered?​

A webhook notification is sent automatically when a report status changes to complete. This allows your system to react immediately to completed reports without needing to poll our API.

Webhook Response Format​

The webhook payload uses the same data structure as the /api/v1/report/{id} endpoint response. This consistency makes it easier to process information regardless of how you retrieve it.

Example Payload Structure:

{
"message": "message",
"status": 200,
"data": {
"report": {
"id": "report_123456",
"pdfUrl": "https://example.com/reports/123456.pdf",
"startDate": "2024-03-19T10:00:00Z",
"endDate": "2024-03-19T11:00:00Z",
"input": {
"pictureUrl": "https://example.com/profile.jpg",
"name": "John",
"lastName": "Doe",
"middleName": "William",
"nickname": "Johnny",
"ageOrDateOfBirth": "1990-01-01",
"city": "New York",
"state": "NY",
"country": "United States",
"email": "john.doe@example.com",
"highSchool": "Central High School",
"college": "State University",
"phone": "+1234567890",
"company": "Tech Corp",
"twitterUrl": "https://twitter.com/johndoe",
"facebookUrl": "https://facebook.com/johndoe",
"instagramUrl": "https://instagram.com/johndoe",
"linkedInUrl": "https://linkedin.com/in/johndoe",
"tikTokUrl": "https://tiktok.com/@johndoe",
"pinterestUrl": "https://pinterest.com/johndoe",
"redditUrl": "https://reddit.com/user/johndoe",
"topics": ["topic1", "topic2"]
},
"subject": {
"personData": {},
"risks": [
{
"name": "Inappropriate Content",
"count": 3
},
{
"name": "Harmful Speech",
"count": 1
}
],
"channelVolume": [
{
"channel": "LinkedIn",
"posts": 42,
"flagged": 2
},
{
"channel": "Twitter",
"posts": 156,
"flagged": 5
}
],
"pdfType": "ai_report"
},
"posts": {
"totalPosts": 150,
"flaggedPosts": 5,
"positivePosts": 80,
"negativePosts": 20,
"webSearchPosts": 30,
"socialMedia": [
{
"id": "acc_123456",
"name": "LinkedIn",
"userName": "johndoe123",
"profileImgUrl": "https://platform.com/profile/image.jpg",
"profileLink": "https://linkedin.com/in/johndoe",
"followers": 500,
"following": 300,
"postsCount": 120,
"flaggedCount": 2,
"bio": "Software Engineer | Tech Enthusiast",
"isPrivate": false
}
],
"posts": [
{
"id": "post_123456",
"platform": "Twitter",
"type": "Post",
"link": "https://twitter.com/user/status/123456",
"content": "Just shared my thoughts on the latest tech trends!",
"date": "2024-03-19T10:30:00Z",
"sentimentFlag": "Positive",
"flagged": false,
"flaggedText": "Inappropriate content detected",
"mediaUrl": "https://platform.com/media/image.jpg",
"videoUrl": "https://platform.com/media/video.mp4",
"flags": ["inappropriate", "spam"],
"sentimentReason": "Positive language and constructive content",
"flagReason": "Contains inappropriate language",
"socialMediaId": "acc_123456"
}
]
},
"topics": ["Technology", "Professional Conduct"],
"career": [
{
"title": "Software Engineer",
"company": "Tech Corp",
"startDate": "2020-01-01",
"endDate": "2024-01-01",
"description": "Software Engineer at Tech Corp",
"companyLogoUrl": "https://example.com/logo.png",
"companyLinkedinURL": "https://linkedin.com/company/techcorp",
"companyStaffCountRange": "100-200"
}
],
"education": [
{
"startDate": "2020-01-01",
"endDate": "2024-01-01",
"title": "Software Engineer",
"grade": "A",
"fieldOfStudy": "Tech Corp",
"schoolUrl": "https://example.com/school"
}
],
"skills": [
{
"name": "Software Engineer",
"passedSkillAssessment": true,
"endorsementsCount": 10
}
],
"address": [
{
"address_line_2": "Apt 123",
"continent": "North America",
"country": "United States",
"first_seen": "2024-01-01",
"full_address": "123 Main St, Apt 123, New York, NY 10001",
"geo": "123 Main St, Apt 123, New York, NY 10001",
"last_seen": "2024-01-01",
"locality": "New York",
"metro": "New York",
"name": "123 Main St",
"num_sources": 10,
"postal_code": "10001",
"region": "New York",
"street_address": "123 Main St",
"status": "checked"
}
],
"workEmail": [
{
"email": "john.doe@example.com",
"status": "checked",
"type": "personal"
}
],
"personalEmail": [
{
"email": "john.doe@example.com",
"status": "checked",
"type": "personal"
}
],
"phones": [
{
"phone": "+1234567890",
"status": "checked"
}
],
"verifiedDigitalFootprints": [
{
"url": "https://example.com/digital-footprint",
"description": "Digital footprint description",
"userName": "John Doe",
"platform": "CNN",
"isWebSearch": false,
"image": "https://example.com/digital-footprint.jpg",
"status": "checked"
}
],
"unverifiedDigitalFootprints": [
{
"url": "https://example.com/digital-footprint",
"description": "Digital footprint description",
"userName": "John Doe",
"platform": "CNN",
"isWebSearch": false,
"image": "https://example.com/digital-footprint.jpg",
"status": "checked"
}
],
"summary": {
"sentimentAnalysis": {},
"contentRadar": "high",
"digitalPersonSnapshot": {},
"onlineBehavior": [
{
"behavior": "The person is very active on social media"
}
],
"redFlags": [
{
"flag": "The person is very active on social media"
}
],
"strengthsAndWeaknesses": [
{
"strengths": [
{
"description": "The person is very active on social media"
}
],
"weaknesses": [
{
"description": "The person is very active on social media"
}
]
}
],
"personalityInsights": [
{
"trait": "Openness"
}
]
}
},
"usage": {
"aiCredits": {
"aiReportCredits": 0,
"aiAnalystReportCredits": 0,
"adverseMediaReportCredits": 0,
"assistedReportCredits": 0,
"facialMatchingCredits": 0
},
"analystCredits": {
"aiReportCredits": 0,
"aiAnalystReportCredits": 0,
"adverseMediaReportCredits": 0,
"assistedReportCredits": 0,
"facialMatchingCredits": 0
},
"adverseMediaCredits": {
"aiReportCredits": 0,
"aiAnalystReportCredits": 0,
"adverseMediaReportCredits": 0,
"assistedReportCredits": 0,
"facialMatchingCredits": 0
},
"assistedCredits": {
"aiReportCredits": 0,
"aiAnalystReportCredits": 0,
"adverseMediaReportCredits": 0,
"assistedReportCredits": 0,
"facialMatchingCredits": 0
},
"facialMatchingCredits": {
"aiReportCredits": 0,
"aiAnalystReportCredits": 0,
"adverseMediaReportCredits": 0,
"assistedReportCredits": 0,
"facialMatchingCredits": 0
}
},
"enterprise": {
"logoUrl": "https://example.com/logo.png",
"enterpriseName": "Tech Corp",
"palette": {
"backgroundColor": "#FFFFFF",
"highlightColor": "#007BFF",
"accentColor": "#6C757D",
"textColor": "#000000",
"textColor60": "rgba(0,0,0,0.6)"
}
},
"pdfConfig": {
"pdfSummary": true,
"pdfFocusedTopics": true,
"pdfLanguage": "en",
"pdfNegativePosts": true,
"pdfNeutralPosts": true,
"pdfPositivePosts": true,
"pdfSentimentAnalysis": true,
"pdfSocialMediaAccounts": true,
"pdfWebSearchPosts": true
}
}
}

Testing Your Webhook Integration​

You can test your webhook integration without spending credits by using our test endpoint:

  1. First, configure your webhook URL in the API key page of the WeCheck web application
  2. Use the test webhook endpoint to trigger a test notification
  3. WeCheck will send a mock payload to your configured webhook URL
  4. No credits will be consumed during this testing process

Best Practices​

  • Ensure your webhook endpoint responds with a 2xx status code to acknowledge receipt
  • Implement proper security validation for incoming webhook requests
  • Consider implementing retry logic in case your endpoint is temporarily unavailable
  • Process webhook notifications asynchronously to avoid timeout issues

Need Help?​

If you have any questions about webhook implementation or need technical assistance, don't hesitate to contact our support team. We're here to help you successfully integrate WeCheck into your workflow.