For the complete documentation index, see llms.txt. This page is also available as Markdown.

Company

get

Get details of a specific company by ID.

Authorizations
sessionidstringRequired
Path parameters
company_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/{company_id}/
GET /api/v1/dashboard/company/{company_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "company_user_name": "text",
    "company_user_email": "text",
    "district_name": "text",
    "name": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "slug": "text",
    "status": "text",
    "location": "text",
    "legal_name": "text",
    "registration_number": "text",
    "tax_id": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "verification_document_url": "text",
    "verification_requested_at": "2026-01-01T00:00:00.000Z",
    "verified_at": "2026-01-01T00:00:00.000Z",
    "verified_by": "text",
    "rejection_reason": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z",
    "deleted_at": "2026-01-01T00:00:00.000Z",
    "updated_by": "text",
    "deleted_by": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null,
    "company_user": "text",
    "district": "text",
    "state": "text",
    "country": "text"
  }
}
get

Retrieve analytics data for company gigs (creator or approved company mentor).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/analytics/gigs/
GET /api/v1/dashboard/company/analytics/gigs/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "total_gigs_posted": 1,
    "active_gigs": 1,
    "closed_gigs": 1,
    "average_hourly_rate": 1,
    "application_funnel": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "conversion_rate": "text"
  }
}
patch

Resubmit a rejected job application.

Authorizations
sessionidstringRequired
Path parameters
app_idstringRequired
Body
resume_linkstring · nullableOptional
cover_letterstring · nullableOptional
Responses
200

No response body

No content

patch/api/v1/dashboard/company/applications/{app_id}/resubmit/
PATCH /api/v1/dashboard/company/applications/{app_id}/resubmit/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "resume_link": "text",
  "cover_letter": "text"
}
200

No response body

No content

patch

Update the status of a job application (creator or company mentor).

Authorizations
sessionidstringRequired
Path parameters
app_idstringRequired
Body
idstringRead-onlyOptional
jobstringRead-onlyOptional
applicant_namestringRead-onlyOptional
applicant_emailstringRead-onlyOptional
resume_linkstring · nullableRead-onlyOptional
cover_letterstring · nullableRead-onlyOptional
statusstring · max: 20Optional
rejection_reasonstring · nullableOptional
applied_atstring · date-timeRead-onlyOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/company/applications/{app_id}/status/
PATCH /api/v1/dashboard/company/applications/{app_id}/status/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 43

{
  "status": "text",
  "rejection_reason": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "job": "text",
    "applicant_name": "text",
    "applicant_email": "text",
    "resume_link": "text",
    "cover_letter": "text",
    "status": "text",
    "rejection_reason": "text",
    "applied_at": "2026-01-01T00:00:00.000Z"
  }
}
delete

Withdraw a submitted job application.

Authorizations
sessionidstringRequired
Path parameters
app_idstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/company/applications/{app_id}/withdraw/
DELETE /api/v1/dashboard/company/applications/{app_id}/withdraw/ HTTP/1.1
Accept: */*
204

No response body

No content

get

List all jobs the user has applied to.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/applications/me/
GET /api/v1/dashboard/company/applications/me/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "job": {
        "id": "text",
        "company_name": "text",
        "company_logo": "text",
        "title": "text",
        "experience": "text",
        "job_description": "text",
        "location": "text",
        "salary_range": "text",
        "job_type": "text",
        "status": "text",
        "duration_value": 1,
        "duration_unit": "text",
        "hourly_rate": "text",
        "deliverables": null,
        "stipend": "text",
        "certificate_provided": "text",
        "rules": [
          {
            "id": "text",
            "rule_type": "text",
            "rule_value": "text"
          }
        ],
        "created_at": "2026-01-01T00:00:00.000Z"
      },
      "resume_link": "text",
      "cover_letter": "text",
      "status": "text",
      "rejection_reason": "text",
      "applied_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
get

Retrieve dashboard summary statistics for the active company.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/company/home-summary/
GET /api/v1/dashboard/company/home-summary/ HTTP/1.1
Accept: */*
200

No response body

No content

get

