Alumni Connect Partner API
The Alumni Connect Partner API lets your systems manage a university's alumni, events, jobs and announcements programmatically. Every request authenticates with two things that must resolve to the same tenant: an API key and your university slug. Create and manage API keys in your dashboard on the API keys page (admin.alumniconnect.io/u/<your-slug>/api-keys). Faculty, degree-level and degree-major IDs come from Settings → Branding → Academics — and are the SAME for every university, so you can reuse them across tenants.
Authentication
https://api.alumniconnect.ioAll endpoints live under the /v1 prefix — e.g. https://api.alumniconnect.io/v1/alumni.
Every request needs two matching things — an API key and your university slug. Both must belong to the same tenant. Create keys on your dashboard's API keys page (admin.alumniconnect.io/u/<your-slug>/api-keys).
Authorization: Bearer YOUR_API_KEY
x-university-slug: your-university-slugRate limit & pagination
Rate limit
Each API key may make up to 30 requests per minute. Requests beyond this limit receive 429 Too Many Requests with the number of seconds to wait before retrying.
During maintenance, all requests receive 503 Service Unavailable.
Pagination
Every list endpoint returns a fixed 250 records per page. Request a specific page with the x-page header (1-indexed). Page size is set by the platform and is not adjustable per request.
{
"rows": [ … ],
"total": 1421,
"page": 1,
"pageSize": 250,
"timestamp": "2026-07-23T09:21:08.000Z",
"timezone": "UTC"
}These status codes can be returned by any endpoint. Endpoint-specific errors (403, 409, business-rule failures) are listed individually below.
- 400Bad RequestThe request body or query parameters are malformed.
- 401UnauthorizedMissing or invalid bearer token.
- 404Not FoundThe requested resource doesn't exist (or isn't visible to your tenant).
- 422Unprocessable EntityValidation failed on one or more fields. The response includes the offending paths.
Account
Your university, business details and subscription
1 endpoint
GET/meGet your university & subscription
Returns the university the API key belongs to — business/contact details, address, platform timezone, and the subscription (trial vs paid).
Example request
curl https://api.alumniconnect.io/v1/me \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200Your university, account and subscription details.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "Your university, account and subscription details.",
"event": "account.fetched",
"action": "read",
"data": {
"university": {
"id": "8f0a3c2e-91b4-4a7d-9d2e-1c5b6a0f7e33",
"slug": "seri-mutiara-university",
"name": "Seri Mutiara University",
"status": "active",
"contactEmail": "registrar@serimutiara.edu.my",
"contactName": "Nurul Huda",
"contactPhone": "+60 3-8765 4321",
"address": {
"line1": "88 Jalan Bukit Bintang",
"line2": "Menara Seri Mutiara",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"postalCode": "50450",
"countryCode": "MY",
"country": "Malaysia"
}
},
"subscription": {
"status": "active",
"period": "paid",
"isTrial": false,
"trialEnd": "2026-07-30T00:00:00.000Z",
"currentPeriodEnd": "2026-08-14T00:00:00.000Z"
},
"timezone": "UTC",
"dateFormat": "DD MMM YYYY",
"timestamp": "2026-07-23T09:21:08.000Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ account.fetched
Alumni
Alumni records — list, fetch, create, update, delete
5 endpoints
GET/alumniList / search alumni
Paginated list of alumni in your tenant. Returns an empty list (not a 404) when nothing matches. Page with the x-page header; page size is the platform setting. Optional filters are passed as query parameters and AND-ed together — e.g. ?rollNo=ENG-2019&batch=2015-2019&faculty=<facultyId>.
Query parameters
| Name | Type | Description |
|---|---|---|
qOptional | string | Free-text search across name, email, roll number, batch, degree.Example: aisyah |
Example request
curl https://api.alumniconnect.io/v1/alumni \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200A page of alumni (common list envelope).
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "A page of alumni (common list envelope).",
"event": "alumni.listed",
"action": "read",
"data": {
"rows": [
{
"id": "8f0a3c2e-91b4-4a7d-9d2e-1c5b6a0f7e33",
"firstName": "Aisyah",
"lastName": "Ibrahim",
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"rollNo": "ENG-2019-0142",
"batch": "2015-2019",
"graduationYear": 2019,
"faculty": "Faculty of Engineering",
"degreeLevel": "Bachelor's",
"degree": "Software Engineering",
"city": "Kuala Lumpur",
"country": "Malaysia",
"graduationCity": "Petaling Jaya",
"graduationCountry": "Malaysia",
"workCity": "Johor Bahru",
"workCountry": "Malaysia",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "Malaysia",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
},
{
"title": "Software Engineer",
"jobType": "full_time",
"company": "AirAsia",
"city": "Kuala Lumpur",
"country": "Malaysia",
"startMonth": "07",
"startYear": "2019",
"endMonth": "12",
"endYear": "2020",
"description": "Backend for the driver app."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"line2": "Unit 4-A",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "Malaysia",
"postalCode": "80000"
},
"createdAt": "2026-05-14T09:21:08Z",
"updatedAt": "2026-06-01T11:02:44Z"
}
],
"total": 1421,
"page": 1,
"pageSize": 250,
"timestamp": "2026-07-23T09:21:08.000Z",
"timezone": "UTC"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ alumni.listed
POST/alumniCreate an alumni record
Creates one alumnus. The eight required fields and their validation errors are identical to the dashboard's Add-alumni form. Counts against your plan's alumni limit.
Request bodyRequiredapplication/json
The alumnus to create.
| Field | Type | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
firstNameRequired | string | Given name (1–120 chars). | ||||||||||||||||||||||||||||||
lastNameRequired | string | Family name (1–120 chars). | ||||||||||||||||||||||||||||||
rollNoRequired | string | Roll / matric number (1–80 chars). | ||||||||||||||||||||||||||||||
batchRequired | string | Format YYYY-YYYY, start year earlier than end year (e.g. 2015-2019). | ||||||||||||||||||||||||||||||
graduationYearRequired | integer | Graduation year (1900–2100). | ||||||||||||||||||||||||||||||
facultyIdRequired | string | Faculty catalog ID (from Academics). | ||||||||||||||||||||||||||||||
degreeLevelIdRequired | string | Degree-level catalog ID (from Academics). | ||||||||||||||||||||||||||||||
degreeMajorIdRequired | string | Degree-major catalog ID (from Academics). | ||||||||||||||||||||||||||||||
emailOptional | string | Must be a valid email address. | ||||||||||||||||||||||||||||||
phoneOptional | string | Contact phone number. | ||||||||||||||||||||||||||||||
cityOptional | string | Current city. | ||||||||||||||||||||||||||||||
countryOptional | string | ISO 3166-1 alpha-2 country CODE (e.g. MY). Stored as the country name. | ||||||||||||||||||||||||||||||
graduationCityOptional | string | City at graduation. | ||||||||||||||||||||||||||||||
graduationCountryOptional | string | ISO alpha-2 country CODE where they graduated. | ||||||||||||||||||||||||||||||
workCityOptional | string | Work city. | ||||||||||||||||||||||||||||||
workCountryOptional | string | ISO alpha-2 country CODE where they work. | ||||||||||||||||||||||||||||||
workStatusOptional | string | One of the listed work statuses. | ||||||||||||||||||||||||||||||
currentCompanyOptional | string | Where they currently work. | ||||||||||||||||||||||||||||||
headlineOptional | string | Profile headline. | ||||||||||||||||||||||||||||||
linkedinUrlOptional | string | Full LinkedIn profile URL. | ||||||||||||||||||||||||||||||
jobTypeOptional | string | One of the listed job types. | ||||||||||||||||||||||||||||||
genderOptional | string | One of: female, male, non_binary, prefer_not_to_say. | ||||||||||||||||||||||||||||||
dateOfBirthOptional | string | A real date in YYYY-MM-DD. | ||||||||||||||||||||||||||||||
graduationDateOptional | string | A real date in YYYY-MM-DD. | ||||||||||||||||||||||||||||||
profileImageUrlOptional | string | Avatar / profile photo URL. | ||||||||||||||||||||||||||||||
notesOptional | string | Free-form admin note. | ||||||||||||||||||||||||||||||
statusOptional | string | Directory status. | ||||||||||||||||||||||||||||||
experienceOptional | object[] | An ARRAY — one object per role. Each entry's `country` is an ISO alpha-2 CODE.Show each item's fields
| ||||||||||||||||||||||||||||||
residenceAddressOptional | object | A single OBJECT (one home address). Its `country` is an ISO alpha-2 CODE.Show fields
| ||||||||||||||||||||||||||||||
permanentAddressOptional | object | A single OBJECT (the permanent address). Its `country` is an ISO alpha-2 CODE.Show fields
|
Example request
curl -X POST https://api.alumniconnect.io/v1/alumni \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Aisyah",
"lastName": "Ibrahim",
"rollNo": "ENG-2019-0142",
"batch": "2015-2019",
"graduationYear": 2019,
"facultyId": "b31d…-faculty-id",
"degreeLevelId": "7a02…-level-id",
"degreeMajorId": "c9f4…-major-id",
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"city": "Kuala Lumpur",
"country": "MY",
"graduationCity": "Petaling Jaya",
"graduationCountry": "MY",
"workCity": "Johor Bahru",
"workCountry": "MY",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "MY",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
},
{
"title": "Software Engineer",
"jobType": "full_time",
"company": "AirAsia",
"city": "Kuala Lumpur",
"country": "MY",
"startMonth": "07",
"startYear": "2019",
"endMonth": "12",
"endYear": "2020",
"description": "Backend for the driver app."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"line2": "Unit 4-A",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "MY",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "MY",
"postalCode": "80000"
}
}'Example response201The newly-created alumni record.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The newly-created alumni record.",
"event": "alumni.created",
"action": "create",
"data": {
"id": "8f0a3c2e-91b4-4a7d-9d2e-1c5b6a0f7e33",
"firstName": "Aisyah",
"lastName": "Ibrahim",
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"rollNo": "ENG-2019-0142",
"batch": "2015-2019",
"graduationYear": 2019,
"faculty": "Faculty of Engineering",
"degreeLevel": "Bachelor's",
"degree": "Software Engineering",
"city": "Kuala Lumpur",
"country": "Malaysia",
"graduationCity": "Petaling Jaya",
"graduationCountry": "Malaysia",
"workCity": "Johor Bahru",
"workCountry": "Malaysia",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "Malaysia",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
},
{
"title": "Software Engineer",
"jobType": "full_time",
"company": "AirAsia",
"city": "Kuala Lumpur",
"country": "Malaysia",
"startMonth": "07",
"startYear": "2019",
"endMonth": "12",
"endYear": "2020",
"description": "Backend for the driver app."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"line2": "Unit 4-A",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "Malaysia",
"postalCode": "80000"
},
"createdAt": "2026-05-14T09:21:08Z",
"updatedAt": "2026-06-01T11:02:44Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ alumni.created
GET/alumni/{id}Fetch one alumni record
Returns a single alumni record by its ID.
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Alumni record ID. |
Example request
curl https://api.alumniconnect.io/v1/alumni/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200The matched alumni record.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The matched alumni record.",
"event": "alumni.fetched",
"action": "read",
"data": {
"id": "8f0a3c2e-91b4-4a7d-9d2e-1c5b6a0f7e33",
"firstName": "Aisyah",
"lastName": "Ibrahim",
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"rollNo": "ENG-2019-0142",
"batch": "2015-2019",
"graduationYear": 2019,
"faculty": "Faculty of Engineering",
"degreeLevel": "Bachelor's",
"degree": "Software Engineering",
"city": "Kuala Lumpur",
"country": "Malaysia",
"graduationCity": "Petaling Jaya",
"graduationCountry": "Malaysia",
"workCity": "Johor Bahru",
"workCountry": "Malaysia",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "Malaysia",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
},
{
"title": "Software Engineer",
"jobType": "full_time",
"company": "AirAsia",
"city": "Kuala Lumpur",
"country": "Malaysia",
"startMonth": "07",
"startYear": "2019",
"endMonth": "12",
"endYear": "2020",
"description": "Backend for the driver app."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"line2": "Unit 4-A",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "Malaysia",
"postalCode": "80000"
},
"createdAt": "2026-05-14T09:21:08Z",
"updatedAt": "2026-06-01T11:02:44Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ alumni.fetched
PUT/alumni/{id}Update an alumni record
Updates the editable profile fields. The 8 identity/academic fields (name, rollNo, batch, graduationYear, faculty/level/major) are NOT editable via the API. Any optional field you omit keeps its current value.
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Alumni record ID. |
Request bodyRequiredapplication/json
The profile fields to change.
| Field | Type | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emailOptional | string | Must be a valid email address. | ||||||||||||||||||||||||||||||
phoneOptional | string | Contact phone number. | ||||||||||||||||||||||||||||||
cityOptional | string | Current city. | ||||||||||||||||||||||||||||||
countryOptional | string | ISO 3166-1 alpha-2 country CODE. | ||||||||||||||||||||||||||||||
graduationCityOptional | string | City where they graduated. | ||||||||||||||||||||||||||||||
graduationCountryOptional | string | ISO alpha-2 country CODE. | ||||||||||||||||||||||||||||||
workCityOptional | string | City where they currently work. | ||||||||||||||||||||||||||||||
workCountryOptional | string | ISO alpha-2 country CODE. | ||||||||||||||||||||||||||||||
workStatusOptional | string | One of the listed work statuses. | ||||||||||||||||||||||||||||||
currentCompanyOptional | string | Where they currently work. | ||||||||||||||||||||||||||||||
headlineOptional | string | Short professional tagline. | ||||||||||||||||||||||||||||||
linkedinUrlOptional | string | Full LinkedIn profile URL. | ||||||||||||||||||||||||||||||
jobTypeOptional | string | One of the listed job types. | ||||||||||||||||||||||||||||||
genderOptional | string | One of: female, male, non_binary, prefer_not_to_say. | ||||||||||||||||||||||||||||||
dateOfBirthOptional | string | A real date in YYYY-MM-DD. | ||||||||||||||||||||||||||||||
graduationDateOptional | string | A real date in YYYY-MM-DD. | ||||||||||||||||||||||||||||||
profileImageUrlOptional | string | Avatar / profile photo URL. | ||||||||||||||||||||||||||||||
notesOptional | string | Free-form admin note. | ||||||||||||||||||||||||||||||
statusOptional | string | Directory status. | ||||||||||||||||||||||||||||||
experienceOptional | object[] | Replaces the experience array. Each entry's `country` is an ISO alpha-2 CODE.Show each item's fields
| ||||||||||||||||||||||||||||||
residenceAddressOptional | object | A single OBJECT. Its `country` is an ISO alpha-2 CODE.Show fields
| ||||||||||||||||||||||||||||||
permanentAddressOptional | object | A single OBJECT (the permanent address). Its `country` is an ISO alpha-2 CODE.Show fields
|
Example request
curl -X PUT https://api.alumniconnect.io/v1/alumni/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"city": "Kuala Lumpur",
"country": "MY",
"graduationCity": "Petaling Jaya",
"graduationCountry": "MY",
"workCity": "Johor Bahru",
"workCountry": "MY",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "MY",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"city": "Kuala Lumpur",
"country": "MY",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "MY",
"postalCode": "80000"
}
}'Example response200The updated alumni record.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The updated alumni record.",
"event": "alumni.updated",
"action": "update",
"data": {
"id": "8f0a3c2e-91b4-4a7d-9d2e-1c5b6a0f7e33",
"firstName": "Aisyah",
"lastName": "Ibrahim",
"email": "aisyah.ibrahim@example.edu",
"phone": "+60 12-345 6789",
"rollNo": "ENG-2019-0142",
"batch": "2015-2019",
"graduationYear": 2019,
"faculty": "Faculty of Engineering",
"degreeLevel": "Bachelor's",
"degree": "Software Engineering",
"city": "Kuala Lumpur",
"country": "Malaysia",
"graduationCity": "Petaling Jaya",
"graduationCountry": "Malaysia",
"workCity": "Johor Bahru",
"workCountry": "Malaysia",
"workStatus": "working",
"currentCompany": "Maybank",
"headline": "Senior Engineer at Maybank",
"linkedinUrl": "https://linkedin.com/in/aisyah",
"jobType": "full_time_employee",
"gender": "female",
"dateOfBirth": "1997-03-14",
"graduationDate": "2019-07-31",
"profileImageUrl": "https://cdn.example.com/a.jpg",
"notes": "Keynote speaker at 2025 homecoming.",
"status": "active",
"experience": [
{
"title": "Senior Software Engineer",
"jobType": "full_time",
"company": "Maybank",
"city": "Johor Bahru",
"country": "Malaysia",
"startMonth": "01",
"startYear": "2021",
"endMonth": "12",
"endYear": "2024",
"description": "Led the payments reliability team."
},
{
"title": "Software Engineer",
"jobType": "full_time",
"company": "AirAsia",
"city": "Kuala Lumpur",
"country": "Malaysia",
"startMonth": "07",
"startYear": "2019",
"endMonth": "12",
"endYear": "2020",
"description": "Backend for the driver app."
}
],
"residenceAddress": {
"line1": "12 Jalan Ampang",
"line2": "Unit 4-A",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia",
"postalCode": "50450"
},
"permanentAddress": {
"line1": "45 Jalan Merdeka",
"line2": "Taman Melati",
"city": "Johor Bahru",
"state": "Johor",
"country": "Malaysia",
"postalCode": "80000"
},
"createdAt": "2026-05-14T09:21:08Z",
"updatedAt": "2026-06-01T11:02:44Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ alumni.updated
DELETE/alumni/{id}Delete an alumni record
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Alumni record ID. |
Example request
curl -X DELETE https://api.alumniconnect.io/v1/alumni/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200Confirmation of deletion.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "Confirmation of deletion.",
"event": "alumni.deleted",
"action": "delete",
"data": {
"deleted": true,
"id": "8f0a3c2e-…"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ alumni.deleted
Events
Events — list, fetch, create, update, delete
5 endpoints
GET/eventsList events
Paginated list of your events. Page with the x-page header; page size is the platform setting.
Example request
curl https://api.alumniconnect.io/v1/events \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200A page of events.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "A page of events.",
"event": "event.listed",
"action": "read",
"data": {
"rows": [
{
"id": "3b1e77aa-4c2f-49d0-9a11-8e5c2d0b6f10",
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting with the class of 2014.",
"location": "Universiti Malaya, Main Hall",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"status": "published",
"capacity": 250,
"isPaid": false,
"priceCents": 0,
"currency": "MYR",
"venue": {
"line1": "Main Hall",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia"
},
"isPublic": true,
"forWhom": "All alumni",
"timezone": "Asia/Kuala_Lumpur",
"createdAt": "2026-06-02T14:08:11Z"
}
],
"total": 128,
"page": 1,
"pageSize": 250,
"timestamp": "2026-07-23T09:21:08.000Z",
"timezone": "UTC"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ event.listed
POST/eventsCreate an event
Creates an event. Only `title` is required. Counts against your plan's events limit.
Request bodyRequiredapplication/json
The event to create.
| Field | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
titleRequired | string | 1–200 chars. | ||||||||||||||||||
descriptionRequired | string | Up to 5000 chars. | ||||||||||||||||||
capacityRequired | integer | Attendee cap (0 = unlimited). | ||||||||||||||||||
statusRequired | string | Lifecycle status. | ||||||||||||||||||
startsAtRequired | string | ISO-8601 UTC start. | ||||||||||||||||||
endsAtRequired | string | ISO-8601 UTC end — must be after startsAt. | ||||||||||||||||||
eventTypeRequired | string | "free" → price is 0; "paid" → price + currency required. | ||||||||||||||||||
priceOptional | number | Required when eventType is "paid" (> 0). In major currency units (e.g. 25 = $25). | ||||||||||||||||||
currencyOptional | string | The event's currency — needed when eventType is "paid". One of the listed currency codes. | ||||||||||||||||||
locationRequired | object | Venue name + full address, all required. `country` is an ISO alpha-2 CODE.Show fields
| ||||||||||||||||||
visibilityRequired | string | Who can see it — public or private. | ||||||||||||||||||
forWhomRequired | string | Who the event is for. | ||||||||||||||||||
forWhomOtherOptional | string | Required only when forWhom is "other". | ||||||||||||||||||
timezoneRequired | string | The event's display timezone (IANA name). startsAt/endsAt are still sent in UTC and stored in UTC — this is only the zone shown to viewers. |
Example request
curl -X POST https://api.alumniconnect.io/v1/events \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting.",
"capacity": 250,
"status": "published",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"eventType": "paid",
"price": 25,
"currency": "MYR",
"location": {
"name": "Dewan Tunku Canselor",
"line1": "Universiti Malaya",
"line2": "Jalan Universiti",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "MY"
},
"visibility": "public",
"forWhom": "alumni",
"forWhomOther": "Parents & guardians",
"timezone": "Asia/Kuala_Lumpur"
}'Example response201The newly-created event.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The newly-created event.",
"event": "event.created",
"action": "create",
"data": {
"id": "3b1e77aa-4c2f-49d0-9a11-8e5c2d0b6f10",
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting with the class of 2014.",
"location": "Universiti Malaya, Main Hall",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"status": "published",
"capacity": 250,
"isPaid": false,
"priceCents": 0,
"currency": "MYR",
"venue": {
"line1": "Main Hall",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia"
},
"isPublic": true,
"forWhom": "All alumni",
"timezone": "Asia/Kuala_Lumpur",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ event.created
GET/events/{id}Fetch a single event
Returns a single event by its ID.
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Event ID. |
Example request
curl https://api.alumniconnect.io/v1/events/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200The matched event.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The matched event.",
"event": "event.fetched",
"action": "read",
"data": {
"id": "3b1e77aa-4c2f-49d0-9a11-8e5c2d0b6f10",
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting with the class of 2014.",
"location": "Universiti Malaya, Main Hall",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"status": "published",
"capacity": 250,
"isPaid": false,
"priceCents": 0,
"currency": "MYR",
"venue": {
"line1": "Main Hall",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia"
},
"isPublic": true,
"forWhom": "All alumni",
"timezone": "Asia/Kuala_Lumpur",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ event.fetched
PUT/events/{id}Update an event
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Event ID. |
Request bodyRequiredapplication/json
The event payload.
| Field | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
titleRequired | string | 1–200 chars. | ||||||||||||||||||
descriptionRequired | string | Up to 5000 chars. | ||||||||||||||||||
capacityRequired | integer | Attendee cap (0 = unlimited). | ||||||||||||||||||
statusRequired | string | Lifecycle status. | ||||||||||||||||||
startsAtRequired | string | ISO-8601 UTC start. | ||||||||||||||||||
endsAtRequired | string | ISO-8601 UTC end — must be after startsAt. | ||||||||||||||||||
eventTypeRequired | string | "free" → price is 0; "paid" → price + currency required. | ||||||||||||||||||
priceOptional | number | Required when eventType is "paid" (> 0). In major currency units (e.g. 25 = $25). | ||||||||||||||||||
currencyOptional | string | The event's currency — needed when eventType is "paid". One of the listed currency codes. | ||||||||||||||||||
locationRequired | object | Venue name + full address, all required. `country` is an ISO alpha-2 CODE.Show fields
| ||||||||||||||||||
visibilityRequired | string | Who can see it — public or private. | ||||||||||||||||||
forWhomRequired | string | Who the event is for. | ||||||||||||||||||
forWhomOtherOptional | string | Required only when forWhom is "other". | ||||||||||||||||||
timezoneRequired | string | The event's display timezone (IANA name). startsAt/endsAt are still sent in UTC and stored in UTC — this is only the zone shown to viewers. |
Example request
curl -X PUT https://api.alumniconnect.io/v1/events/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting.",
"capacity": 250,
"status": "published",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"eventType": "paid",
"price": 25,
"currency": "MYR",
"location": {
"name": "Dewan Tunku Canselor",
"line1": "Universiti Malaya",
"line2": "Jalan Universiti",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "MY"
},
"visibility": "public",
"forWhom": "alumni",
"forWhomOther": "Parents & guardians",
"timezone": "Asia/Kuala_Lumpur"
}'Example response200The updated event.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The updated event.",
"event": "event.updated",
"action": "update",
"data": {
"id": "3b1e77aa-4c2f-49d0-9a11-8e5c2d0b6f10",
"title": "Batch of 2014 Reunion",
"description": "An evening of reconnecting with the class of 2014.",
"location": "Universiti Malaya, Main Hall",
"startsAt": "2026-12-21T18:00:00Z",
"endsAt": "2026-12-21T22:00:00Z",
"status": "published",
"capacity": 250,
"isPaid": false,
"priceCents": 0,
"currency": "MYR",
"venue": {
"line1": "Main Hall",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "Malaysia"
},
"isPublic": true,
"forWhom": "All alumni",
"timezone": "Asia/Kuala_Lumpur",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ event.updated
DELETE/events/{id}Delete an event
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Event ID. |
Example request
curl -X DELETE https://api.alumniconnect.io/v1/events/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200Confirmation of deletion.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "Confirmation of deletion.",
"event": "event.deleted",
"action": "delete",
"data": {
"deleted": true,
"id": "8f0a3c2e-…"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ event.deleted
Jobs
Job board — list, fetch, create, update, delete
5 endpoints
GET/jobsList jobs
Paginated list of your job posts. Page with the x-page header; page size is the platform setting.
Example request
curl https://api.alumniconnect.io/v1/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200A page of jobs.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "A page of jobs.",
"event": "job.listed",
"action": "read",
"data": {
"rows": [
{
"id": "9d4c1e02-7b8a-4f36-b0d2-6a1f9c3e5d84",
"title": "Frontend Engineer",
"company": "AirAsia",
"location": "Kuala Lumpur",
"jobType": "full_time",
"jobTypes": [
"full_time"
],
"status": "open",
"description": "Build alumni-facing React apps.",
"applyUrl": "https://careers.airasia.com/123",
"isRemote": false,
"skills": [
"React",
"TypeScript"
],
"forWhom": "junior",
"isPaid": true,
"salaryMinCents": 6000000,
"salaryMaxCents": 12000000,
"currency": "MYR",
"salaryPeriod": "yearly",
"deadline": "2026-09-30T23:59:59Z",
"isPublic": true,
"createdAt": "2026-06-02T14:08:11Z"
}
],
"total": 47,
"page": 1,
"pageSize": 250,
"timestamp": "2026-07-23T09:21:08.000Z",
"timezone": "UTC"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ job.listed
POST/jobsCreate a job
Creates a job posting. Only `title` is required. Counts against your plan's job-board limit.
Request bodyRequiredapplication/json
The job to create.
| Field | Type | Description |
|---|---|---|
titleRequired | string | 1–200 chars. |
companyRequired | string | Hiring company. |
jobTypesRequired | string[] | MULTI-select employment types (≥ 1). First is the primary type. |
statusRequired | string | Lifecycle status. |
cityRequired | string | City. |
stateOptional | string | State / region. |
countryRequired | string | ISO 3166-1 alpha-2 country CODE. |
visibilityRequired | string | Who can see it — public or private. |
forWhomRequired | string | Who the job is for. |
forWhomOtherOptional | string | Required only when forWhom is "other". |
descriptionOptional | string | Up to 20000 chars. |
Example request
curl -X POST https://api.alumniconnect.io/v1/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"title": "Frontend Engineer",
"company": "AirAsia",
"jobTypes": [
"full_time",
"contract"
],
"status": "open",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "MY",
"visibility": "public",
"forWhom": "junior",
"forWhomOther": "Career switchers",
"description": "Build alumni-facing React apps."
}'Example response201The newly-created job.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The newly-created job.",
"event": "job.created",
"action": "create",
"data": {
"id": "9d4c1e02-7b8a-4f36-b0d2-6a1f9c3e5d84",
"title": "Frontend Engineer",
"company": "AirAsia",
"location": "Kuala Lumpur",
"jobType": "full_time",
"jobTypes": [
"full_time"
],
"status": "open",
"description": "Build alumni-facing React apps.",
"applyUrl": "https://careers.airasia.com/123",
"isRemote": false,
"skills": [
"React",
"TypeScript"
],
"forWhom": "junior",
"isPaid": true,
"salaryMinCents": 6000000,
"salaryMaxCents": 12000000,
"currency": "MYR",
"salaryPeriod": "yearly",
"deadline": "2026-09-30T23:59:59Z",
"isPublic": true,
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ job.created
GET/jobs/{id}Fetch a single job
Returns a single job by its ID.
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Job ID. |
Example request
curl https://api.alumniconnect.io/v1/jobs/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200The matched job.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The matched job.",
"event": "job.fetched",
"action": "read",
"data": {
"id": "9d4c1e02-7b8a-4f36-b0d2-6a1f9c3e5d84",
"title": "Frontend Engineer",
"company": "AirAsia",
"location": "Kuala Lumpur",
"jobType": "full_time",
"jobTypes": [
"full_time"
],
"status": "open",
"description": "Build alumni-facing React apps.",
"applyUrl": "https://careers.airasia.com/123",
"isRemote": false,
"skills": [
"React",
"TypeScript"
],
"forWhom": "junior",
"isPaid": true,
"salaryMinCents": 6000000,
"salaryMaxCents": 12000000,
"currency": "MYR",
"salaryPeriod": "yearly",
"deadline": "2026-09-30T23:59:59Z",
"isPublic": true,
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ job.fetched
PUT/jobs/{id}Update a job
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Job ID. |
Request bodyRequiredapplication/json
The job payload.
| Field | Type | Description |
|---|---|---|
titleRequired | string | 1–200 chars. |
companyRequired | string | Hiring company. |
jobTypesRequired | string[] | MULTI-select employment types (≥ 1). First is the primary type. |
statusRequired | string | Lifecycle status. |
cityRequired | string | City. |
stateOptional | string | State / region. |
countryRequired | string | ISO 3166-1 alpha-2 country CODE. |
visibilityRequired | string | Who can see it — public or private. |
forWhomRequired | string | Who the job is for. |
forWhomOtherOptional | string | Required only when forWhom is "other". |
descriptionOptional | string | Up to 20000 chars. |
Example request
curl -X PUT https://api.alumniconnect.io/v1/jobs/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"title": "Frontend Engineer",
"company": "AirAsia",
"jobTypes": [
"full_time",
"contract"
],
"status": "open",
"city": "Kuala Lumpur",
"state": "Wilayah Persekutuan",
"country": "MY",
"visibility": "public",
"forWhom": "junior",
"forWhomOther": "Career switchers",
"description": "Build alumni-facing React apps."
}'Example response200The updated job.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The updated job.",
"event": "job.updated",
"action": "update",
"data": {
"id": "9d4c1e02-7b8a-4f36-b0d2-6a1f9c3e5d84",
"title": "Frontend Engineer",
"company": "AirAsia",
"location": "Kuala Lumpur",
"jobType": "full_time",
"jobTypes": [
"full_time"
],
"status": "open",
"description": "Build alumni-facing React apps.",
"applyUrl": "https://careers.airasia.com/123",
"isRemote": false,
"skills": [
"React",
"TypeScript"
],
"forWhom": "junior",
"isPaid": true,
"salaryMinCents": 6000000,
"salaryMaxCents": 12000000,
"currency": "MYR",
"salaryPeriod": "yearly",
"deadline": "2026-09-30T23:59:59Z",
"isPublic": true,
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ job.updated
DELETE/jobs/{id}Delete a job
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Job ID. |
Example request
curl -X DELETE https://api.alumniconnect.io/v1/jobs/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200Confirmation of deletion.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "Confirmation of deletion.",
"event": "job.deleted",
"action": "delete",
"data": {
"deleted": true,
"id": "8f0a3c2e-…"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ job.deleted
Announcements
Announcements — list, fetch, create, update, delete
5 endpoints
GET/announcementsList announcements
Paginated list of your announcements. Page with the x-page header; page size is the platform setting.
Example request
curl https://api.alumniconnect.io/v1/announcements \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200A page of announcements.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "A page of announcements.",
"event": "announcement.listed",
"action": "read",
"data": {
"rows": [
{
"id": "c7e2a1b9-3d64-4f80-a2c1-9b5e7d0f4a22",
"subject": "Homecoming 2026 is live",
"body": "Register now for the biggest reunion yet.",
"status": "sent",
"isPublic": true,
"forWhom": "All alumni",
"audienceMode": "all",
"createdAt": "2026-06-02T14:08:11Z"
}
],
"total": 19,
"page": 1,
"pageSize": 250,
"timestamp": "2026-07-23T09:21:08.000Z",
"timezone": "UTC"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ announcement.listed
POST/announcementsCreate an announcement
Creates an announcement. Only `subject` is required.
Request bodyRequiredapplication/json
The announcement to create.
| Field | Type | Description |
|---|---|---|
subjectRequired | string | 1–200 chars. |
statusRequired | string | Lifecycle status. |
messageOptional | string | The body. Up to 20000 chars. |
visibilityRequired | string | Who can see it — public or private. |
forWhomRequired | string | Who the announcement is for. |
forWhomOtherOptional | string | Required only when forWhom is "other". |
Example request
curl -X POST https://api.alumniconnect.io/v1/announcements \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"subject": "Homecoming 2026 is live",
"status": "sent",
"message": "Register now for the biggest reunion yet.",
"visibility": "public",
"forWhom": "alumni",
"forWhomOther": "Parents & guardians"
}'Example response201The newly-created announcement.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The newly-created announcement.",
"event": "announcement.created",
"action": "create",
"data": {
"id": "c7e2a1b9-3d64-4f80-a2c1-9b5e7d0f4a22",
"subject": "Homecoming 2026 is live",
"body": "Register now for the biggest reunion yet.",
"status": "sent",
"isPublic": true,
"forWhom": "All alumni",
"audienceMode": "all",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ announcement.created
GET/announcements/{id}Fetch a single announcement
Returns a single announcement by its ID.
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Announcement ID. |
Example request
curl https://api.alumniconnect.io/v1/announcements/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200The matched announcement.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The matched announcement.",
"event": "announcement.fetched",
"action": "read",
"data": {
"id": "c7e2a1b9-3d64-4f80-a2c1-9b5e7d0f4a22",
"subject": "Homecoming 2026 is live",
"body": "Register now for the biggest reunion yet.",
"status": "sent",
"isPublic": true,
"forWhom": "All alumni",
"audienceMode": "all",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ announcement.fetched
PUT/announcements/{id}Update an announcement
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Announcement ID. |
Request bodyRequiredapplication/json
The announcement payload.
| Field | Type | Description |
|---|---|---|
subjectRequired | string | 1–200 chars. |
statusRequired | string | Lifecycle status. |
messageOptional | string | The body. Up to 20000 chars. |
visibilityRequired | string | Who can see it — public or private. |
forWhomRequired | string | Who the announcement is for. |
forWhomOtherOptional | string | Required only when forWhom is "other". |
Example request
curl -X PUT https://api.alumniconnect.io/v1/announcements/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug" \
-H "Content-Type: application/json" \
-d '{
"subject": "Homecoming 2026 is live",
"status": "sent",
"message": "Register now for the biggest reunion yet.",
"visibility": "public",
"forWhom": "alumni",
"forWhomOther": "Parents & guardians"
}'Example response200The updated announcement.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "The updated announcement.",
"event": "announcement.updated",
"action": "update",
"data": {
"id": "c7e2a1b9-3d64-4f80-a2c1-9b5e7d0f4a22",
"subject": "Homecoming 2026 is live",
"body": "Register now for the biggest reunion yet.",
"status": "sent",
"isPublic": true,
"forWhom": "All alumni",
"audienceMode": "all",
"createdAt": "2026-06-02T14:08:11Z"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ announcement.updated
DELETE/announcements/{id}Delete an announcement
Path parameters
| Name | Type | Description |
|---|---|---|
idRequired | string | Announcement ID. |
Example request
curl -X DELETE https://api.alumniconnect.io/v1/announcements/{id} \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-university-slug: your-university-slug"Example response200Confirmation of deletion.
{
"timestamp": "2026-06-02T14:08:11Z",
"dateTime": "Mon, 02 Jun 2026 14:08:11 GMT",
"message": "Confirmation of deletion.",
"event": "announcement.deleted",
"action": "delete",
"data": {
"deleted": true,
"id": "8f0a3c2e-…"
}
}Responses
- 403Forbidden — your plan is inactive / in trial / expired, doesn't include this feature, or you've hit the plan limit.
Events emitted
⚡ announcement.deleted