--- title: "Submit a Job to the Job Pool Using Jobs Component" url: https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/submit-jobs-using-jobs/ description: "Learn about working with Catalyst Job Scheduling that provides components for you to schedule and execute jobs to trigger Job Functions, Webhooks, Circuits, or AppSail services." last_updated: 2026-08-28T06:26:16Z service: Job Scheduling type: general related_links: - name: "Job Pool Documentation" url: /en/job-scheduling/help/jobpool/introduction/ - name: "Cron Documentation" url: /en/job-scheduling/help/cron/introduction/ - name: "Job Documentation" url: /en/job-scheduling/help/job/introduction/ - name: "Submit a Job Using Pre-Defined Cron" url: /en/job-scheduling/help/implementation/submit-job-predefined-cron/ - name: "Submit a Job Using Dynamic Cron" url: /en/job-scheduling/help/implementation/submit-job-dynamic-cron/ - name: "Java SDK" url: /en/sdk/java/v1/job-scheduling/overview/ - name: "Node.js SDK" url: /en/sdk/nodejs/v2/job-scheduling/overview/ - name: "Python SDK" url: /en/sdk/python/v1/job-scheduling/overview/ - name: "Job Scheduling REST APIs" url: /en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools --- # Submit a Job to the Job Pool Using Jobs Component You can use the **Jobs** component to submit jobs to its job pool instantly. The job can be created and submitted either using the console's *Builder* or using the [Java](https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/overview/), [Node.js](https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/overview/) or [Python](https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/overview/) SDK. Before you submit a job to the job pool, you need to ensure: * If the job is being submitted to a [Function Job Pool](https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/create-jobpool/), then the job pool needs to be created with proper memory allocation to [avoid dispatch delays](https://docs.catalyst.zoho.com/en/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay). To submit a job to a job pool: 1. Navigate to the *Catalyst Job Scheduling* Service section of the console, then click **Start Exploring**. ![catalyst_job_scheduling_start_exploring_page](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_start_exploring_page.webp) 2. Navigate to **Jobs** under *JOB EXECUTOR* present in the side-bar, then click **Create Job**. ![catalyst_job_scheduling_jobs_create_start](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_create_start.webp) **Using the Builder** ### Create Job Using Builder 3. Provide a name for your job in the **Job Name** input field. ![catalyst_job_scheduling_jobs_jobs_name](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_jobs_name.webp) 4. Select the *Job Pool* you wish to submit this job in using the **Select Job Pool** drop-down. ![catalyst_job_scheduling_jobs_jobpool_choice](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_jobpool_choice.webp) > **Note:** If you have not previously created any job pools, click **Create New**. You will be directed to the *Job Pool* section. Steps to create a job pool can be found [here](https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/create-jobpool/). 5. Based on your job pool's **Target Type**, the steps to configure a job vary. For the purposes of this help documentation, we are going to create a job for the **Function Job Pool**. ![catalyst_job_scheduling_jobs_sub_func_jp](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_sub_func_jp.webp) > **Note:** You can find the steps to configure a job for: * **Webhook Job Pool**: [here](https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/create-jobpool/) * **Circuit Job Pool**: [here](https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/create-jobpool/) * **AppSail Job Pool**: [here](https://docs.catalyst.zoho.com/en/job-scheduling/help/implementation/create-jobpool/) 6. Select the [Job Function](https://docs.catalyst.zoho.com/en/serverless/help/functions/job-functions/) you wish to trigger from the **Target Function** drop-down. ![catalyst_job_scheduling_jobs_submit_target_func](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_submit_target_func.webp) > **Note:** * If you have [initialized](https://docs.catalyst.zoho.com/en/cli/v1/initialize-resources/initialize-functions/) and coded a *Job Function* from the CLI, ensure you [deploy it to the Catalyst console](https://docs.catalyst.zoho.com/en/cli/v1/deploy-resources/deploy-options/#--only-lttargetsgt) for the function to be listed in the drop-down. * If you have not created a *Job Function*, click **Create New**. You will be directed to the Catalyst Serverless section of the console. You can find steps to create a *Job Function* from this [section](https://docs.catalyst.zoho.com/en/serverless/help/functions/implementation/#create-a-function). 7. You can also enable the toggle present in the pop up to pass **Query Parameters** to your *Job Function* when the job triggers the function. ![catalyst_job_scheduling_jobs_query_params](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_query_params.webp) > **Note:** *Query Parameters* are custom parameters that you can pass to your job function. They are passed in a **User-Defined format**, and you customize the parameter value and include any terms that you require to be passed in the parameter. 8. You can click the **Show Advanced Options** to provide resubmission instructions. ![catalyst_job_scheduling_jobs_options_start](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_options_start.webp) 9. You can choose the number of retries you wish to attempt from the **No. of Retries** drop-down, and you can choose the time interval between each retry attempt using the **Retry Interval** drop-down. ![catalyst_job_scheduling_jobs_retry_attempts](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_retry_attempts.webp) > **Note:** The retries will only be attempted if the initial submission of the job ended in Failure status. You can choose to attempt a maximum of **10 retries** with a minimum retry interval of **1 minute** and a maximum retry interval of **24Hrs**. 10. Confirm your configurations and click **Create**. ![catalyst_job_scheduling_jobs_check_confirm](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_check_confirm.webp) Once you click **Create**, the job will be immediately submitted to the job pool for execution. This makes the *Builder* option a great tool to test your job pool's performance. **Using the SDK** ### Create Job Using SDK 3. Click the **SDK** tab. ![catalyst_job_scheduling_jobs_sdk_create_sub](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_sdk_create_sub.webp) 4. Based on your **target type** requirement, choose the relevant SDK from the drop-down. ![catalyst_job_scheduling_jobs_sdk_choose_target_drop_down](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_sdk_choose_target_drop_down.webp) **Function** ### Function Target Type ![catalyst_job_scheduling_jobs_sdk_create_sub](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_sdk_create_sub.webp) 5. Select the required runtime, and click the copy button to copy the code snippet. ![catalyst_job_scheduling_jobs_runtime_nav_copy](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_runtime_nav_copy.webp) **Java** **Submit Job** ```java // FUNCTION JOB // get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); ZCJobpool jobpool = jobScheduling.jobpoolInstance("test"); // create a job pool instance for the function job pool named test // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // submit function job ZCJobDetails functionJob = jobpool.submitJob(jobMeta); ``` **Node.js** **Submit Job** ```javascript // FUNCTION JOB const jobScheduling = app.jobScheduling(); // create job scheduling instance const jobpool = jobScheduling.jobpool({ name: 'test' }); // create job pool instance for the function job pool named test // create function job const functionJob = await jobpool.submitJob({ job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + '' // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); ``` **Python** **Submit Job** ```python # FUNCTION JOB job_scheduling = app.job_scheduling() # create job scheduling instance jobpool = job_scheduling.jobpool(jobpool_name="test") # create jobpool instance for the function jobpool named test # create function job function_job = jobpool.submit_job({ 'job_name': 'test_job', # set a name for the job 'target_type': 'Function', # set the target type as Function for function jobs 'target_name': 'target_function', # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) 'params': { 'arg1': 'test', 'arg2': 'job' }, # set params to be passed to target function (optional) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) }) ``` **Circuit** ### Circuit Target Type ![catalyst_job_scheduling_jobs_circuit_jobs_sub](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_circuit_jobs_sub.webp) 5. Select the required runtime, and click the copy button to copy the code snippet. ![catalyst_job_scheduling_jobs_run_time_nav_circuits](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_run_time_nav_circuits.webp) **Java** **Submit Job** ```java // CIRCUIT JOB // get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance("test"); // create a job pool instance for the circuit job pool named test // generate circuit job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_circuit") // set target circuits's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target circuits's Id (optional) (either TargetName or TargetId is mandatory) .setCircuitInput(new JSONObject() { { put("key1", "value1"); put("key2", "value2"); } }) // set the test cases for the circuit .setJobName("test_job") // set job name .build(); // build circuit job meta // submit circuit job ZCJobDetails circuitJob = jobpool.submitJob(jobMeta); ``` **Node.js** **Submit Job** ```javascript // CIRCUIT JOB const jobScheduling = app.jobScheduling(); // create job scheduling instance const jobpool = jobScheduling.jobpool({ name: 'test' }); // create job pool instance for the circuit job pool named test // create circuit job const circuitJob = await jobpool.submitJob({ job_name: 'test_job', // set a name for the job target_type: 'Circuit', // set the target type as Circuit for circuit jobs target_name: 'target_circuit', // set the target circuit's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target circuit's Id (optional) (either target_id or target_name is mandatory) test_cases: { arg1: "job", arg2: "test" }, // set the circuit test cases job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + '' // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); ``` **Python** **Submit Job** ```python # CIRCUIT JOB job_scheduling = app.job_scheduling() # create job scheduling instance jobpool = job_scheduling.jobpool(jobpool_name="test") # create jobpool instance for the circuit jobpool named test # create circuit job circuit_job = jobpool.submit_job({ 'job_name': 'test_job', # set a name for the job 'target_type': 'Circuit', # set the target type as Circuit for circuit jobs 'target_name': 'target_circuit', # set the target circuit's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target circuit's Id (optional) (either target_id or target_name is mandatory) 'test_cases': { 'arg1': 'job', 'arg2': 'test' }, # set the circuit test cases 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) }) ``` **Webhook** ### Webhook Target Type ![catalyst_job_scheduling_jobs_webhook_code](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_webhook_code.webp) 5. Select the required runtime, and click the copy button to copy the code snippet. ![catalyst_job_scheduling_jobs_webhook_runtime_nav](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_webhook_runtime_nav.webp) **Java** **Submit Job** ```java // WEB HOOK JOB // get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance("test"); // create a job pool instance for the webhook job pool named test // generate webhook job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create webhook job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setRequestMethod("POST") // set webhook request's method .setUrl("https://catalyst.zoho.com") // set webhook request's url .setParams(new JSONObject() { { put("arg1", "test"); put("arg2", "job"); } }) // set the webhook request's query params (optional) .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the webhook request's headers (optional) .setRequestBody("test_request") // set the webhook request's body (optional) .setJobName("test_job") // set job name .build(); // build webhook job meta // submit webhook job ZCJobDetails webHookJob = jobpool.submitJob(jobMeta); ``` **Node.js** **Submit Job** ```javascript // WEBHOOK JOB const jobScheduling = app.jobScheduling(); // create job scheduling instance const jobpool = jobScheduling.jobpool({ name: 'test' }); // create job pool instance for the webhook job pool named test // create webhook job const webhookJob = await jobpool.submitJob({ job_name: 'test_job', // set a name for the job target_type: 'Webhook', // set the target type as Webhook for webhook jobs request_method: 'POST', // set the webhook request's method url: 'https://catalyst.zoho.com', // set the webhook request's url params: { arg1: 'test', arg2: 'job' }, // set the webhook request's query params (optional) headers: { IS_TEST_REQUEST: 'true' }, // set the webhook request's headers (optional) request_body: 'test_request', // set the webhook request's body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + '' // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); ``` **Python** **Submit Job** ```python # WEBHOOK JOB job_scheduling = app.job_scheduling() # create job scheduling instance jobpool = job_scheduling.jobpool(jobpool_name="test") # create jobpool instance for the webhook jobpool named test # create webhook job webhook_job = jobpool.submit_job({ 'job_name': 'test_job', # set a name for the job 'target_type': 'Webhook', # set the target type as Webhook for webhook jobs 'request_method': 'POST', # set the webhook request's method 'url': 'https://catalyst.zoho.com', # set the webhook request's url 'params': { 'arg1': 'test', 'arg2': 'job' }, # set the webhook request's query params (optional) 'headers': { 'IS_TEST_REQUEST': 'true' }, # set the webhook request's headers (optional) 'request_body': 'test_request', # set the webhook request's body (optional) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) }) ``` **AppSail** ### AppSail Target Type ![catalyst_job_scheduling_jobs_appsail_code](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_appsail_code.webp) 5. Select the required runtime, and click the copy button to copy the code snippet. ![catalyst_job_scheduling_jobs_appsail_runtime_nav](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_appsail_runtime_nav.webp) **Java** **Submit Job** ```java // APPSAIL JOB // get job scheduling instance ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // create a job pool instance ZCJobpool jobpool = jobScheduling.jobpoolInstance("test"); // create a job pool instance for the appsail job pool named test // generate appsail job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder .setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("test_appsail") // set appsail name .setRequestMethod("POST") // set appsail request method .setUrl("/test") // set appsail request url .setParams(new JSONObject() { { put("arg1", "value1"); put("arg2", "value2"); } }) // set appsail request query params .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the appsail request's headers (optional) .setRequestBody("test_request") // set the appsail request's body (optional) .setJobName("test_job") // set job name .build(); // build appsail job meta // submit appsail job ZCJobDetails appSailJob = jobpool.submitJob(jobMeta); ``` **Node.js** **Submit Job** ```javascript // APPSAIL JOB const jobScheduling = app.jobScheduling(); // create job scheduling instance const jobpool = jobScheduling.jobpool({ name: 'test' }); // create job pool instance for the appsail job pool named test // create appsail job const appsailJob = await jobpool.submitJob({ job_name: 'test_job', // set a name for the job target_type: 'AppSail', // set the target type as AppSail for appsail jobs target_name: 'target_appsail', // set the target appsail's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target appsail's Id (optional) (either target_id or target_name is mandatory) request_method: 'POST', // set the appsail request's method url: '/test', // set the appsail's url path (optional) params: { arg1: 'test', arg2: 'job' }, // set the appsail request's query params (optional) headers: { IS_TEST_REQUEST: 'true' }, // set the appsail request's headers (optional) request_body: 'test_request', // set the appsail request's body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 * 1000 + '' // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); ``` **Python** **Submit Job** ```python # APPSAIL JOB job_scheduling = app.job_scheduling() # create job scheduling instance jobpool = job_scheduling.jobpool(jobpool_name="test") # create jobpool instance for the appsail jobpool named test # create appsail job appsail_job = jobpool.submit_job({ 'job_name': 'test_job', # set a name for the job 'target_type': 'AppSail', # set the target type as AppSail for appsail jobs 'target_name': 'target_appsail', # set the target appsail's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target appsail's Id (optional) (either target_id or target_name is mandatory) 'request_method': 'POST', # set the appsail request's method 'url': '/test', # set the appsail's url path (optional) 'params': { 'arg1': 'test', 'arg2': 'job' }, # set the appsail request's query params (optional) 'headers': { 'IS_TEST_REQUEST': 'true' }, # set the appsail request's headers (optional) 'request_body': 'test_request', # set the appsail request's body (optional) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 * 1000 # set the retry interval } # set job config - job retries => 2 retries in 15 mins (optional) }) ``` 6. Paste the snippet in your code file and engineer your logic. The job that you create for your project will always be available in the **Job** component section. Once the job is submitted, you will be able to view all the general details of the submitted job in the *Job Definition* section. You will also be able to view the status of the job execution in the *Job Execution & Status* section. ![catalyst_job_scheduling_jobs_submit_job](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_jobs_submit_job.webp) The execution status of the job will also be labeled at the top next to the Job Name. You will also be provided with the *Job Definition* in a JSON code format that you can copy and use to submit a new job with the same specifications. You can also visit the logs of the execution generated in [DevOps's Logs](https://docs.catalyst.zoho.com/en/devops/help/logs/introduction/) component by clicking the **View Logs** button.