List all jobs for the authenticated company (creator or company mentor).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/jobs/
GET /api/v1/dashboard/company/jobs/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "company_name": "text",
      "company_logo": "text",
      "title": "text",
      "experience": "text",
      "job_description": "text",
      "location": "text",
      "salary_range": "text",
      "job_type": "text",
      "status": "text",
      "duration_value": 1,
      "duration_unit": "text",
      "hourly_rate": "text",
      "deliverables": null,
      "stipend": "text",
      "certificate_provided": "text",
      "rules": [
        {
          "id": "text",
          "rule_type": "text",
          "rule_value": "text"
        }
      ],
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Post a new job/gig. Jobs are always created with status='Draft' regardless of any status value sent in the request body. Use PATCH /jobs/{job_id}/ to change the status to 'Active' (or any other value) after creation.

Authorizations
sessionidstringRequired
Body
idstringRead-onlyRequired
titlestring · max: 75Required
experiencestring · max: 20 · nullableOptional
job_descriptionstring · nullableOptional
locationstring · max: 75 · nullableOptional
salary_rangestring · max: 36 · nullableOptional
job_typestring · max: 20Required
duration_valueinteger · max: 65535 · nullableOptional
duration_unitstring · max: 20 · nullableOptional
hourly_ratestring · decimal · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
deliverablesany · nullableOptional
stipendstring · max: 75 · nullableOptional
certificate_providedstring · max: 3 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/company/jobs/
POST /api/v1/dashboard/company/jobs/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 300

{
  "title": "text",
  "experience": "text",
  "job_description": "text",
  "location": "text",
  "salary_range": "text",
  "job_type": "text",
  "duration_value": 1,
  "duration_unit": "text",
  "hourly_rate": "text",
  "deliverables": null,
  "stipend": "text",
  "certificate_provided": "text",
  "rules": [
    {
      "rule_type": "text",
      "rule_value": "text"
    }
  ]
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "title": "text",
    "experience": "text",
    "job_description": "text",
    "location": "text",
    "salary_range": "text",
    "job_type": "text",
    "duration_value": 1,
    "duration_unit": "text",
    "hourly_rate": "text",
    "deliverables": null,
    "stipend": "text",
    "certificate_provided": "text",
    "rules": [
      {
        "id": "text",
        "rule_type": "text",
        "rule_value": "text"
      }
    ]
  }
}
get

Retrieve details of a specific job.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/jobs/{job_id}/
GET /api/v1/dashboard/company/jobs/{job_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "company_name": "text",
    "company_logo": "text",
    "title": "text",
    "experience": "text",
    "job_description": "text",
    "location": "text",
    "salary_range": "text",
    "job_type": "text",
    "status": "text",
    "duration_value": 1,
    "duration_unit": "text",
    "hourly_rate": "text",
    "deliverables": null,
    "stipend": "text",
    "certificate_provided": "text",
    "rules": [
      {
        "id": "text",
        "rule_type": "text",
        "rule_value": "text"
      }
    ],
    "created_at": "2026-01-01T00:00:00.000Z"
  }
}
delete

Delete a specific job.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/company/jobs/{job_id}/
DELETE /api/v1/dashboard/company/jobs/{job_id}/ HTTP/1.1
Accept: */*
204

No response body

No content

patch

Update a specific job.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Body
titlestring · max: 75Optional
experiencestring · max: 20 · nullableOptional
job_descriptionstring · nullableOptional
locationstring · max: 75 · nullableOptional
salary_rangestring · max: 36 · nullableOptional
job_typestring · max: 20Optional
statusstring · max: 20Optional
duration_valueinteger · max: 65535 · nullableOptional
duration_unitstring · max: 20 · nullableOptional
hourly_ratestring · decimal · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
deliverablesany · nullableOptional
stipendstring · max: 75 · nullableOptional
certificate_providedstring · max: 3 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/company/jobs/{job_id}/
PATCH /api/v1/dashboard/company/jobs/{job_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 316

{
  "title": "text",
  "experience": "text",
  "job_description": "text",
  "location": "text",
  "salary_range": "text",
  "job_type": "text",
  "status": "text",
  "duration_value": 1,
  "duration_unit": "text",
  "hourly_rate": "text",
  "deliverables": null,
  "stipend": "text",
  "certificate_provided": "text",
  "rules": [
    {
      "rule_type": "text",
      "rule_value": "text"
    }
  ]
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "title": "text",
    "experience": "text",
    "job_description": "text",
    "location": "text",
    "salary_range": "text",
    "job_type": "text",
    "status": "text",
    "duration_value": 1,
    "duration_unit": "text",
    "hourly_rate": "text",
    "deliverables": null,
    "stipend": "text",
    "certificate_provided": "text",
    "rules": [
      {
        "id": "text",
        "rule_type": "text",
        "rule_value": "text"
      }
    ]
  }
}
get

Fetches detailed view, application, and hired statistics for a specific job posting.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/company/jobs/{job_id}/analytics/
GET /api/v1/dashboard/company/jobs/{job_id}/analytics/ HTTP/1.1
Accept: */*
200

