Introduction
This documentation aims to provide all the information you need to work with our API.
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_BEARER_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve a user token by calling the login endpoint or register endpoint for new users.
Academic Information Management
Endpoints for managing academic informations of students
Get the current authenticated user's academic information.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/ai" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/ai"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"id": 1,
"current_status": {
"id": 2,
"name": "Undergraduate"
},
"high_schools_attended": []
}
Example response (404):
{
"message": "Academic information not found",
"academic_information": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new academic information entry.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/ai" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"current_status\": \"consequatur\",
\"user_id\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/ai"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"current_status": "consequatur",
"user_id": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an academic information entry.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/ai/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"current_status\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/ai/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"current_status": "consequatur"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin Notification Management
Endpoints to handle admin-scoped notifications (listing, viewing and marking as read).
These endpoints return enriched information via the AdminNotificationResource and support
filtering by read/unread and pagination. They are scoped to the authenticated admin (results limited
to notifications intended for the authenticated admin).
Example: GET /api/admin/admin_notifications?status=unread&paginated=true
Display a listing of the resource.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.224905Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the specified resource.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.236425Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/v1/admin/admin_notifications/read-all
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications/read-all" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/admin_notifications/read-all"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Authentication Endpoints
Endpoints to handle authentication.
Register a new user
This endpoint handles user registration. It accepts a name, email, and password, creates a new user, and returns an authentication token.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/register" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"John Doe\",
\"email\": \"john@ollav.com\",
\"password\": \"O[2UZ5ij-e\\/dl4m{o,\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/register"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "John Doe",
"email": "john@ollav.com",
"password": "O[2UZ5ij-e\/dl4m{o,"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Login a new user
This endpoint handles user signin process. It accepts an email and password, Check the user, and returns an authentication token.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"john@ollav.com\",
\"password\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "john@ollav.com",
"password": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Logout the authenticated user
requires authentication
This endpoint handles user signing out.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/logout" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/logout"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new staff member
This endpoint handles staff account creation. It accepts a name, email, password, and role_id, creates a new staff user, and sends a welcome email notification.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/staff" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Jane Smith\",
\"email\": \"jane@ollav.com\",
\"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
\"role_id\": 2
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Jane Smith",
"email": "jane@ollav.com",
"password": "O[2UZ5ij-e\/dl4m{o,",
"role_id": 2
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bundles Management
List available bundles
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/bundles" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/bundles"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, List of active bundles with emerging and global prices):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get bundle details
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/bundles/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/bundles/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Detailed bundle information):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create new bundle (admin only)
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/bundles" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Premium Pack\",
\"application_number\": 10,
\"emerging_price\": 50,
\"global_price\": 100,
\"currency_id\": 1,
\"whats_included\": [
\"5 job applications\",
\"Priority support\"
],
\"ideal_for\": \"Active job seekers\",
\"is_active\": true
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/bundles"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "Premium Pack",
"application_number": 10,
"emerging_price": 50,
"global_price": 100,
"currency_id": 1,
"whats_included": [
"5 job applications",
"Priority support"
],
"ideal_for": "Active job seekers",
"is_active": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get bundle details
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Detailed bundle information):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update bundle (admin only)
requires authentication
Example request:
curl --request PATCH \
"https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddq\",
\"application_number\": 2,
\"emerging_price\": 45,
\"global_price\": 95,
\"currency_id\": 2,
\"whats_included\": [
\"consequatur\"
],
\"ideal_for\": \"mqeopfuudtdsufvyvddqa\",
\"is_active\": false
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddq",
"application_number": 2,
"emerging_price": 45,
"global_price": 95,
"currency_id": 2,
"whats_included": [
"consequatur"
],
"ideal_for": "mqeopfuudtdsufvyvddqa",
"is_active": false
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete bundle (admin only)
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/bundles/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Contact Management
Endpoints for managing contacts
Store a newly created contact.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/contacts" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"qkunze@example.com\",
\"phone\": \"consequatur\",
\"address\": \"mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury\",
\"personal_information_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/contacts"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "qkunze@example.com",
"phone": "consequatur",
"address": "mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury",
"personal_information_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified contact.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/contacts/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"qkunze@example.com\",
\"address\": \"opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "qkunze@example.com",
"address": "opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete the specified contact.
requires authentication
this must be done by the owning user or an admin.
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/contacts/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/contacts/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Countries Management
Manage countries and their associations with study destinations (regions). Countries are categorized by region tier: emerging (Africa, Asia) and global (USA, UK, Europe, UAE).
List countries with filters
requires authentication
Returns paginated list of countries with their associated region information. Supports filtering by region name, market tier, and search queries.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/countries?region=Africa&tier=emerging&search=Burundi&sort_by=code&sort_order=asc&per_page=20" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"region\": \"UK\",
\"tier\": \"emerging\",
\"search\": \"vmqeopfuudtdsufvyvddq\",
\"sort_by\": \"code\",
\"sort_order\": \"desc\",
\"per_page\": 1
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/countries"
);
const params = {
"region": "Africa",
"tier": "emerging",
"search": "Burundi",
"sort_by": "code",
"sort_order": "asc",
"per_page": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"region": "UK",
"tier": "emerging",
"search": "vmqeopfuudtdsufvyvddq",
"sort_by": "code",
"sort_order": "desc",
"per_page": 1
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Paginated list of countries):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get country details
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Country details with region):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create new country
requires authentication
Creates a new country with localized names and associates it with a study destination region.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/countries" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"code\": \"BI\",
\"flag\": \"🇧🇮\",
\"dial_code\": \"+257\",
\"name\": {
\"en\": \"Burundi\",
\"fr\": \"Burundi\"
},
\"region_id\": \"9b1e967a-706d-4912-9c31\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/countries"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"code": "BI",
"flag": "🇧🇮",
"dial_code": "+257",
"name": {
"en": "Burundi",
"fr": "Burundi"
},
"region_id": "9b1e967a-706d-4912-9c31"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201, Country created successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update country
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"code\": \"BI\",
\"flag\": \"🇧🇮\",
\"dial_code\": \"+257\",
\"name\": {
\"en\": \"Burundi\",
\"fr\": \"Burundi\"
},
\"region_id\": \"9b1e967a-706d-4912-9c31\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"code": "BI",
"flag": "🇧🇮",
"dial_code": "+257",
"name": {
"en": "Burundi",
"fr": "Burundi"
},
"region_id": "9b1e967a-706d-4912-9c31"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Country updated successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete country
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/countries/002e58d3-68bd-4d41-80b0-eb9e97919daf"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204, Country deleted successfully):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Credit Management
User Credit Management Endpoints to manage user credits.
Deduct credits for application
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/users/1/credits/deduct" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"quantity\": 1,
\"preferred_bundle_id\": \"consequatur\",
\"price_type\": \"emerging\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/credits/deduct"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"quantity": 1,
"preferred_bundle_id": "consequatur",
"price_type": "emerging"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Credits deducted successfully):
Example response (400, Insufficient credits):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get user credit balance
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/users/1/credits/balance" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/credits/balance"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Current credit balance with breakdown):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get user credit history
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/users/1/credits/history" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/credits/history"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Credit transaction history):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User Transaction Management Endpoints to record and view user transactions (e.g., credit purchases, application fees). Used primarily for tracking and displaying transaction history.
Record a transaction
requires authentication
Typically used when a user purchases credits or pays an application fee.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/users/1/transactions" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"transaction_type\": \"credit_purchase\",
\"amount\": 100
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/transactions"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"transaction_type": "credit_purchase",
"amount": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Transaction recorded successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a transaction
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/users/1/transactions/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/transactions/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Transaction details):
Example response (404, Transaction not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List user transaction history
requires authentication
Returns paginated list of all recorded transactions.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/users/1/transactions?per_page=20" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1/transactions"
);
const params = {
"per_page": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Paginated list of transactions):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
University Credit Management Endpoints to manage credits allocated to universities (e.g., for application processing).
Add credits to university
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/add" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"amount\": 100,
\"description\": \"Bulk purchase\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/add"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"amount": 100,
"description": "Bulk purchase"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Credits added successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Deduct credits from university
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/deduct" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"amount\": 10,
\"description\": \"Application processed\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/deduct"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"amount": 10,
"description": "Application processed"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Credits deducted successfully):
Example response (400, Insufficient credits):
Example response (404, No credit record found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get university credit balance
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/balance" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac/credits/balance"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Current credit balance):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Major Credit Management Endpoints to manage credits allocated to majors (e.g., application cost per major).
Add credits to major
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/add" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"amount\": 100,
\"description\": \"Bulk purchase\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/add"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"amount": 100,
"description": "Bulk purchase"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Credits added successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Deduct credits from major
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/deduct" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"amount\": 10,
\"description\": \"Application processed\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/deduct"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"amount": 10,
"description": "Application processed"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Credits deducted successfully):
Example response (400, Insufficient credits):
Example response (404, No credit record found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get major credit balance
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/balance" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/majors/6/credits/balance"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Current credit balance):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Credit Purchases & Bundle Payments
Submit bundle purchase with payment proof
requires authentication
Allows a user to buy a credit bundle via offline/manual payment (e.g., mobile money, bank transfer). User selects a bundle and uploads a screenshot/receipt as proof. The request becomes pending until an admin approves or rejects it.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/credit_purchases" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "bundle_id=019b1de6-8c48-7396-9209-11c69db9e53b"\
--form "amount=56"\
--form "proof_image=@/tmp/phpvTVROV" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/credit_purchases"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('bundle_id', '019b1de6-8c48-7396-9209-11c69db9e53b');
body.append('amount', '56');
body.append('proof_image', document.querySelector('input[name="proof_image"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201, Proof submitted successfully. Awaiting admin approval.):
Example response (422, Validation errors (invalid bundle, wrong file type, etc.)):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List pending credit purchases (admin only)
requires authentication
Returns paginated list of purchases awaiting approval, with user and bundle details.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/credit_purchases/pending" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/credit_purchases/pending"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Paginated list of pending purchases):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Approve credit purchase (admin only)
requires authentication
On approval:
- Credits from the bundle are added to the user's balance
- A transaction record is created (type: credit_purchase)
- Purchase status changes to approved
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/credit_purchases/consequatur/approve" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/credit_purchases/consequatur/approve"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200, Purchase approved and credits added successfully):
Example response (400, Purchase already processed):
Example response (404, Purchase not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reject credit purchase (admin only)
requires authentication
Rejects the purchase and records an admin note (reason).
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/credit_purchases/consequatur/reject" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"admin_note\": \"Payment not received or proof unclear\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/credit_purchases/consequatur/reject"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"admin_note": "Payment not received or proof unclear"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Purchase rejected successfully):
Example response (400, Purchase already processed):
Example response (422, Missing or invalid admin_note):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List pending credit purchases (admin only)
requires authentication
Returns paginated list of purchases awaiting approval, with user and bundle details.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/pending" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/pending"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Paginated list of pending purchases):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Approve credit purchase (admin only)
requires authentication
On approval:
- Credits from the bundle are added to the user's balance
- A transaction record is created (type: credit_purchase)
- Purchase status changes to approved
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/consequatur/approve" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/consequatur/approve"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Example response (200, Purchase approved and credits added successfully):
Example response (400, Purchase already processed):
Example response (404, Purchase not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reject credit purchase (admin only)
requires authentication
Rejects the purchase and records an admin note (reason).
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/consequatur/reject" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"admin_note\": \"Payment not received or proof unclear\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/credit-purchases/consequatur/reject"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"admin_note": "Payment not received or proof unclear"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Purchase rejected successfully):
Example response (400, Purchase already processed):
Example response (422, Missing or invalid admin_note):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Currency
Manage currencies
Display a listing of all the currencies.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/currencies" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/currencies"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": true,
"data": [
{
"id": "0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42",
"code": "GBP",
"symbol": "£"
},
{
"id": "110ac3b9-d073-4e71-ac19-1c20a21ead1a",
"code": "EUR",
"symbol": "€"
},
{
"id": "134c1321-cfcb-4186-8732-0ed04440b595",
"code": "AUD",
"symbol": "A$"
},
{
"id": "6edd3a74-de48-4273-b307-3354cf7774b4",
"code": "CAD",
"symbol": "CA$"
},
{
"id": "861f0e7e-40fe-4b3f-9771-d3d4676ae8a6",
"code": "USD",
"symbol": "$"
}
],
"timestamp": "2026-03-05T16:00:07.460952Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created currency.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/currencies" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"code\": \"vmqeopfuu\",
\"symbol\": \"dtdsufvyv\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/currencies"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"code": "vmqeopfuu",
"symbol": "dtdsufvyv"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the specified currency.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": true,
"data": {
"id": "0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42",
"code": "GBP",
"symbol": "£",
"created_at": "2026-01-30T15:31:20.000000Z",
"updated_at": null
},
"timestamp": "2026-03-05T16:00:07.474542Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified currency.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"symbol\": \"vmqeopfuu\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"symbol": "vmqeopfuu"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified resource from storage.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/currencies/0a2264e3-b4f0-4ebd-8d07-fcfb99ed1e42"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Current Status Management
Manage the current status in the system
List of all the current status a student can have.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/current_status" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/current_status"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.166782Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created current status.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/current_status" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/current_status"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show one current status.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/current_status/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/current_status/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.183371Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified resource in storage.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/current_status/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/current_status/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "consequatur"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified resource from storage.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/current_status/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/current_status/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Document Locker
Endpoints to manage the document locker
Show the content of the document locker
requires authentication
The document locker that is associated with authenticated user also the user has to be as student.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/document_locker" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/document_locker"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.667357Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show one specific document locker by user id
requires authentication
can be used by the user owner of the token or an admin to fetch the document locker of a specific user
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/document_locker/consequatur?id=1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/document_locker/consequatur"
);
const params = {
"id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.672966Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all exam results for the authenticated user's locker.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/exam_results" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/exam_results"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.678938Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a specific exam result in the authenticated user's locker.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/exam_results/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/exam_results/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.685300Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a specific exam result from the authenticated user's locker.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/exam_results/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/exam_results/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all other documents for the authenticated user's locker.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/other_documents" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/other_documents"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.694954Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show a specific other document in the authenticated user's locker.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/other_documents/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/other_documents/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.701503Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a specific other document from the authenticated user's locker.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/other_documents/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/other_documents/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Setup or init a new document locker for the authenticated student
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/document_locker/setup" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/document_locker/setup"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Endpoint to upload documents to the authenticated student's locker.
requires authentication
Supported upload types (send as upload_type):
- transcript: requires
description(string) andtranscript_file(file: pdf, txt, docx) - exam_results: requires
exam_name(string) and eitherexam_result_file(file) ORexam_result_text(string). Optionalscoreanddescription. - recommendation_letter: requires
descriptionandrecommendation_letter_file(file) - personal_statement: requires
descriptionand eitherpersonal_statement_file(file) orpersonal_statement_text(string) - resume: requires
resume_file(file) - passport: requires
passport_file(file) - id_document: requires
id_document_file(file: pdf, jpg, png),document_type(string: passport, national_id, drivers_license, etc.), anddate_of_birth(date: Y-m-d format) - others: requires
document_name, optionaldescription, andother_document_file(file: pdf, jpg, png)
Files are validated with extensions and size limits (see controller validation rules).
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/document_locker/upload" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"upload_type\": \"transcript\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/document_locker/upload"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"upload_type": "transcript"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Endpoint to replace a document already stored in the locker.
requires authentication
Use upload_type and doc_id to select which document to replace, then send the same file param that
would be used for an upload of that type. Supported upload_type values and file params are the same as
for the upload endpoint (transcript, exam_results, recommendation_letter, personal_statement, resume, passport, others).
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/document_locker/replace" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"upload_type\": \"transcript\",
\"doc_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/document_locker/replace"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"upload_type": "transcript",
"doc_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Submit or update the student's overall academic grade.
requires authentication
This endpoint allows a student to manually enter their academic average (e.g., moyenne générale from Diplôme d'État for Burundian users, GPA for international users, etc.). The submitted grade is stored in the Document Locker section and requires admin verification before it can be used in university/major recommendation matching.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/profile/grade" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"grading_system\": \"percentage_100\",
\"grade_value\": 11613.31890586,
\"description\": \"\\\"Moyenne générale - Diplôme d\'État 2024\\\"\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/profile/grade"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"grading_system": "percentage_100",
"grade_value": 11613.31890586,
"description": "\"Moyenne générale - Diplôme d'État 2024\""
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "Grade submitted successfully",
"grade": {
"id": 45,
"user_id": 123,
"grading_system": "percentage_100",
"grade_value": 76.5,
"description": "Moyenne générale - Diplôme d'État 2024",
"status_id": 2,
"verified_at": null,
"created_at": "2025-12-15T10:30:00.000000Z",
"updated_at": "2025-12-15T10:30:00.000000Z"
}
}
Example response (403):
{
"error": "Not a student"
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"grading_system": [
"The selected grading system is invalid."
],
"grade_value": [
"The grade value must be a number."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin verification of a specific uploaded document
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/upload_validation" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"document_locker_id\": 17,
\"document_type\": \"consequatur\",
\"document_id\": 17,
\"verdict\": \"consequatur\",
\"feedback\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/upload_validation"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"document_locker_id": 17,
"document_type": "consequatur",
"document_id": 17,
"verdict": "consequatur",
"feedback": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Endpoints
Complete the student onboarding process.
requires authentication
This endpoint processes all required onboarding information including personal details, contact information, languages, ID document, preferences, and special needs.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/onboarding" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "date_of_birth=2020-07-01"\
--form "gender=Male"\
--form "nationality=mqeopfuudtdsufvyvddqa"\
--form "email=eloisa.harber@example.com"\
--form "phone=fqcoynlazghdtqtqx"\
--form "address=bajwbpilpmufinllwloau"\
--form "languages[]=ydlsmsjuryvojcybzvrby"\
--form "id_document_type=ickznkygloigmkwxphlva"\
--form "study_destination_ids[]=17"\
--form "intended_field_of_study=mqeopfuudtdsufvyvddqa"\
--form "min_budget=45"\
--form "max_budget=46"\
--form "currency=AUD"\
--form "scholarship_interest=1"\
--form "special_needs[]=iihfqcoynlazghdtqtqxb"\
--form "profile_photo=@/tmp/phpLJrP0r" \
--form "id_document_file=@/tmp/phpBbC2n7" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/onboarding"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('date_of_birth', '2020-07-01');
body.append('gender', 'Male');
body.append('nationality', 'mqeopfuudtdsufvyvddqa');
body.append('email', 'eloisa.harber@example.com');
body.append('phone', 'fqcoynlazghdtqtqx');
body.append('address', 'bajwbpilpmufinllwloau');
body.append('languages[]', 'ydlsmsjuryvojcybzvrby');
body.append('id_document_type', 'ickznkygloigmkwxphlva');
body.append('study_destination_ids[]', '17');
body.append('intended_field_of_study', 'mqeopfuudtdsufvyvddqa');
body.append('min_budget', '45');
body.append('max_budget', '46');
body.append('currency', 'AUD');
body.append('scholarship_interest', '1');
body.append('special_needs[]', 'iihfqcoynlazghdtqtqxb');
body.append('profile_photo', document.querySelector('input[name="profile_photo"]').files[0]);
body.append('id_document_file', document.querySelector('input[name="id_document_file"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Return precomputed dashboard metrics or a timeseries over a date range.
requires authentication
Query params:
- start YYYY-MM-DD (optional)
- end YYYY-MM-DD (optional)
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/metrics" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/metrics"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.360985Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/v1/admin/metrics/recompute
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/recompute" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/recompute"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Return aggregated per-university metrics over a date range (or single day if start=end)
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/metrics/universities" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/universities"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.372368Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List metric events with optional filters
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/metrics/events" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/events"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.380174Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Backfill metrics for a date range (admin-triggered)
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/backfill" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"start\": \"2026-03-05T16:00:08\",
\"end\": \"2107-04-04\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/metrics/backfill"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"start": "2026-03-05T16:00:08",
"end": "2107-04-04"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
HighSchool Management
Endpoints for managing highschools
Store a newly created highSchool.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/highschools" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddq\",
\"country\": \"amniihfqcoynlazghdtqt\",
\"years\": 16,
\"academic_information_id\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/highschools"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddq",
"country": "amniihfqcoynlazghdtqt",
"years": 16,
"academic_information_id": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified highSchool.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/highschools/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddq\",
\"country\": \"amniihfqcoynlazghdtqt\",
\"years\": 16
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/highschools/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddq",
"country": "amniihfqcoynlazghdtqt",
"years": 16
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified highSchool.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/highschools/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/highschools/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Majors Management
Get all majors
requires authentication
Returns a paginated list of majors.
You can optionally filter by degree or university.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/majors?degree=Bachelor&university_id=42&page=1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/majors"
);
const params = {
"degree": "Bachelor",
"university_id": "42",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.976137Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a single major
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/majors/6" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/majors/6"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"id": 1,
"name": "Computer Science",
"description": "Software engineering & algorithms",
"degree": "Bachelor",
"is_applications_open": true,
"minimum_gpa_grades": "3.0 / 75%",
"budget_range": "$8k–12k/year",
"is_scholarship_available": true,
"university": {
"id": 42,
"name": "Example University"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new major
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/majors" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddq\",
\"description\": \"Dolores dolorum amet iste laborum eius est dolor.\",
\"degree\": \"PHD\",
\"is_applications_open\": true,
\"minimum_gpa_grades\": \"dtdsufvyvddqamniihfqc\",
\"budget_range\": \"oynlazghdtqtqxbajwbpi\",
\"is_scholarship_available\": true,
\"university_id\": \"consequatur\",
\"application_deadline\": \"2026-03-05T16:00:08\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/majors"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddq",
"description": "Dolores dolorum amet iste laborum eius est dolor.",
"degree": "PHD",
"is_applications_open": true,
"minimum_gpa_grades": "dtdsufvyvddqamniihfqc",
"budget_range": "oynlazghdtqtqxbajwbpi",
"is_scholarship_available": true,
"university_id": "consequatur",
"application_deadline": "2026-03-05T16:00:08"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"id": 11,
"name": "Data Science",
"description": "Machine learning & big-data analytics",
"degree": "Master",
"is_applications_open": true,
"minimum_gpa_grades": "3.5 / 80%",
"budget_range": "$10k–15k/year",
"is_scholarship_available": false,
"university": {
"id": 5,
"name": "Tech University"
}
}
Example response (403):
{
"message": "Forbidden"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Matching Suggestions
APIs for managing matching suggestions
List of all matching suggestions for a user
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/my_suggestions" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/my_suggestions"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.002900Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display one matching suggestion
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/my_suggestions/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/my_suggestions/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.011303Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a new matching suggestion
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"suggested_user_id\": 17,
\"match_percentage\": 13,
\"reason\": \"qeopfuudtdsufvyvddqam\",
\"major_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"suggested_user_id": 17,
"match_percentage": 13,
"reason": "qeopfuudtdsufvyvddqam",
"major_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update one matching suggestion.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"suggested_user_id\": 17,
\"match_percentage\": 13,
\"reason\": \"qeopfuudtdsufvyvddqam\",
\"major_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"suggested_user_id": 17,
"match_percentage": 13,
"reason": "qeopfuudtdsufvyvddqam",
"major_id": 17
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete one matching suggestion.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/matchingSuggestions/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Miscellaneous
Get the user by the token
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/user" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/user"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.346479Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check if the api is online
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/health" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/health"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"status": "OK"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Payment Management
Payment Proof Management Endpoints to manage payment proofs and admin comments.
List payment proofs
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/payment_proofs?status=pending&per_page=15" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payment_proofs"
);
const params = {
"status": "pending",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, List of payment proofs retrieved successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create payment proof
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/payment_proofs" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "receipt_number=REC-2024-001"\
--form "payer_name=John Doe"\
--form "amount=150"\
--form "payment_date=2024-01-15"\
--form "payment_method=bank_transfer"\
--form "payment_id=550e8400-e29b-41d4-a716-446655440000"\
--form "image=@/tmp/php0QMKMF" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payment_proofs"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('receipt_number', 'REC-2024-001');
body.append('payer_name', 'John Doe');
body.append('amount', '150');
body.append('payment_date', '2024-01-15');
body.append('payment_method', 'bank_transfer');
body.append('payment_id', '550e8400-e29b-41d4-a716-446655440000');
body.append('image', document.querySelector('input[name="image"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (201, Payment proof created successfully):
Example response (403, Unauthorized - can only create proof for own payments):
Example response (404, Payment not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get payment proof details
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Payment proof retrieved successfully):
Example response (403, Unauthorized to view this payment proof):
Example response (404, Payment proof not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update payment proof
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"status\": \"approved\",
\"admin_comment\": \"Payment verified successfully\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"status": "approved",
"admin_comment": "Payment verified successfully"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Payment proof updated successfully):
Example response (403, Unauthorized):
Example response (404, Payment proof not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Admin verify payment proof
requires authentication
On approval: Verifies proof file, auto-detects price type from payment amount, approves proof, approves payment, approves credit purchase, adds credits, records transaction. On rejection: Requires comment explaining why, rejects proof/payment/credit purchase, records rejection.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur/verify" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"action\": \"approve\",
\"admin_comment\": \"Payment proof unclear\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payment_proofs/consequatur/verify"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"action": "approve",
"admin_comment": "Payment proof unclear"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Payment proof processed successfully):
Example response (400, Invalid action or missing required fields):
Example response (403, Admin access required):
Example response (404, Payment proof not found):
Example response (422, Payment proof file verification failed):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Payment Records Endpoints to view payment records and transaction history.
List payments
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/payments?status=paid&provider=stripe&page=1&per_page=15" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payments"
);
const params = {
"status": "paid",
"provider": "stripe",
"page": "1",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, List of payments retrieved successfully):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get payment details
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/payments/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/payments/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Payment retrieved successfully):
Example response (403, Unauthorized to view this payment):
Example response (404, Payment not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Personal Information
Manage personal informations of a student
Get the current authenticated user's personal information.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/pi" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/pi"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"id": 1,
"date_of_birth": "1995-06-01",
"gender": "Female",
"nationality": "Kenya",
"user_id": 5
}
Example response (404):
{
"message": "Personal information not found",
"personal_information": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created Personal info.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/pi/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"date_of_birth\": \"2026-03-05T16:00:07\",
\"gender\": \"consequatur\",
\"nationality\": \"mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury\",
\"user_id\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/pi/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"date_of_birth": "2026-03-05T16:00:07",
"gender": "consequatur",
"nationality": "mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury",
"user_id": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified personal information.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/pi/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"date_of_birth\": \"2026-03-05T16:00:07\",
\"gender\": \"consequatur\",
\"nationality\": \"mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/pi/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"date_of_birth": "2026-03-05T16:00:07",
"gender": "consequatur",
"nationality": "mqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjury"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "Personal Information updated successfully",
"personal_information": {
"id": 1,
"date_of_birth": "1995-06-01",
"gender": "Female",
"nationality": "Kenya"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Preferences and goals
Manage student preferences.
Get the current authenticated user's preferences.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/preferences" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/preferences"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"id": 1,
"intended_field_of_study": "Computer Science",
"min_budget": 5000,
"max_budget": 20000,
"currency": "USD",
"scholarship_interest": true,
"study_destinations": []
}
Example response (404):
{
"message": "Preferences not found",
"preferences": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created preference.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/preferences" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"intended_field_of_study\": \"consequatur\",
\"min_budget\": 11613.31890586,
\"max_budget\": 11613.31890586,
\"currency\": \"opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj\",
\"user_id\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/preferences"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"intended_field_of_study": "consequatur",
"min_budget": 11613.31890586,
"max_budget": 11613.31890586,
"currency": "opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj",
"user_id": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified preference.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/preferences/consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"min_budget\": 11613.31890586,
\"max_budget\": 11613.31890586,
\"currency\": \"opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/preferences/consequatur"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"min_budget": 11613.31890586,
"max_budget": 11613.31890586,
"currency": "opfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjuryvoj"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Special Needs Management
Endpoints to manage special needs
Store a newly created special need.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/special_needs" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"needs\": []
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/special_needs"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"needs": []
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified special needs of a student.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/special_needs/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/special_needs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "PUT",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified resource from storage.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/special_needs/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/special_needs/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Staff Management
Manage staff members and their student assignments
Get the staff member assigned to a student
requires authentication
Student can view their own staff member, admins can view any student's staff member. Returns paginated list of staff members assigned to a student.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/my_staff?student_id=17" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/my_staff"
);
const params = {
"student_id": "17",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [{"id": 5, "name": "Staff Member", "email": "staff@example.com", ...}], "links": {...}, "meta": {"total": 1, "per_page": 15}}
Example response (403):
{
"message": "You can only view your own assigned staff"
}
Example response (404):
{
"message": "Student not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show the list of all staff members in the system
requires authentication
Get all staff members (non-student users) available in the system. Results are paginated with 10 staff members per page.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [...], "links": {...}, "meta": {"total": 5, "per_page": 10, "current_page": 1}}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update a staff member
requires authentication
Update user-related information for a staff member. Password and role cannot be updated through this endpoint.
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/staff/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddq\",
\"email\": \"kunde.eloisa@example.com\",
\"profile_picture\": \"consequatur\",
\"first_time_login\": true,
\"is_verified\": true
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddq",
"email": "kunde.eloisa@example.com",
"profile_picture": "consequatur",
"first_time_login": true,
"is_verified": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{"data": {...}, "message": "Staff member updated successfully"}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Assign a student to a staff member
requires authentication
Only admins can assign students to staff members. A staff member cannot be a student (role_id must not be 1).
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/staff/assign-student" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"staff_id\": 17,
\"student_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/assign-student"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"staff_id": 17,
"student_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "Student assigned to staff member successfully",
"staff_id": 5,
"student_id": 3
}
Example response (403):
{
"message": "Only admins can assign students to staff"
}
Example response (404):
{
"message": "Staff or student not found"
}
Example response (422):
{"message": "User is not a staff member" or "User is not a student" or "Student is already assigned to this staff"}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove a student from a staff member
requires authentication
Only admins can remove student assignments from staff members.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/staff/remove-student" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"staff_id\": 17,
\"student_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/remove-student"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"staff_id": 17,
"student_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"message": "Student removed from staff member successfully",
"staff_id": 5,
"student_id": 3
}
Example response (403):
{
"message": "Only admins can remove student assignments"
}
Example response (404):
{"message": "Staff or student not found" or "Assignment not found"}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all staff members
requires authentication
Get a paginated list of all staff members in the system. Results are paginated with 15 staff members per page.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/list" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/list"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [{"id": 5, "name": "Staff Member", "email": "staff@example.com", ...}], "links": {...}, "meta": {"total": 5, "per_page": 15}}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all staff members with their assigned students count
requires authentication
Retrieve a paginated list of all staff members in the system with the count of students assigned to each.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/with-counts" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/with-counts"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [{"user_id": 5, "name": "Staff Member", "email": "staff@example.com", "assigned_students_count": 3}, ...], "links": {...}, "meta": {"total": 5, "per_page": 10}}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get count of unassigned students
requires authentication
Retrieve the total count of students who are not assigned to any staff member.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/unassigned/count" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/unassigned/count"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"unassigned_count": 5
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all unassigned students with count
requires authentication
Retrieve all students who are not assigned to any staff member, along with the total count.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/unassigned/students" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/unassigned/students"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [...], "links": {...}, "meta": {...}}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all students assigned to a staff member
requires authentication
Staff member can view their own students, admins can view any staff member's students. Results are paginated with 15 students per page.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/students?staff_id=17" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/students"
);
const params = {
"staff_id": "17",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [{"id": 3, "name": "John Doe", "email": "john@example.com", ...}], "links": {...}, "meta": {"total": 1, "per_page": 15}}
Example response (403):
{
"message": "You can only view your own assigned students"
}
Example response (404):
{
"message": "Staff member not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a staff member with the count of assigned students
requires authentication
Retrieve a specific staff member and include the total number of students assigned to them.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/staff/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/staff/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": {..., "assigned_students_count": 3}}
Example response (404):
{
"message": "Staff member not found"
}
Example response (422):
{
"message": "User is not a staff member"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get the staff member assigned to a student
requires authentication
Student can view their own staff member, admins can view any student's staff member. Returns paginated list of staff members assigned to a student.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/students/staff?student_id=17" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/students/staff"
);
const params = {
"student_id": "17",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{"data": [{"id": 5, "name": "Staff Member", "email": "staff@example.com", ...}], "links": {...}, "meta": {"total": 1, "per_page": 15}}
Example response (403):
{
"message": "You can only view your own assigned staff"
}
Example response (404):
{
"message": "Student not found"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Student Conversations
Message box between students and uni staff. Students can start conversations with university staff. Assigned managers/advisers for the student and admins can participate and reply.
List conversations relevant to the authenticated user.
requires authentication
- Students see conversations where they are the student.
- Managers/Advisers see conversations for their assigned students.
- Admins see all conversations.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/conversations" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/conversations"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 1,
"student_id": 3,
"subject": "..."
}
],
"total": 1
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new conversation (student only) and post the first message.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/conversations" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"subject\": \"consequatur\",
\"body\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/conversations"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"subject": "consequatur",
"body": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"message": "Conversation created",
"conversation": {}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the specified conversation and its messages.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/conversations/17" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/conversations/17"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.729981Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Post a new message to a conversation.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/conversations/17/messages" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"body\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/conversations/17/messages"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"body": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Student Language
Manage the languages spoken by the student.
Store a newly created language.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/languages" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjur\",
\"personal_information_id\": 17
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/languages"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjur",
"personal_information_id": 17
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the student language.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/languages/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"vmqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/languages/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "vmqeopfuudtdsufvyvddqamniihfqcoynlazghdtqtqxbajwbpilpmufinllwloauydlsmsjur"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified language.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/languages/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/languages/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Student Management
Endpoint to manage the students
Endpoint to get the data for the packet used for his application
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/application_packet/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/application_packet/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.605499Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Endpoint to get the data for the student.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/students/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/students/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.739323Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get the matching for the authenticated student.
requires authentication
Returns a ranked list of recommended majors for the authenticated student.
Each item contains: type ("major"), score (0-100), a breakdown of contributing factors, and the related major and its university resource.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/matches?limit=20" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/matches"
);
const params = {
"limit": "20",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"type": "major",
"major": {
"id": 1,
"name": "Computer Science",
"is_applications_open": true
},
"university": {
"id": 5,
"name": "Example University"
},
"score": 87.2,
"breakdown": {
"field": 90,
"budget": 70,
"scholarship": 100,
"destination": 100,
"academic": 80,
"language": 100
},
"category": "Strong Match"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show the list of the students on the platform
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/students" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/students"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.140443Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Study destination
Manage study destination
Display a listing of all the study destinations.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/study_destinations" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/study_destinations"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": true,
"data": [
{
"id": 209,
"region": "Africa",
"regionTier": "emerging"
},
{
"id": 210,
"region": "Asia",
"regionTier": "emerging"
},
{
"id": 211,
"region": "Europe",
"regionTier": "global"
},
{
"id": 212,
"region": "USA",
"regionTier": "global"
},
{
"id": 213,
"region": "UK",
"regionTier": "global"
},
{
"id": 214,
"region": "UAE",
"regionTier": "global"
}
],
"timestamp": "2026-03-05T16:00:07.419743Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created study destination.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/study_destinations" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"region\": \"consequatur\",
\"region_tier\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/study_destinations"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"region": "consequatur",
"region_tier": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified study destination.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/study_destinations/209" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/study_destinations/209"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "PUT",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Universities
Manage universities information, including descriptions, tuition, and gallery images.
Display a listing of all universities.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/universities?country=Canada®ion=North+America&is_scholarship_available=1&scholarship_availability=very+high&affordability_tier=Mid-Range&limit=15&paginated=1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities"
);
const params = {
"country": "Canada",
"region": "North America",
"is_scholarship_available": "1",
"scholarship_availability": "very high",
"affordability_tier": "Mid-Range",
"limit": "15",
"paginated": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.772171Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created university.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/universities" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=University of Toronto"\
--form "address=27 King's College Cir, Toronto, ON."\
--form "country=Canada"\
--form "admission_rate=43.5"\
--form "is_scholarship_available=1"\
--form "scholarship_availability=very high"\
--form "study_destination_id=9b1e967a-706d-4912-9c31"\
--form "contact[email][]=qkunze@example.com"\
--form "contact[phone][]=consequatur"\
--form "contact[website]=consequatur"\
--form "university_description[description]=Dolores dolorum amet iste laborum eius est dolor."\
--form "university_description[campus_size]=Large"\
--form "university_description[student_life]=consequatur"\
--form "university_description[city_type]=Urban"\
--form "university_description[climate]=Temperate"\
--form "annual_tuition[international]=11613.31890586"\
--form "annual_tuition[local]=11613.31890586"\
--form "annual_tuition[year]=2024"\
--form "annual_tuition[currency_id]=consequatur"\
--form "application_fee=100"\
--form "application_flat_price=500"\
--form "admission_requirements=consequatur"\
--form "application_link=consequatur"\
--form "monthly_living_cost=$1,200-$1,500"\
--form "affordability_tier=Mid-Range"\
--form "logo=@/tmp/phpnXVpCW" \
--form "gallery[]=@/tmp/phpQnIoSd" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'University of Toronto');
body.append('address', '27 King's College Cir, Toronto, ON.');
body.append('country', 'Canada');
body.append('admission_rate', '43.5');
body.append('is_scholarship_available', '1');
body.append('scholarship_availability', 'very high');
body.append('study_destination_id', '9b1e967a-706d-4912-9c31');
body.append('contact[email][]', 'qkunze@example.com');
body.append('contact[phone][]', 'consequatur');
body.append('contact[website]', 'consequatur');
body.append('university_description[description]', 'Dolores dolorum amet iste laborum eius est dolor.');
body.append('university_description[campus_size]', 'Large');
body.append('university_description[student_life]', 'consequatur');
body.append('university_description[city_type]', 'Urban');
body.append('university_description[climate]', 'Temperate');
body.append('annual_tuition[international]', '11613.31890586');
body.append('annual_tuition[local]', '11613.31890586');
body.append('annual_tuition[year]', '2024');
body.append('annual_tuition[currency_id]', 'consequatur');
body.append('application_fee', '100');
body.append('application_flat_price', '500');
body.append('admission_requirements', 'consequatur');
body.append('application_link', 'consequatur');
body.append('monthly_living_cost', '$1,200-$1,500');
body.append('affordability_tier', 'Mid-Range');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('gallery[]', document.querySelector('input[name="gallery[]"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the specified university.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.797454Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
scholarship_availability
string
Scholarship level: high, moderate, very high, etc.
Update the specified university.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=University of Toronto Updated"\
--form "address=consequatur"\
--form "country=Canada"\
--form "admission_rate=45"\
--form "is_scholarship_available=1"\
--form "scholarship_availability=very high (full)"\
--form "study_destination_id=consequatur"\
--form "application_fee=11613.31890586"\
--form "application_flat_price=11613.31890586"\
--form "admission_requirements=consequatur"\
--form "application_link=consequatur"\
--form "monthly_living_cost=consequatur"\
--form "affordability_tier=consequatur"\
--form "logo=@/tmp/phpU8JqJg" \
--form "gallery[]=@/tmp/phpCAwOhy" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'University of Toronto Updated');
body.append('address', 'consequatur');
body.append('country', 'Canada');
body.append('admission_rate', '45');
body.append('is_scholarship_available', '1');
body.append('scholarship_availability', 'very high (full)');
body.append('study_destination_id', 'consequatur');
body.append('application_fee', '11613.31890586');
body.append('application_flat_price', '11613.31890586');
body.append('admission_requirements', 'consequatur');
body.append('application_link', 'consequatur');
body.append('monthly_living_cost', 'consequatur');
body.append('affordability_tier', 'consequatur');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('gallery[]', document.querySelector('input[name="gallery[]"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified university.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get universities by country.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/universities/country/Germany" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities/country/Germany"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.820602Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get universities with scholarships available.
requires authentication
This endpoint filters for universities where scholarship_availability is NOT 'low'.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/universities/scholarships/available?level=consequatur" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/universities/scholarships/available"
);
const params = {
"level": "consequatur",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.827465Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created university.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/universities" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=University of Toronto"\
--form "address=27 King's College Cir, Toronto, ON."\
--form "country=Canada"\
--form "admission_rate=43.5"\
--form "is_scholarship_available=1"\
--form "scholarship_availability=very high"\
--form "study_destination_id=9b1e967a-706d-4912-9c31"\
--form "contact[email][]=qkunze@example.com"\
--form "contact[phone][]=consequatur"\
--form "contact[website]=consequatur"\
--form "university_description[description]=Dolores dolorum amet iste laborum eius est dolor."\
--form "university_description[campus_size]=Large"\
--form "university_description[student_life]=consequatur"\
--form "university_description[city_type]=Urban"\
--form "university_description[climate]=Temperate"\
--form "annual_tuition[international]=11613.31890586"\
--form "annual_tuition[local]=11613.31890586"\
--form "annual_tuition[year]=2024"\
--form "annual_tuition[currency_id]=consequatur"\
--form "application_fee=100"\
--form "application_flat_price=500"\
--form "admission_requirements=consequatur"\
--form "application_link=consequatur"\
--form "monthly_living_cost=$1,200-$1,500"\
--form "affordability_tier=Mid-Range"\
--form "logo=@/tmp/phpsigwbq" \
--form "gallery[]=@/tmp/phpG5HexT" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'University of Toronto');
body.append('address', '27 King's College Cir, Toronto, ON.');
body.append('country', 'Canada');
body.append('admission_rate', '43.5');
body.append('is_scholarship_available', '1');
body.append('scholarship_availability', 'very high');
body.append('study_destination_id', '9b1e967a-706d-4912-9c31');
body.append('contact[email][]', 'qkunze@example.com');
body.append('contact[phone][]', 'consequatur');
body.append('contact[website]', 'consequatur');
body.append('university_description[description]', 'Dolores dolorum amet iste laborum eius est dolor.');
body.append('university_description[campus_size]', 'Large');
body.append('university_description[student_life]', 'consequatur');
body.append('university_description[city_type]', 'Urban');
body.append('university_description[climate]', 'Temperate');
body.append('annual_tuition[international]', '11613.31890586');
body.append('annual_tuition[local]', '11613.31890586');
body.append('annual_tuition[year]', '2024');
body.append('annual_tuition[currency_id]', 'consequatur');
body.append('application_fee', '100');
body.append('application_flat_price', '500');
body.append('admission_requirements', 'consequatur');
body.append('application_link', 'consequatur');
body.append('monthly_living_cost', '$1,200-$1,500');
body.append('affordability_tier', 'Mid-Range');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('gallery[]', document.querySelector('input[name="gallery[]"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the specified university.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=University of Toronto Updated"\
--form "address=consequatur"\
--form "country=Canada"\
--form "admission_rate=45"\
--form "is_scholarship_available=1"\
--form "scholarship_availability=very high (full)"\
--form "study_destination_id=consequatur"\
--form "application_fee=11613.31890586"\
--form "application_flat_price=11613.31890586"\
--form "admission_requirements=consequatur"\
--form "application_link=consequatur"\
--form "monthly_living_cost=consequatur"\
--form "affordability_tier=consequatur"\
--form "logo=@/tmp/php8pxLi0" \
--form "gallery[]=@/tmp/phpVjHA2z" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'University of Toronto Updated');
body.append('address', 'consequatur');
body.append('country', 'Canada');
body.append('admission_rate', '45');
body.append('is_scholarship_available', '1');
body.append('scholarship_availability', 'very high (full)');
body.append('study_destination_id', 'consequatur');
body.append('application_fee', '11613.31890586');
body.append('application_flat_price', '11613.31890586');
body.append('admission_requirements', 'consequatur');
body.append('application_link', 'consequatur');
body.append('monthly_living_cost', 'consequatur');
body.append('affordability_tier', 'consequatur');
body.append('logo', document.querySelector('input[name="logo"]').files[0]);
body.append('gallery[]', document.querySelector('input[name="gallery[]"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified university.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/universities/00ce85a9-6d2d-4be1-a0cd-274d7c063eac"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
University Applications Management
Get all applications
requires authentication
Returns a paginated list of university applications.
You can filter by status, student, major or university.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/applications?status=Submitted&student_id=5&major_id=12&applied_university_id=8&page=1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/applications"
);
const params = {
"status": "Submitted",
"student_id": "5",
"major_id": "12",
"applied_university_id": "8",
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, Paginated list):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new application
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/applications" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"major_id\": \"consequatur\",
\"application_date\": \"2026-03-05T16:00:07\",
\"applied_university_id\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/applications"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"major_id": "consequatur",
"application_date": "2026-03-05T16:00:07",
"applied_university_id": "consequatur"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (201):
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"application_date": "2025-12-11",
"status": "Draft",
"response_date": null,
"feedback": null,
"student": {
"id": 5,
"name": "John Doe"
},
"major": {
"id": 12,
"name": "Data Science"
},
"applied_university": {
"id": 8,
"name": "Tech University"
}
}
Example response (403):
{
"message": "Forbidden"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get single application
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"application_date": "2025-06-01",
"status": "Submitted",
"response_date": null,
"feedback": null,
"student": {
"id": 5,
"name": "John Doe"
},
"major": {
"id": 12,
"name": "Data Science"
},
"applied_university": {
"id": 8,
"name": "Tech University"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update application
requires authentication
Only status, response_date and feedback can be edited after creation.
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"response_date\": \"2026-03-05T16:00:07\",
\"feedback\": \"consequatur\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"response_date": "2026-03-05T16:00:07",
"feedback": "consequatur"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{ ...updated resource... }
Example response (403):
{
"message": "Forbidden"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete application
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/applications/1b7f325d-b2cf-4dc4-8e39-2bb2fa02a1cd"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204):
Empty response
Example response (403):
{
"message": "Forbidden"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User Management
Endpoints to manage users (admin only for most operations).
Update user
requires authentication
Admins can update any user. Users can only update their own name and email. Only admins can change user roles.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/users/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=John Doe"\
--form "email=john@example.com"\
--form "role_id=4"\
--form "profile_picture=@/tmp/phpnOwIQv" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/users/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'John Doe');
body.append('email', 'john@example.com');
body.append('role_id', '4');
body.append('profile_picture', document.querySelector('input[name="profile_picture"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());Example response (200, User updated successfully):
Example response (403, Not authorized):
Example response (404, User not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List all users with filters
requires authentication
Admins can filter by role, search by name/email, and view all users. Supports search, filtering, sorting, and pagination.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/users?role_id=1&search=John&sort_by=name&sort_order=asc&per_page=15" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"role_id\": 17,
\"search\": \"mqeopfuudtdsufvyvddqa\",
\"sort_by\": \"name\",
\"sort_order\": \"asc\",
\"per_page\": 13
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users"
);
const params = {
"role_id": "1",
"search": "John",
"sort_by": "name",
"sort_order": "asc",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"role_id": 17,
"search": "mqeopfuudtdsufvyvddqa",
"sort_by": "name",
"sort_order": "asc",
"per_page": 13
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Paginated list of users):
Example response (403, Not authorized):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get user details
requires authentication
Returns user information including role, relationships, and student/adviser data.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/users/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, User details with all relationships):
Example response (403, Not authorized):
Example response (404, User not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update user
requires authentication
Admins can update any user. Users can only update their own name and email. Only admins can change user roles.
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/users/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "name=John Doe"\
--form "email=john@example.com"\
--form "role_id=4"\
--form "profile_picture=@/tmp/php1TIenI" const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('name', 'John Doe');
body.append('email', 'john@example.com');
body.append('role_id', '4');
body.append('profile_picture', document.querySelector('input[name="profile_picture"]').files[0]);
fetch(url, {
method: "PUT",
headers,
body,
}).then(response => response.json());Example response (200, User updated successfully):
Example response (403, Not authorized):
Example response (404, User not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete user
requires authentication
Only admins can delete users, and cannot delete their own account.
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/users/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Example response (204, User deleted successfully):
Empty response
Example response (403, Not authorized or cannot delete self):
Example response (422, Cannot delete own account):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get users by role
requires authentication
Retrieve all users with a specific role.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/users-by-role?role_name=adviser&per_page=15" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"role_name\": \"adviser\",
\"per_page\": 21
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users-by-role"
);
const params = {
"role_name": "adviser",
"per_page": "15",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"role_name": "adviser",
"per_page": 21
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Paginated list of users with specified role):
Example response (403, Not authorized):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get user statistics
requires authentication
Returns total user count and breakdown by role.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/users-statistics" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users-statistics"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, User statistics breakdown by role):
Example response (403, Not authorized):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Change user role
requires authentication
Admin-only endpoint to change a user's role with audit trail.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/users/change-role" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_id\": 5,
\"role_id\": 2
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users/change-role"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"user_id": 5,
"role_id": 2
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, User role changed successfully):
{
"message": "User role updated successfully",
"old_role": "adviser",
"new_role": "manager"
}
Example response (403, Not authorized):
Example response (404, User not found):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bulk user operations
requires authentication
Supports bulk delete and bulk role change. Authenticated user is automatically excluded from operations.
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/users/bulk-action" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"user_ids\": \"[5, 6, 7]\",
\"action\": \"delete\",
\"role_id\": 2
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users/bulk-action"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"user_ids": "[5, 6, 7]",
"action": "delete",
"role_id": 2
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200, Bulk operation completed):
{
"message": "Bulk operation completed",
"affected": 5,
"action": "delete"
}
Example response (403, Not authorized):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Export users to CSV
requires authentication
Exports user data as CSV file. Admins and managers can export; optional role filter available.
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/users-export?role_id=1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/users-export"
);
const params = {
"role_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200, CSV file content with columns: ID, Name, Email, Role, Created At, Updated At):
Example response (403, Not authorized):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User Notification Management
Endpoints to handle the authenticated user's notifications.
Flexible endpoint that supports filtering by status, limiting results, and pagination.
GET api/v1/notifications
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/notifications?status=consequatur&limit=17&paginated=" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/notifications"
);
const params = {
"status": "consequatur",
"limit": "17",
"paginated": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.746576Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display one notification and mark it as read.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/notifications/consequatur?status=consequatur&limit=17&paginated=" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/notifications/consequatur"
);
const params = {
"status": "consequatur",
"limit": "17",
"paginated": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:07.752167Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Mark all notifications as read.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/notifications/read-all?status=consequatur&limit=17&paginated=" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/notifications/read-all"
);
const params = {
"status": "consequatur",
"limit": "17",
"paginated": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Users roles
Manage users and student roles.
Display a listing of all the roles.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/roles" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.034555Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Store a newly created resource in storage.
requires authentication
Example request:
curl --request POST \
"https://vps117355.serveur-vps.net/api/v1/admin/roles" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"consequatur\",
\"description\": \"Dolores dolorum amet iste laborum eius est dolor.\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "consequatur",
"description": "Dolores dolorum amet iste laborum eius est dolor."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Display the specified role.
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/roles/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.047784Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update the role in the table.
requires authentication
Example request:
curl --request PUT \
"https://vps117355.serveur-vps.net/api/v1/admin/roles/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"consequatur\",
\"description\": \"Dolores dolorum amet iste laborum eius est dolor.\"
}"
const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "consequatur",
"description": "Dolores dolorum amet iste laborum eius est dolor."
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Remove the specified role from the table.
requires authentication
Example request:
curl --request DELETE \
"https://vps117355.serveur-vps.net/api/v1/admin/roles/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get the users by a specified role
requires authentication
Example request:
curl --request GET \
--get "https://vps117355.serveur-vps.net/api/v1/admin/roles/users/1" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://vps117355.serveur-vps.net/api/v1/admin/roles/users/1"
);
const headers = {
"Authorization": "Bearer {YOUR_BEARER_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (500):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"errors": "Unauthenticated.",
"timestamp": "2026-03-05T16:00:08.066327Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.