Introduction
Welcome to the Yoooo API documentation. This API allows you to programmatically access and interact with the Yoooo platform. It provides endpoints for user authentication, comprehensive profile management, contacts syncing, and retrieving public data such as user profiles, countries, and cities.
The API is built using RESTful principles and returns standard JSON responses. The base URL for all endpoints is:
Standard Response Format
All successful requests will return a consistent JSON structure wrapped with a status, a message, and the requested data payload:
{
"status": "success",
"message": "Success message here",
"data": {
// ... payload data
}
}
Authentication
Protected API endpoints require authentication via JWT (JSON Web Tokens). You can obtain a token by using the Login or Sign Up endpoints.
Once you have a token, you must include it in the Authorization header of your HTTP requests:
Errors
The API uses standard HTTP status codes to indicate the success or failure of an API request. Failed requests will always return a status of error and a descriptive message.
{
"status": "error",
"message": "Validation failed",
"errors": {
"email": "The email field must contain a valid email address.",
"password": "The password field is required."
}
}
| Code | Description |
|---|---|
| 200 / 201 | Success: The request was successful and data is returned. |
| 400 | Bad Request: The request was unacceptable, often due to missing or invalid parameters. |
| 401 | Unauthorized: No valid API token provided or the token has expired. |
| 403 | Forbidden: The API token doesn't have permissions to perform the request. |
| 404 | Not Found: The requested resource does not exist. |
| 500 | Server Error: Something went wrong on the API's end. |
Public Endpoints
Endpoints accessible without authentication.
Get Home
Retrieve initial home data and recent profiles.
Response Example 200 OK
{
"status": "success",
"message": "Welcome to the Yoooo API",
"data": {
"message": "Welcome to the Yoooo API",
"recent_profiles": [
{
"id": 10,
"status": "active",
"name": "Jane Doe",
"...": "..."
}
]
}
}
Get Countries
Retrieve a list of available active countries.
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"countries": [
{
"id": 1,
"name": "United States",
"code": "US"
}
]
}
}
Get Cities
Retrieve cities, optionally filtered by country.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| country_id | integer | Optional. Filter cities by the given country ID. |
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"cities": [
{
"id": 100,
"name": "New York",
"country_id": 1
}
]
}
}
Get Profiles List
Retrieve a list of profiles with extensive filtering options.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| gender | string | Filter by gender. Defaults to female. |
| country | string | Filter by country name. |
| city | string | Filter by city name. |
| membership | string | Filter by membership level. |
| sexualities | string|array | Filter by sexualities. Can be an array or comma-separated string. |
| is_verified | boolean | Filter only verified profiles (true/false). |
| services | string|array | Filter by provided services. Can be an array or comma-separated string. |
| limit | integer | Number of profiles to retrieve. Defaults to 24. |
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"profiles": [
{
"id": 1,
"name": "Jane Doe",
"gender": "female",
"is_verified": true,
"...": "..."
}
]
}
}
Get Single Profile Details
Retrieve specific details of a single profile by ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| id Required | integer | The unique ID of the profile. |
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"profile": {
"id": 1,
"name": "Jane Doe",
"gender": "female",
"country": "United States",
"city": "New York",
"about": "Hello, this is my profile.",
"...": "..."
}
}
}
Error Example 404 Not Found
{
"status": "error",
"message": "Profile not found"
}
Auth Endpoints
Endpoints related to user authentication and account recovery.
Login
Authenticate a user and receive a JWT token. Requires an active account.
Body Parameters (application/json or form-data)
| Parameter | Type | Description |
|---|---|---|
| email Required | string | The user's registered email address. Must be a valid email. |
| password Required | string | The user's password. |
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "Jane Doe",
"email": "jane@example.com"
}
}
}
Sign Up
Register a new user account. Returns an authentication token immediately and triggers a verification email.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| name Required | string | Full name of the user. Min 3, max 20 chars. |
| email Required | string | Must be a valid, unique email address. |
| password Required | string | Password for the account. Minimum 8 characters. |
Response Example 200 OK
{
"status": "success",
"message": "Account created successfully. Please verify your email.",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"verification_email_sent": true,
"user": {
"id": 2,
"username": "Jane Doe",
"email": "jane@example.com"
}
}
}
Verify Email
Verify an email address using the token sent in the welcome email.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| token Required | string | The verification token sent to the user's email. |
{
"status": "success",
"message": "Email verified successfully.",
"data": []
}
Resend Verification
Resend the email verification token if not already verified. (Cooldown applies).
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| email Required | string | The registered email address. |
{
"status": "success",
"message": "Verification email processed.",
"data": {
"sent": true
}
}
Forgot Password
Request a password reset link to be sent via email.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| email Required | string | The registered email address. |
{
"status": "success",
"message": "If an account exists for that email, a reset link has been sent.",
"data": []
}
Reset Password
Reset the password using the token from the forgot password email.
Body Parameters (JSON only)
| Parameter | Type | Description |
|---|---|---|
| token Required | string | The valid reset token. |
| password Required | string | New password. Minimum 8 characters. |
| confirm_password Required | string | Must match the password parameter exactly. |
{
"status": "success",
"message": "Password reset successfully.",
"data": []
}
User Panel Endpoints
Requires a valid JWT Bearer token in the Authorization header. Actions performed here are scoped to the authenticated user.
Dashboard
Retrieve user dashboard overview, including basic user account info and high-level profile statistics (like completion percentage).
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"user": {
"id": 1,
"name": "John Doe",
"email": "john@example.com"
},
"profile": {
"id": 15,
"status": "active",
"is_verified": true,
"membership": "premium",
"completion": 85
}
}
}
Get User Profile
Retrieve the authenticated user's complete, editable profile data. JSON string fields (like images, pricing, services) are automatically decoded into arrays.
Response Example 200 OK
{
"status": "success",
"message": "Success",
"data": {
"profile": {
"id": 15,
"name": "John Doe",
"gender": "male",
"dob": "1990-01-01",
"location": "Miami, FL",
"images": ["user_1_12345.webp"],
"services": ["service1", "service2"]
}
}
}
Update Profile
Create or update the user's profile. You must send a valid JSON payload. Certain fields (like images, services, etc.) should be sent as JSON arrays.
Body Parameters (application/json ONLY)
| Parameter | Type | Description |
|---|---|---|
| name Required | string | Display name (3-100 chars). |
| gender Required | string | Must be male, female, or other. |
| dob Required | string | Date of birth in YYYY-MM-DD format. |
| location Required | string | Location text (3-255 chars). |
| images | array | Array of image filenames. |
| pricing, services, languages, other_pages, sexuality | array/object | Must be sent as JSON structures. Will be encoded before saving. |
| other fields... | string | description, phone, whatsapp, height, weight, ethnicity, etc. |
{
"status": "success",
"message": "Profile updated successfully",
"data": []
}
Upload Photo
Upload a single profile photo. The server will process it, create WEBP variants, and append the filename to the profile's image list.
Body Parameters (multipart/form-data)
| Parameter | Type | Description |
|---|---|---|
| photo or image Required | file | The image file to upload. Allowed types: JPG, PNG, WEBP. |
{
"status": "success",
"message": "Photo uploaded successfully",
"data": {
"image": "user_1_169...webp",
"images": [
"user_1_169...webp"
]
}
}
Upload Contacts
Upload user contacts to the platform using a JSON file.
Body Parameters (multipart/form-data)
| Parameter | Type | Description |
|---|---|---|
| contacts_file Required | file | A valid .json file containing an array of contacts. Max size: 5MB. |
{
"status": "success",
"message": "Contacts uploaded successfully.",
"data": {
"uploaded_contacts_count": 250,
"stored_file": "contacts_2023....json"
}
}
Change Password
Change the authenticated user's account password.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| current_password Required | string | The user's current password. |
| new_password Required | string | The new password (min 8 chars). |
| confirm_password Required | string | Must match new_password exactly. |
{
"status": "success",
"message": "Password updated successfully.",
"data": []
}
Delete Account
Permanently delete the user's account, profile data, and uploaded images.
{
"status": "success",
"message": "Your account has been deleted successfully.",
"data": []
}