No response body

No content

get

List all applications for a specific job (creator or company mentor).

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/jobs/{job_id}/applications/
GET /api/v1/dashboard/company/jobs/{job_id}/applications/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "job": "text",
      "applicant_name": "text",
      "applicant_email": "text",
      "resume_link": "text",
      "cover_letter": "text",
      "status": "text",
      "rejection_reason": "text",
      "applied_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Apply to a job.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Body
idstringRead-onlyRequired
jobstringRequired
resume_linkstring · nullableOptional
cover_letterstring · nullableOptional
statusstringRead-onlyRequired
Responses
200

No response body

No content

post/api/v1/dashboard/company/jobs/{job_id}/applications/
POST /api/v1/dashboard/company/jobs/{job_id}/applications/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "job": "text",
  "resume_link": "text",
  "cover_letter": "text"
}
200

No response body

No content

get

List all applications for a specific job (creator or company mentor).

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/jobs/{job_id}/apply/
GET /api/v1/dashboard/company/jobs/{job_id}/apply/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "job": "text",
      "applicant_name": "text",
      "applicant_email": "text",
      "resume_link": "text",
      "cover_letter": "text",
      "status": "text",
      "rejection_reason": "text",
      "applied_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Apply to a job.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Body
idstringRead-onlyRequired
jobstringRequired
resume_linkstring · nullableOptional
cover_letterstring · nullableOptional
statusstringRead-onlyRequired
Responses
200

No response body

No content

post/api/v1/dashboard/company/jobs/{job_id}/apply/
POST /api/v1/dashboard/company/jobs/{job_id}/apply/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "job": "text",
  "resume_link": "text",
  "cover_letter": "text"
}
200

No response body

No content

post

Increment the view count for a specific job listing.

Authorizations
sessionidstringRequired
Path parameters
job_idstringRequired
Responses
200

No response body

No content

