Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Fireinthebellyy/ftb-web/llms.txt
Use this file to discover all available pages before exploring further.
The Internships API allows you to create, retrieve, update, and delete internship listings on FTB Hustle.
Authentication
Most internship endpoints require authentication:
- GET /api/internships: Public endpoint (optional authentication for admin features)
- GET /api/internships/: Public endpoint
- POST /api/internships: Requires authentication (ingest user)
- PUT /api/internships/: Requires authentication (owner or admin)
- DELETE /api/internships/: Requires authentication (owner or admin)
List Internships
curl -X GET "https://ftbhustle.com/api/internships?limit=10&offset=0&type=remote"
Retrieve a paginated list of internships with optional filtering.
Query Parameters
Number of internships to return per page
Number of internships to skip for pagination
Search term to filter by title, description, or hiring organization
Comma-separated list of internship types: remote, hybrid, onsite
Comma-separated list of tags to filter by (case-insensitive)
Filter by location (partial match)
Minimum stipend amount in rupees
Maximum stipend amount in rupees
Response
Indicates if the request was successful
Array of internship objects
Unique identifier for the internship
Detailed description of the internship
Type of work: remote, hybrid, or onsite
Work timing: full_time or part_time
Monthly stipend amount in rupees
Duration of the internship (e.g., “3 months”, “6 months”)
Required experience level
Location of the internship
Application deadline in YYYY-MM-DD format
Name of the hiring organization
Name of the hiring manager
Whether the internship has been verified
Whether the internship is active
ID of the user who created the internship
Creation timestamp (ISO 8601 format)
Last update timestamp (ISO 8601 format)
Pagination metadata
Whether there are more internships to fetch
{
"success": true,
"internships": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"title": "Software Engineering Intern",
"description": "Join our team to build scalable web applications",
"type": "remote",
"timing": "full_time",
"link": "https://example.com/apply",
"tags": ["web development", "react", "nodejs"],
"stipend": 25000,
"duration": "6 months",
"experience": "0-1 years",
"location": "Remote",
"deadline": "2024-06-30",
"hiringOrganization": "TechCorp India",
"hiringManager": "Jane Smith",
"isVerified": true,
"isActive": true,
"userId": "user123",
"user": {
"id": "user123",
"name": "John Doe",
"image": "https://example.com/avatar.jpg",
"role": "member"
},
"createdAt": "2024-03-01T10:00:00Z",
"updatedAt": "2024-03-01T10:00:00Z"
}
],
"pagination": {
"limit": 10,
"offset": 0,
"total": 245,
"hasMore": true
}
}
Get Single Internship
curl -X GET "https://ftbhustle.com/api/internships/550e8400-e29b-41d4-a716-446655440001"
Retrieve detailed information about a specific internship.
Path Parameters
The unique identifier of the internship
Response
Indicates if the request was successful
The internship object with all details
{
"success": true,
"internship": {
"id": "550e8400-e29b-41d4-a716-446655440001",
"title": "Software Engineering Intern",
"description": "Join our team to build scalable web applications",
"type": "remote",
"timing": "full_time",
"link": "https://example.com/apply",
"tags": ["web development", "react", "nodejs"],
"location": "Remote",
"deadline": "2024-06-30",
"stipend": 25000,
"hiringOrganization": "TechCorp India",
"hiringManager": "Jane Smith",
"experience": "0-1 years",
"duration": "6 months",
"createdAt": "2024-03-01T10:00:00Z",
"updatedAt": "2024-03-01T10:00:00Z",
"isVerified": true,
"isActive": true,
"userId": "user123",
"user": {
"id": "user123",
"name": "John Doe",
"image": "https://example.com/avatar.jpg",
"role": "member"
}
}
}
Create Internship
curl -X POST "https://ftbhustle.com/api/internships" \
-H "Content-Type: application/json" \
-d '{
"title": "Data Science Intern",
"description": "Work on machine learning projects",
"type": "hybrid",
"timing": "full_time",
"link": "https://example.com/apply",
"hiringOrganization": "DataCorp",
"tags": ["machine learning", "python", "data analysis"],
"stipend": 30000,
"duration": "6 months",
"location": "Bangalore, India",
"deadline": "2024-07-15"
}'
Create a new internship listing. This endpoint supports both single and batch creation.
Request Body
For single internship:
Name of the hiring organization
Work type: remote, hybrid, or onsite
Work timing: full_time or part_time
Monthly stipend in rupees
Duration (e.g., “3 months”, “6 months”)
Required experience level
Application deadline (ISO 8601 format or YYYY-MM-DD)
Batch Creation
To create multiple internships at once, send an array of internship objects:
[
{ "title": "Internship 1", ... },
{ "title": "Internship 2", ... }
]
Response
Indicates if the creation was successful
Number of internships created
The created internship object(s)
{
"success": true,
"count": 1,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"title": "Data Science Intern",
"description": "Work on machine learning projects",
"type": "hybrid",
"timing": "full_time",
"link": "https://example.com/apply",
"tags": ["machine learning", "python", "data analysis"],
"stipend": 30000,
"duration": "6 months",
"experience": null,
"location": "Bangalore, India",
"deadline": "2024-07-15",
"hiringOrganization": "DataCorp",
"hiringManager": null,
"isVerified": false,
"isActive": true,
"createdAt": "2024-03-15T14:30:00Z",
"updatedAt": "2024-03-15T14:30:00Z",
"deletedAt": null,
"userId": "ingest-user-id"
}
}
Update Internship
curl -X PUT "https://ftbhustle.com/api/internships/550e8400-e29b-41d4-a716-446655440001" \
-H "Cookie: session=YOUR_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Software Engineering Intern",
"stipend": 30000,
"isActive": true
}'
Update an existing internship. Only the owner or admin can update internships.
Path Parameters
The unique identifier of the internship to update
Request Body
All fields are optional. Only provided fields will be updated.
Work type: remote, hybrid, or onsite
Work timing: full_time or part_time
Verification status (admin only)
Active status (admin only)
Response
Indicates if the update was successful
The updated internship object
Error Responses
- 401 Unauthorized: User is not authenticated
- 403 Forbidden: User doesn’t have permission to edit this internship
- 404 Not Found: Internship not found
- 400 Bad Request: Validation error
Delete Internship
curl -X DELETE "https://ftbhustle.com/api/internships/550e8400-e29b-41d4-a716-446655440001" \
-H "Cookie: session=YOUR_SESSION_TOKEN"
Soft delete an internship. Only the owner or admin can delete internships.
Path Parameters
The unique identifier of the internship to delete
Response
Indicates if the deletion was successful
Error Responses
- 401 Unauthorized: User is not authenticated
- 403 Forbidden: User doesn’t have permission to delete this internship
- 404 Not Found: Internship not found
Error Handling
All API endpoints return appropriate HTTP status codes and error messages:
{
"error": "Failed to fetch internships"
}
For validation errors:
Validation Error Response
{
"error": [
{
"code": "invalid_type",
"path": ["title"],
"message": "Title is required"
}
]
}