Predict Profile API
Create a Wize Snap profile prediction and receive a snapId for later communication analysis.
API base URL
https://backend.snap.wizer.businessPOST https://backend.snap.wizer.business/api/v1/snap
Headers
x-api-key: wz_live_your_api_key
Content-Type: application/json
Request Body
{
"name": "Alex Morgan",
"ageRange": "35-44",
"jobType": "Sales Director",
"notes": "Leads enterprise renewals and prefers concise commercial context."
}
Fields
name: Required string.notes: Required string.ageRange: Optional string.jobType: Optional string.
API Credit Cost
Each successful call to this endpoint deducts 1 API credit from your account. See API Billing & Credits for how to add more.
Prefer to try it live? Try it in the Playground.
Examples
Curl
curl -X POST "https://backend.snap.wizer.business/api/v1/snap" \
-H "Content-Type: application/json" \
-H "x-api-key: wz_live_your_api_key" \
-d '{
"name": "Alex Morgan",
"ageRange": "35-44",
"jobType": "Sales Director",
"notes": "Leads enterprise renewals and prefers concise commercial context."
}'
JavaScript
const response = await fetch("https://backend.snap.wizer.business/api/v1/snap", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "wz_live_your_api_key",
},
body: JSON.stringify({
"name": "Alex Morgan",
"ageRange": "35-44",
"jobType": "Sales Director",
"notes": "Leads enterprise renewals and prefers concise commercial context."
}
),
});
const result = await response.json();
if (!response.ok) {
throw new Error(result.message || "Wize Snap API request failed");
}
console.log(result);
Python
import requests
url = "https://backend.snap.wizer.business/api/v1/snap"
headers = {
"Content-Type": "application/json",
"x-api-key": "wz_live_your_api_key",
}
payload = {
"name": "Alex Morgan",
"ageRange": "35-44",
"jobType": "Sales Director",
"notes": "Leads enterprise renewals and prefers concise commercial context."
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
result = response.json()
if not response.ok:
raise Exception(result.get("message", "Wize Snap API request failed"))
print(result)
Go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := []byte(`{
"name": "Alex Morgan",
"ageRange": "35-44",
"jobType": "Sales Director",
"notes": "Leads enterprise renewals and prefers concise commercial context."
}`)
req, err := http.NewRequest("POST", "https://backend.snap.wizer.business/api/v1/snap", bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", "wz_live_your_api_key")
client := &http.Client{}
res, err := client.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
var result map[string]any
if err := json.Unmarshal(body, &result); err != nil {
panic(err)
}
if res.StatusCode < 200 || res.StatusCode >= 300 {
panic(result["message"])
}
fmt.Println(result)
}
Success Response
The backend returns the service response through the global response interceptor.
{
"success": true,
"message": "Snap generated successfully",
"data": {
"snapId": 123,
"snapResponse": {
"name": "Alex Morgan",
"profile": "Analyzer",
"primary_code": "DP-01",
"secondary_profile": "Collaborator",
"secondary_code": "DP-02",
"confidence": "High",
"reasoning": "The provided context shows a preference for evidence, risk clarity, and concise commercial detail.",
"summary": "Alex is likely to respond best to structured recommendations backed by clear evidence.",
"secondary_profile_summary": "Alex is likely to respond best to recommendations that emphasize collaboration, stakeholder input, and team alignment."
}
},
"statusCode": 201,
"timestamp": "2026-06-23T13:30:00.000Z",
"error": null
}
Some profile fields can be null if the upstream prediction does not provide them.
{
"success": true,
"message": "Snap generated successfully",
"data": {
"snapId": 123,
"snapResponse": {
"name": "Alex Morgan",
"profile": null,
"primary_code": null,
"secondary_profile": null,
"secondary_code": null,
"confidence": null,
"reasoning": null,
"summary": null,
"secondary_profile_summary": null
}
},
"statusCode": 201,
"timestamp": "2026-06-23T13:30:00.000Z",
"error": null
}
Error Responses
Missing Or Invalid API Key
API-key validation happens in middleware, so this response is returned before the global response interceptor.
{
"message": "Invalid or inactive api key",
"error": "Invalid or inactive api key",
"statusCode": 401
}
Validation Error
{
"success": false,
"message": "name must be a string",
"error": "name must be a string",
"statusCode": 400,
"timestamp": "2026-06-23T13:30:00.000Z"
}
Insufficient API Credits
Returned when an API key request is made and the account has no remaining API credits.
{
"success": false,
"message": "Insufficient API credits. Please add more credits to your account to continue.",
"error": "Insufficient API credits. Please add more credits to your account to continue.",
"statusCode": 400,
"timestamp": "2026-06-23T13:30:00.000Z"
}
Upstream Generation Failed
{
"success": false,
"message": "Failed to generate snap Please try again later",
"error": "Failed to generate snap Please try again later",
"statusCode": 500,
"timestamp": "2026-06-23T13:30:00.000Z"
}
Restricted Secondary Profile
{
"success": false,
"message": "Secondary profile predicted as Visionary which is not allowed please try it again",
"error": "Secondary profile predicted as Visionary which is not allowed please try it again",
"statusCode": 500,
"timestamp": "2026-06-23T13:30:00.000Z"
}
Rate Limit Exceeded
See Rate Limiting for the request limit, response headers, and IP-based tracking.
{
"success": false,
"message": "ThrottlerException: Too Many Requests",
"error": "ThrottlerException: Too Many Requests",
"statusCode": 429,
"timestamp": "2026-06-23T13:30:00.000Z"
}