post/api/v1/dashboard/company/jobs/{job_id}/view/
POST /api/v1/dashboard/company/jobs/{job_id}/view/ HTTP/1.1
Accept: */*
200

No response body

No content

get

Public endpoint to list all active jobs.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/jobs/all/
GET /api/v1/dashboard/company/jobs/all/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "company_name": "text",
      "company_logo": "text",
      "title": "text",
      "experience": "text",
      "job_description": "text",
      "location": "text",
      "salary_range": "text",
      "job_type": "text",
      "status": "text",
      "duration_value": 1,
      "duration_unit": "text",
      "hourly_rate": "text",
      "deliverables": null,
      "stipend": "text",
      "certificate_provided": "text",
      "rules": [
        {
          "id": "text",
          "rule_type": "text",
          "rule_value": "text"
        }
      ],
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
get

List all companies with filtering.

Authorizations
sessionidstringRequired
Query parameters
company_sizestringOptional
country_idstring · uuidOptional

Filter by country UUID

district_idstring · uuidOptional

Filter by district UUID

industry_sectorstringOptional
state_idstring · uuidOptional

Filter by state UUID

statusstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/list/
GET /api/v1/dashboard/company/list/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "name": "text",
      "slug": "text",
      "status": "text",
      "email": "text",
      "company_user_id": "text",
      "company_user_name": "text",
      "industry_sector": "text",
      "company_size": "text",
      "location": "text",
      "district_name": "text",
      "state_name": "text",
      "country_name": "text",
      "verification_requested_at": "2026-01-01T00:00:00.000Z",
      "verified_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
get

List all Company Mentor nominations for the authenticated company.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/mentor/list/
GET /api/v1/dashboard/company/mentor/list/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "user_id": "text",
      "user_name": "text",
      "user_email": "text",
      "org_name": "text",
      "mentor_tier": "IG_MENTOR",
      "status": "PENDING",
      "reason": "text",
      "verification_note": "text",
      "verified_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Nominate a platform user as a Company Mentor for your company. Provide the user's muid (e.g. john-doe@mulearn). The user must already be a member of the company's organisation (i.e. they appear in UserOrganizationLink for this company). Only the verified company creator can nominate. The nomination enters PENDING state until an admin approves it.

Authorizations
sessionidstringRequired
Body

Nominate an existing platform user as a Company Mentor for the company.

The nominated user is identified by their muid (e.g. john-doe@mulearn) and must already be linked to the company's Organisation record.

muidstringRequired

MuID of the platform user to nominate (e.g. john-doe@mulearn).

reasonstringOptional

Optional reason / note to pass with the nomination.

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/company/mentor/nominate/
POST /api/v1/dashboard/company/mentor/nominate/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "muid": "text",
  "reason": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "user_id": "text",
    "user_name": "text",
    "user_email": "text",
    "org_name": "text",
    "mentor_tier": "IG_MENTOR",
    "status": "PENDING",
    "reason": "text",
    "verification_note": "text",
    "verified_at": "2026-01-01T00:00:00.000Z"
  }
}
get

Directory of MuLearners available to companies (creator or company mentor).

Authorizations
sessionidstringRequired
Query parameters
achievementstringOptional
collegestringOptional
departmentstringOptional
graduation_yearstringOptional
igstringOptional
levelintegerOptional
max_karmaintegerOptional
min_karmaintegerOptional
skillstringOptional
taskstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/mulearners/
GET /api/v1/dashboard/company/mulearners/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "full_name": "text",
      "muid": "text",
      "email": "name@gmail.com",
      "karma": "text",
      "level": "text",
      "college": "text",
      "department": "text",
      "graduation_year": "text"
    }
  ]
}
get

Retrieve the profile of the authenticated company (creator or approved company mentor).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/profile/
GET /api/v1/dashboard/company/profile/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "company_user_name": "text",
    "company_user_email": "text",
    "district_name": "text",
    "name": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "slug": "text",
    "status": "text",
    "location": "text",
    "legal_name": "text",
    "registration_number": "text",
    "tax_id": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "verification_document_url": "text",
    "verification_requested_at": "2026-01-01T00:00:00.000Z",
    "verified_at": "2026-01-01T00:00:00.000Z",
    "verified_by": "text",
    "rejection_reason": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z",
    "deleted_at": "2026-01-01T00:00:00.000Z",
    "updated_by": "text",
    "deleted_by": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null,
    "company_user": "text",
    "district": "text",
    "state": "text",
    "country": "text"
  }
}
patch

Update the profile of the authenticated company (creator or approved company mentor).

Authorizations
sessionidstringRequired
Body
namestring · max: 75Optional
logostring · nullableOptional
descriptionstringOptional
short_pitchstring · max: 900 · nullableOptional
industry_sectorstring · max: 75 · nullableOptional
website_linkstring · nullableOptional
emailstring · max: 100 · nullableOptional
locationstring · max: 150 · nullableOptional
district_idstring · nullableOptional
state_idstring · nullableOptional
country_idstring · nullableOptional
legal_namestring · max: 150 · nullableOptional
registration_numberstring · max: 100 · nullableOptional
tax_idstring · max: 100 · nullableOptional
company_sizestring · max: 50 · nullableOptional
linkedin_urlstring · nullableOptional
founded_yearinteger · max: 65535 · nullableOptional
remote_policystring · max: 20 · nullableOptional
culture_textstring · nullableOptional
tech_stackany · nullableOptional
perksany · nullableOptional
testimonialsany · nullableOptional
galleryany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/company/profile/
PATCH /api/v1/dashboard/company/profile/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 447

{
  "name": "text",
  "logo": "text",
  "description": "text",
  "short_pitch": "text",
  "industry_sector": "text",
  "website_link": "text",
  "email": "text",
  "location": "text",
  "district_id": "text",
  "state_id": "text",
  "country_id": "text",
  "legal_name": "text",
  "registration_number": "text",
  "tax_id": "text",
  "company_size": "text",
  "linkedin_url": "text",
  "founded_year": 1,
  "remote_policy": "text",
  "culture_text": "text",
  "tech_stack": null,
  "perks": null,
  "testimonials": null,
  "gallery": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "name": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "location": "text",
    "district_id": "text",
    "state_id": "text",
    "country_id": "text",
    "legal_name": "text",
    "registration_number": "text",
    "tax_id": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null
  }
}
get

Public endpoint to view a company's profile.

Authorizations
sessionidstringRequired
Path parameters
slugstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/profile/public/{slug}/
GET /api/v1/dashboard/company/profile/public/{slug}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "name": "text",
    "slug": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "location": "text",
    "district_name": "text",
    "state_name": "text",
    "country_name": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null
  }
}
get

Public endpoint to view all active jobs for a specific company.

Authorizations
sessionidstringRequired
Path parameters
slugstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/profile/public/{slug}/jobs/
GET /api/v1/dashboard/company/profile/public/{slug}/jobs/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "company_name": "text",
      "company_logo": "text",
      "title": "text",
      "experience": "text",
      "job_description": "text",
      "location": "text",
      "salary_range": "text",
      "job_type": "text",
      "status": "text",
      "duration_value": 1,
      "duration_unit": "text",
      "hourly_rate": "text",
      "deliverables": null,
      "stipend": "text",
      "certificate_provided": "text",
      "rules": [
        {
          "id": "text",
          "rule_type": "text",
          "rule_value": "text"
        }
      ],
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Submit a new company registration.

Authorizations
sessionidstringRequired
Body
namestring · max: 75Required
logostring · nullableOptional
descriptionstringRequired
short_pitchstring · max: 900 · nullableOptional
industry_sectorstring · max: 75 · nullableOptional
website_linkstring · nullableOptional
emailstring · max: 100 · nullableOptional
locationstring · max: 150 · nullableOptional
district_idstring · nullableOptional
state_idstring · nullableOptional
country_idstring · nullableOptional
legal_namestring · max: 150 · nullableOptional
registration_numberstring · max: 100 · nullableOptional
tax_idstring · max: 100 · nullableOptional
company_sizestring · max: 50 · nullableOptional
linkedin_urlstring · nullableOptional
founded_yearinteger · max: 65535 · nullableOptional
remote_policystring · max: 20 · nullableOptional
culture_textstring · nullableOptional
tech_stackany · nullableOptional
perksany · nullableOptional
testimonialsany · nullableOptional
galleryany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/company/register/
POST /api/v1/dashboard/company/register/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 447

{
  "name": "text",
  "logo": "text",
  "description": "text",
  "short_pitch": "text",
  "industry_sector": "text",
  "website_link": "text",
  "email": "text",
  "location": "text",
  "district_id": "text",
  "state_id": "text",
  "country_id": "text",
  "legal_name": "text",
  "registration_number": "text",
  "tax_id": "text",
  "company_size": "text",
  "linkedin_url": "text",
  "founded_year": 1,
  "remote_policy": "text",
  "culture_text": "text",
  "tech_stack": null,
  "perks": null,
  "testimonials": null,
  "gallery": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "name": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "location": "text",
    "district_id": "text",
    "state_id": "text",
    "country_id": "text",
    "legal_name": "text",
    "registration_number": "text",
    "tax_id": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null
  }
}
patch

Update or resubmit a pending/rejected company registration.

Authorizations
sessionidstringRequired
Body
namestring · max: 75Optional
logostring · nullableOptional
descriptionstringOptional
short_pitchstring · max: 900 · nullableOptional
industry_sectorstring · max: 75 · nullableOptional
website_linkstring · nullableOptional
emailstring · max: 100 · nullableOptional
locationstring · max: 150 · nullableOptional
district_idstring · nullableOptional
state_idstring · nullableOptional
country_idstring · nullableOptional
legal_namestring · max: 150 · nullableOptional
registration_numberstring · max: 100 · nullableOptional
tax_idstring · max: 100 · nullableOptional
company_sizestring · max: 50 · nullableOptional
linkedin_urlstring · nullableOptional
founded_yearinteger · max: 65535 · nullableOptional
remote_policystring · max: 20 · nullableOptional
culture_textstring · nullableOptional
tech_stackany · nullableOptional
perksany · nullableOptional
testimonialsany · nullableOptional
galleryany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/company/register/
PATCH /api/v1/dashboard/company/register/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 447

{
  "name": "text",
  "logo": "text",
  "description": "text",
  "short_pitch": "text",
  "industry_sector": "text",
  "website_link": "text",
  "email": "text",
  "location": "text",
  "district_id": "text",
  "state_id": "text",
  "country_id": "text",
  "legal_name": "text",
  "registration_number": "text",
  "tax_id": "text",
  "company_size": "text",
  "linkedin_url": "text",
  "founded_year": 1,
  "remote_policy": "text",
  "culture_text": "text",
  "tech_stack": null,
  "perks": null,
  "testimonials": null,
  "gallery": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "name": "text",
    "logo": "text",
    "description": "text",
    "short_pitch": "text",
    "industry_sector": "text",
    "website_link": "text",
    "email": "text",
    "location": "text",
    "district_id": "text",
    "state_id": "text",
    "country_id": "text",
    "legal_name": "text",
    "registration_number": "text",
    "tax_id": "text",
    "company_size": "text",
    "linkedin_url": "text",
    "founded_year": 1,
    "remote_policy": "text",
    "culture_text": "text",
    "tech_stack": null,
    "perks": null,
    "testimonials": null,
    "gallery": null
  }
}
get

Check the status of a company registration.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/company/status/
GET /api/v1/dashboard/company/status/ HTTP/1.1
Accept: */*
200

