# Analytics Source: https://docs.jobkit.io/analytics GET /analytics.json The analytics data for the job board Requires admin authentication ```json Response theme={"system"} { "events_per_day": { "2025-01-10": 16, "2025-01-09": 90, "2025-01-08": 72, "2025-01-07": 54, "2025-01-06": 60 }, "top_paths": { "/": 35, "/jobs/1": 15, "/jobs/2": 14, "/users/sign_in": 12, "/jobs/3": 7, "/jobs/4": 5 }, "top_countries": { "United States": 30, "Germany": 22, "France": 15, "Denmark": 5 }, "top_sources": { "google.com": 10, "x.com": 6 }, "jobs": 2, "subscribers": 1, "users": 2 } ``` # Authentication Source: https://docs.jobkit.io/authentication The API uses Basic HTTP Authentication to authenticate requests. Authenticate each request by providing your user encoded email and password in an Authorization header: ``` Authorization: Basic base64(email:password) ``` You can learn more about [Basic HTTP Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication). ```bash cURL theme={"system"} curl --request GET \ --url https://elixir.jobkit.io/jobs.json \ --header 'Authorization: Basic cGFzc3dvcmQ6ZW1haWw' ``` ```json 200 theme={"system"} [ { "id": 1, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "100000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "email", "application_email": "email@company.com", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../1.png", "url": "https://job.board.com/jobs/1.json", "preview_image_url": "https://job.board.com/jobs/1.png", "created_at": "2025-01-10T18:21:59+00:00" }, ... ] ``` ```json 401 theme={"system"} { "error": "Invalid Email or password." } ``` Please keep your email and password secure! Change them if you think they are compromised. If your integration does not require administrator access, it's a good idea to create a separate user on your job board to authenticate the API requests. Admin users can read, create, update and delete any resource on the board. Some resources will return extra data when authenticated as administrator or the owner of that resource. # Create category Source: https://docs.jobkit.io/categories/create POST /categories.json Create a new job category Requires admin authentication The name of the category ```json Response theme={"system"} { "id": 123, "name": "" } ``` # Delete category Source: https://docs.jobkit.io/categories/delete DELETE /categories/{id}.json Delete a category with the given ID and all related jobs Requires admin authentication All jobs related to the deleted category will be deleted as well The id of the category to delete ```json Response theme={"system"} { "message": "Category was successfully removed." } ``` # List categories Source: https://docs.jobkit.io/categories/list GET /categories.json The list of all job categories Requires user authentication ```json Response theme={"system"} [ { "id": 1, "name": "Engineering" }, { "id": 2, "name": "Design" } ] ``` # Update category Source: https://docs.jobkit.io/categories/update PUT /categories/{id}.json Update a category with the given ID Requires admin authentication The id of the category to update The new name of the category ```json Response theme={"system"} { "id": 123, "name": "" } ``` # Introduction Source: https://docs.jobkit.io/introduction The JobKit API allows you to integrate your job board with external services, automate tasks and create custom workflows. The REST API is accessible over HTTPS only and is designed to have predictable, resource-oriented URLs and to use HTTP response codes to indicate API errors. It accepts JSON or form-encoded request and returns JSON-encoded responses. All API endpoints are accessible on your job board web address - your custom domain or your `subdomain.jobkit.io`. Read further to learn how to authenticate, make requests and receive responses. # Create job Source: https://docs.jobkit.io/jobs/create POST /jobs.json Create a new job post Requires user authentication The job title, maximum 64 characters The job description in Markdown format The job location, e.g. Worldwide The job salary, can be empty if not specified The job salary currency in ISO format, required when `salary` is specified The job salary period, should be either `hourly`, `daily`, `weekly`, `monthly` or `yearly` The job arrangement, should be either `remote`, `onsite` or `hybrid` The id of the job category The id of the job term The name of the hiring company The URL of the hiring company website The job application type, should be either `url` or `email` The job application URL, required if `application_type` is `url` The job application email, required if `application_type` is `email` The job logo image file, maximum 5MB The id of the job payment plan ```json Response theme={"system"} { "id": 2, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "120000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "url", "application_url": "https://www.company.com/application", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../2.png", "url": "https://job.board.com/jobs/2.json", "preview_image_url": "https://job.board.com/jobs/2.png", "created_at": "2025-01-10T18:21:59+00:00" } ``` # Delete job Source: https://docs.jobkit.io/jobs/delete DELETE /jobs/{id}.json Delete a job post Requires user authentication The id of the job to delete ```json Response theme={"system"} { "message": "Job successfully deleted." } ``` # Get job Source: https://docs.jobkit.io/jobs/get GET /jobs/{id}.json Get the details of a job post The id of the job ```json Response theme={"system"} { "id": 1, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "100000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "email", "application_email": "email@company.com", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../1.png", "url": "https://job.board.com/jobs/1.json", "preview_image_url": "https://job.board.com/jobs/1.png", "created_at": "2025-01-10T18:21:59+00:00" } ``` # List jobs Source: https://docs.jobkit.io/jobs/list GET /jobs.json The list of all jobs accessible by the authenticated user The search query to filter the list of jobs The term id to filter the list of jobs The category id to filter the list of jobs ```json Response theme={"system"} [ { "id": 1, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "100000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "email", "application_email": "email@company.com", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../1.png", "url": "https://job.board.com/jobs/1.json", "preview_image_url": "https://job.board.com/jobs/1.png", "created_at": "2025-01-10T18:21:59+00:00" }, { "id": 2, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "120000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "url", "application_url": "https://www.company.com/application", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../2.png", "url": "https://job.board.com/jobs/2.json", "preview_image_url": "https://job.board.com/jobs/2.png", "created_at": "2025-01-10T18:21:59+00:00" } ] ``` # Update job Source: https://docs.jobkit.io/jobs/update PUT /jobs/{id}.json Update a job post with the given ID Requires user authentication The id of the job to update The job title, maximum 64 characters The job description in Markdown format The job location, e.g. Worldwide The job salary, can be empty if not specified The job salary currency in ISO format, required when `salary` is specified The job salary period, should be either `hourly`, `daily`, `weekly`, `monthly` or `yearly` The job arrangement, should be either `remote`, `onsite` or `hybrid` The id of the job category The id of the job term The name of the hiring company The URL of the hiring company website The job application type, should be either `url` or `email` The job application URL, required if `application_type` is `url` The job application email, required if `application_type` is `email` The job logo image file, maximum 5MB ```json Response theme={"system"} { "id": 2, "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "120000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "url", "application_url": "https://www.company.com/application", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "logo": "https://job.board.com/files/.../2.png", "url": "https://job.board.com/jobs/2.json", "preview_image_url": "https://job.board.com/jobs/2.png", "created_at": "2025-01-10T18:21:59+00:00" } ``` # Archive plan Source: https://docs.jobkit.io/plans/archive PUT /plans/{id}/archive.json Archive a plan with the given ID Requires admin authentication The plan will be hidden in the future. Existing jobs will NOT be affected The id of the plan to archive ```json Response theme={"system"} { "message": "Plan successfully archived." } ``` # Create plan Source: https://docs.jobkit.io/plans/create POST /plans.json Create a new payment plan Requires admin authentication The name of the plan, should be 3-32 characters The price of a job in this plan, can be set to 0 The period of the plan in days, should be between 1 and 90 Whether the jobs in this plan will be highlighted Whether the jobs in this plan will have a badge displayed Whether the jobs in this plan will be pinned to the top of the list ```json Response theme={"system"} { "id": 3, "name": "Featured", "price": 99, "period": 30, "highlight": true, "badge": true, "pin": true } ``` # List plans Source: https://docs.jobkit.io/plans/list GET /plans.json The list of all active payment plans Requires user authentication ```json Response theme={"system"} [ { "id": 1, "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, { "id": 2, "name": "Highlighted", "price": 49, "period": 30, "highlight": true, "badge": false, "pin": false }, { "id": 3, "name": "Featured", "price": 99, "period": 30, "highlight": true, "badge": true, "pin": true } ] ``` # Update plan Source: https://docs.jobkit.io/plans/update PUT /plans/{id}.json Update a payment plan with the given ID Requires admin authentication The id of the plan to update The name of the plan, should be 3-32 characters The price of a job in this plan, can be set to 0 The period of the plan in days, should be between 1 and 90 Whether the jobs in this plan will be highlighted Whether the jobs in this plan will have a badge displayed Whether the jobs in this plan will be pinned to the top of the list ```json Response theme={"system"} { "id": 3, "name": "Featured", "price": 99, "period": 30, "highlight": true, "badge": true, "pin": true } ``` # Subscribers Source: https://docs.jobkit.io/subscribers GET /subscribers.json The list of all email subsribers Requires admin authentication ```json Response theme={"system"} [ { "id": 1, "email": "subscriber@test.com", "email_confirmed": true, "created_at": "2025-01-09T18:21:59+00:00", "updated_at": "2025-01-09T18:21:59+00:00" } ] ``` # Create term Source: https://docs.jobkit.io/terms/create POST /terms.json Create a new job term Requires admin authentication The name of the category ```json Response theme={"system"} { "id": 123, "name": "" } ``` # Delete term Source: https://docs.jobkit.io/terms/delete DELETE /terms/{id}.json Delete a term with the given ID and all related jobs Requires admin authentication All jobs related to the deleted term will be deleted as well The id of the term to update ```json Response theme={"system"} { "message": "Term was successfully removed." } ``` # List terms Source: https://docs.jobkit.io/terms/list GET /terms.json The list of all job terms Requires user authentication ```json Response theme={"system"} [ { "id": 1, "name": "Full-time" }, { "id": 2, "name": "Part-time" } ] ``` # Update term Source: https://docs.jobkit.io/terms/update PUT /terms/{id}.json Update a job term with the given ID Requires admin authentication The id of the term to update The new name of the term ```json Response theme={"system"} { "id": 123, "name": "" } ``` # Users Source: https://docs.jobkit.io/users GET /users.json The list of all registered users Requires admin authentication ```json Response theme={"system"} [ { "id": 1, "email": "admin@test.com", "role": "admin", "created_at": "2025-01-09T18:21:59+00:00", "updated_at": "2025-01-09T18:21:59+00:00" }, { "id": 2, "email": "user@test.com", "role": "user", "created_at": "2025-01-09T18:21:59+00:00", "updated_at": "2025-01-09T18:21:59+00:00" } ] ``` # Webhooks Source: https://docs.jobkit.io/webhooks A "webhook" is a HTTP request to a specified URL made when certain event occurs. If the JobKit API is a "pull" interface, webhooks are the "push" interface. You can define the webhook URL in your job board settings page. When a new job is **published**, a `POST` HTTP request will be made to that URL, carrying a JSON payload that looks like this: ```JSON theme={"system"} { "title": "Job title", "description": "Job description in Markdown format", "location": "Worldwide", "arrangement": "remote", "salary": "100000", "salary_currency": "USD", "salary_period": "yearly", "company": "Company LLC", "company_website": "https://www.company.com", "application_type": "email", "application_email": "email@company.com", "created_at": "2026-01-10T16:16:11.126Z", "published_at": "2026-01-10T16:16:11.127Z", "expires_at": "2026-03-09T16:12:07.347Z", "term": { "id": 1, "name": "Full-time" }, "category": { "id": 1, "name": "Engineering" }, "plan": { "name": "Basic", "price": 0, "period": 30, "highlight": false, "badge": false, "pin": false }, "user": { "email": "user@company.com", "created_at": "2026-01-10T12:16:11.126Z", "role": "user", "jobs_count": 5 }, "url": "https://job.board.com/jobs/1.json", "preview_image_url": "https://job.board.com/jobs/1.png", "logo": "https://job.board.com/files/.../1.png", } ``` The receiving URL should return an appropriate HTTP response code, e.g. * `200` for success * `4xx` for client errors * `5xx` for server errors Webhook requests will be retried **up to 5 times** until successfully received. Make sure your webhook URL is secure, so you don't leak user data! ### Example use cases * Post a notification on Slack, Discord and/or other communities * Post a social media post on LinkedIn, X, Facebook, etc. * Analyze/transform the published data and send an email notification * Trigger an AI agent workflow ### Automation tools There are many tools you can use to receive the webhook and trigger different workflows. Here are just a few for your reference: * [Zapier](https://zapier.com) * [Pipedream](https://pipedream.com) * [Make](https://www.make.com) * [Trigger.dev](https://trigger.dev) * [n8n](https://n8n.io) * [Integrately](https://integrately.com)