Send a verification code to the provided phone number.
Args: request: Phone verification request
Returns: Dict: Response with success status and message
No parameters
{
"phone": "string"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Verify a code for a phone number and return an authentication token.
Args: request: Verification code request
Returns: TokenResponse: Authentication token response
No parameters
{
"phone": "string",
"code": "string"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Revoke an authentication token.
Args: token: Authentication token to revoke
Returns: Dict: Response with success status
No parameters
{
"token": "string"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Validate an authentication token.
Args: token: Authentication token to validate (from Authorization header)
Returns: Dict: Response with validation status and user ID if valid
| Name | Description |
|---|---|
|
x *
any
(query)
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Check if a phone number already exists in the database.
Args: phone: Phone number to check (E.164 format expected)
Returns: Dict[str, bool]: Object with 'exists' boolean indicating if phone is registered
Raises: HTTPException: If there's an error checking the phone number
| Name | Description |
|---|---|
|
phone *
string
(query)
|
Phone number to check |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Check if an email address already exists in the database.
Args: email: Email address to check
Returns: Dict with 'exists' boolean, 'userId' if found, and 'hasCompleteProfile' boolean
Raises: HTTPException: If there's an error checking the email address
| Name | Description |
|---|---|
|
email *
string
(query)
|
Email address to check |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Create a new user in the system.
Args: user_data: User data including name, phone, bio, etc.
Returns: User: The created user data
Raises: HTTPException: If user creation fails or validation fails
No parameters
{
"phone": "string",
"email": "string",
"name": {
"first": "string",
"last": "User"
},
"bio": "string",
"age": 0,
"location": "string",
"profilePic": "string",
"color": "string",
"metadata": {
"archetype": false,
"referredBy": "string",
"network": [
{
"name": "string",
"email": "string",
"timeSpent": 0
}
],
"picture_data": {
"face_detected": false,
"gender": {
"label": "string",
"confidence": 0
},
"race": {
"label": "string",
"confidence": 0
},
"analyzed_at": "2025-07-12T07:30:45.178Z",
"error": "string"
}
}
}
| Code | Description | Links |
| 201 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Augment user data with LinkedIn information and create archetype users from network.
| Name | Description |
|---|---|
|
user_id *
string
(path)
|
The ID of the user to augment |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Retrieve a user's public profile information (no authentication required).
This endpoint returns only public-safe information suitable for profile viewing.
Args: user_id: The unique ID of the user to retrieve
Returns: Dict containing public user profile data
Raises: HTTPException: If user is not found
| Name | Description |
|---|---|
|
user_id *
string
(path)
|
The unique ID of the user |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Retrieve a user by their ID.
Args: user_id: The unique ID of the user to retrieve current_user: The currently authenticated user (from JWT token)
Returns: User: The requested user's data
Raises: HTTPException: If user is not found or not authorized
| Name | Description |
|---|---|
|
user_id *
string
(path)
|
The unique ID of the user |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Update a user's data.
Args: user_id: The ID of the user to update user_data: The user data to update current_user: The currently authenticated user (from JWT token)
Returns: User: The updated user data
Raises: HTTPException: If user is not found, not authorized, or update fails
| Name | Description |
|---|---|
|
user_id *
string
(path)
|
The ID of the user to update |
{
"userId": "string",
"phone": "string",
"email": "string",
"name": {
"first": "string",
"last": "User"
},
"bio": "string",
"age": 0,
"location": "string",
"profilePic": "string",
"color": "string",
"elo": 0,
"metadata": {
"created_ts": "2025-07-12T07:30:45.188Z",
"last_updated_ts": "2025-07-12T07:30:45.188Z",
"notes": {
"aiScore": 10,
"userScore": 10,
"text": "",
"flagged": false
},
"archetype": false,
"referredBy": "string",
"linkedin_info": {
"url": "string",
"content": {
"additionalProp1": {}
}
},
"network": [
{
"name": "string",
"email": "string",
"timeSpent": 0
}
],
"picture_data": {
"face_detected": false,
"gender": {
"label": "string",
"confidence": 0
},
"race": {
"label": "string",
"confidence": 0
},
"analyzed_at": "2025-07-12T07:30:45.188Z",
"error": "string"
}
},
"sender": "string"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Retrieve a user by their phone number.
Args: phone_number: The phone number to look up (E.164 format) current_user: The currently authenticated user (from JWT token)
Returns: User: The requested user's data
Raises: HTTPException: If user is not found or not authorized
| Name | Description |
|---|---|
|
phone_number *
string
(path)
|
The phone number to look up (E.164 format) |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
| Name | Description |
|---|---|
|
ref_phone *
string
(query)
|
|
|
ref_email *
string
(query)
|
|
|
sourceId *
string
(query)
|
|
|
targetId *
string
(query)
|
{
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Analyze a profile photo for face detection and metadata extraction. This endpoint is designed to be called after photo upload for background processing.
Args: user_id: User ID to update metadata for image_url: URL of the uploaded image to analyze bypass_auth: If 'true', bypasses authentication for profile creation current_user: Authenticated user (optional)
Returns: Dict with analysis results
| Name | Description |
|---|---|
|
user_id *
string
(query)
|
|
|
image_url *
string
(query)
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 401 |
Unauthorized |
No links |
| 403 |
Forbidden |
No links |
| 404 |
Not found |
No links |
| 422 |
Validation Error
Media type
|
No links |
Upload a profile photo to Google Cloud Storage with optional DeepFace analysis.
Args: background_tasks: FastAPI background tasks file: The uploaded file user_id: User ID (optional, not required for profile creation) bypass_auth: If 'true', bypasses authentication for profile creation
Returns: Dict with success status, image URL, and face analysis results
No parameters
|
file *
string($binary)
|
|
|
user_id
string
|
|
|
bypass_auth
string
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Update a user's profile picture with a processed image URL and perform face analysis. Uses GCS for storage with service account authentication for permanent access.
No parameters
|
user_id *
string
|
|
|
image_url *
string
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Process a webhook from LoopMessage. Only processes direct messages (DMs); group messages are ignored. If an attachment is present, passes the URL to the appropriate agent. Auto-registers users if their phone number is not found in the system. Implements cancellation pattern to handle double-texting.
| Name | Description |
|---|---|
|
bump
boolean
(query)
|
Default value : false |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Generate a signed URL for uploading a file to Google Cloud Storage.
Args: request: Request containing file name, content type, and bucket name
Returns: SignedUrlResponse: Object containing signed URL and public URL
No parameters
{
"fileName": "string",
"contentType": "string",
"bucketName": "series-v1-profiles"
}
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Generate an authenticated URL for accessing a file in Google Cloud Storage.
Args: bucket_name: Name of the GCS bucket blob_name: Name of the blob in GCS
Returns: Dict: Object containing authenticated URL
| Name | Description |
|---|---|
|
bucket_name *
string
(path)
|
Name of the GCS bucket |
|
blob_name *
string
(path)
|
Name of the blob in GCS |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Get a permanent access URL for a file in Google Cloud Storage. This URL requires proper authentication to access.
Args: bucket_name: Name of the GCS bucket blob_name: Name of the blob in GCS
Returns: Dict: Object containing permanent URL
| Name | Description |
|---|---|
|
bucket_name *
string
(path)
|
Name of the GCS bucket |
|
blob_name *
string
(path)
|
Name of the blob in GCS |
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Upload a profile photo to Google Cloud Storage with optional DeepFace analysis.
Args: background_tasks: FastAPI background tasks file: The uploaded file user_id: User ID (optional, not required for profile creation) bypass_auth: If 'true', bypasses authentication for profile creation
Returns: Dict with success status, image URL, and face analysis results
No parameters
|
file *
string($binary)
|
|
|
user_id
string
|
|
|
bypass_auth
string
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Update a user's profile picture with a processed image URL and perform face analysis. Uses GCS for storage with service account authentication for permanent access.
No parameters
|
user_id *
string
|
|
|
image_url *
string
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Proxy endpoint to serve profile images from Google Cloud Storage. This endpoint fetches the image using the backend's service account credentials and serves it to the frontend.
Args: bucket_name: Name of the GCS bucket blob_name: Name of the blob (file) in GCS
Returns: StreamingResponse: Image data with appropriate content type
| Name | Description |
|---|---|
|
bucket_name *
string
(path)
|
|
|
blob_name *
string
(path)
|
| Code | Description | Links |
| 200 |
Successful Response
Media type
Accept
header.
|
No links |
| 422 |
Validation Error
Media type
|
No links |
Model for phone verification request.
Phone number to verify