No response body

No content

get

Get summary stats for companies for the admin dashboard.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/company/summary/
GET /api/v1/dashboard/company/summary/ HTTP/1.1
Accept: */*
200

No response body

No content

get

Retrieve analytics data for the talent pool.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/company/talent-pool/analytics/
GET /api/v1/dashboard/company/talent-pool/analytics/ HTTP/1.1
Accept: */*
200

No response body

No content

get

List all tasks submitted by the authenticated company user (creator or company mentor). Supports pagination, search, and sort.

Authorizations
sessionidstringRequired
Query parameters
approval_statusstringOptional

Filter by approval_status: pending | approved | rejected

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/tasks/
GET /api/v1/dashboard/company/tasks/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "data": [
      {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "pagination": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}
post

Create a new task for the company. The task is saved with approval_status='pending' and active=False until an admin approves it. Accepts an optional skill_ids list.

Authorizations
sessionidstringRequired
Body

Serializer for company task creation. Similar to mentor task creation but IG is optional and no IG validation. Locked fields (active, approval_status, requested_by, requested_at) are injected by the view via serializer.save(**overrides).

hashtagstring · max: 75Required
titlestring · max: 75Required
karmainteger · min: -2147483648 · max: 2147483647 · nullableOptional
usage_countinteger · min: -2147483648 · max: 2147483647Optional
descriptionstring · nullableOptional
typestringRequired
levelstring · nullableOptional
created_bystringRequired
updated_bystringRequired
Responses
200

Task submitted for approval.

No content

post/api/v1/dashboard/company/tasks/
POST /api/v1/dashboard/company/tasks/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 149

{
  "hashtag": "text",
  "title": "text",
  "karma": 1,
  "usage_count": 1,
  "description": "text",
  "type": "text",
  "level": "text",
  "created_by": "text",
  "updated_by": "text"
}
200

Task submitted for approval.

No content

get

Retrieve the detail of a specific task submitted by the company.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/company/tasks/{task_id}/
GET /api/v1/dashboard/company/tasks/{task_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "hashtag": "text",
    "discord_link": "text",
    "title": "text",
    "description": "text",
    "karma": 1,
    "channel": "text",
    "type": "text",
    "active": true,
    "variable_karma": true,
    "usage_count": 1,
    "level": "text",
    "org": "text",
    "ig": "text",
    "event": "text",
    "bonus_karma": 1,
    "bonus_time": "2026-01-01T00:00:00.000Z",
    "approval_status": "approved",
    "rejection_reason": "text",
    "reviewed_at": "2026-01-01T00:00:00.000Z",
    "requested_by_name": "text",
    "requested_at": "2026-01-01T00:00:00.000Z",
    "skills": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
put

Update a task submitted by the company. Regardless of the current approval_status, the task reverts to 'pending' and active=False after editing.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Body

Partial update serializer — same writable fields as create except created_by.

hashtagstring · max: 75Required
titlestring · max: 75Required
karmainteger · min: -2147483648 · max: 2147483647 · nullableOptional
usage_countinteger · min: -2147483648 · max: 2147483647Optional
descriptionstring · nullableOptional
typestringRequired
levelstring · nullableOptional
updated_bystringRequired
Responses
200

Task updated and re-submitted for approval.

No content

put/api/v1/dashboard/company/tasks/{task_id}/
PUT /api/v1/dashboard/company/tasks/{task_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 129

{
  "hashtag": "text",
  "title": "text",
  "karma": 1,
  "usage_count": 1,
  "description": "text",
  "type": "text",
  "level": "text",
  "updated_by": "text"
}
200

Task updated and re-submitted for approval.

No content

delete

Soft-delete a task submitted by the company by marking it inactive.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Responses
200

Task deleted successfully.

No content

delete/api/v1/dashboard/company/tasks/{task_id}/
DELETE /api/v1/dashboard/company/tasks/{task_id}/ HTTP/1.1
Accept: */*
200

Task deleted successfully.

No content

patch

Update a task submitted by the company (partial update). Regardless of the current approval_status, the task reverts to pending and active=False.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Body

Validates the payload when a company updates an existing task. All fields are optional to support partial updates.

titlestring · max: 75Optional
hashtagstring · max: 75Optional
descriptionstring · nullableOptional
karmainteger · min: 1Optional
ig_idstring · max: 36Optional
type_idstring · max: 36Optional
channel_idstring · max: 36 · nullableOptional
level_idstring · max: 36 · nullableOptional
skill_idsstring[]Optional

List of active Skill UUIDs to link to this task.

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/company/tasks/{task_id}/
PATCH /api/v1/dashboard/company/tasks/{task_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 155

{
  "title": "text",
  "hashtag": "text",
  "description": "text",
  "karma": 1,
  "ig_id": "text",
  "type_id": "text",
  "channel_id": "text",
  "level_id": "text",
  "skill_ids": [
    "text"
  ]
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "hashtag": "text",
    "discord_link": "text",
    "title": "text",
    "description": "text",
    "karma": 1,
    "channel": "text",
    "type": "text",
    "active": true,
    "variable_karma": true,
    "usage_count": 1,
    "level": "text",
    "org": "text",
    "ig": "text",
    "event": "text",
    "bonus_karma": 1,
    "bonus_time": "2026-01-01T00:00:00.000Z",
    "approval_status": "approved",
    "rejection_reason": "text",
    "reviewed_at": "2026-01-01T00:00:00.000Z",
    "requested_by_name": "text",
    "requested_at": "2026-01-01T00:00:00.000Z",
    "skills": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
patch

Verify or reject a company.

Authorizations
sessionidstringRequired
Path parameters
company_idstringRequired
Body
statusstring · enumOptional
  • verified - verified
  • rejected - rejected
Possible values:
rejection_reasonstringOptional
Responses
200

No response body

No content

patch/api/v1/dashboard/company/verify/{company_id}/
PATCH /api/v1/dashboard/company/verify/{company_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "status": "verified",
  "rejection_reason": "text"
}
200

No response body

No content

Last updated

Was this helpful?