> For the complete documentation index, see [llms.txt](https://docs.pending.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pending.ai/api-reference/pai-retro/synthesis-jobs.md).

# Synthesis Jobs

Submit target molecules for retrosynthesis and explore novel synthetic routes

For low-throughput screening or synthetic route exploration, a **Retrosynthesis** *job* can be submitted for a single `query` target molecule. The molecule, represented in [SMILES](http://opensmiles.org/opensmiles.html) format, is provided alongside a set of guiding `parameters` impacting route diversity and results.

* **Fast synthetic accessibility** can be assessed by reducing the time requirement for planning to `processing_time=60` and yield only a single route `number_of_routes=1`. - **Novel route exploration** can be achieved by increasing the time and resource allocation, allowing for multiple routes to be generated and evaluated. Additionally, decreasing `building_block_limit` and `reaction_limit` forces the engine to consider more diverse reaction pathways, potentially leading to more novel synthetic routes. Each job requires specifying a `retrosynthesis_engine` and `building_block_libraries` list corresponding to respective resource `id` fields of the engine and libraries. Our unique representation of synthetic routes provides a detailed reaction tree overview. See our [examples](https://docs.pending.ai/libraries/guides) for handling results for detailed analysis. See [here](https://docs.pending.ai/capabilities/synthetic-accessibility) for more information on our **Retrosynthesis** capability.

## Retrieve a Job

> Retrieve a Job resource by its ID\`. Synthesis routes are returned along\
> with additional job metadata to indicate the status of the job which is\
> updated and can be used for polling until results become available.

```json
{"openapi":"3.1.0","info":{"title":"Pending AI Retrosynthesis API","version":"0.0.0"},"tags":[{"name":"Jobs","description":"For low-throughput screening or synthetic route exploration, a **Retrosynthesis** *job* can be submitted for a single `query` target molecule. The molecule, represented in [SMILES](http://opensmiles.org/opensmiles.html) format, is provided alongside a set of guiding `parameters` impacting route diversity and results.\n- **Fast synthetic accessibility** can be assessed by reducing the time requirement for planning to `processing_time=60` and yield only a single route `number_of_routes=1`. - **Novel route exploration** can be achieved by increasing the time and resource allocation, allowing for multiple routes to be generated and evaluated. Additionally, decreasing `building_block_limit` and `reaction_limit` forces the engine to consider more diverse reaction pathways, potentially leading to more novel synthetic routes.\nEach job requires specifying a `retrosynthesis_engine` and `building_block_libraries` list corresponding to respective resource `id` fields of the engine and libraries. Our unique representation of synthetic routes provides a detailed reaction tree overview. See our [examples](https://docs.pending.ai/libraries/guides) for handling results for detailed analysis.\nSee [here](https://docs.pending.ai/capabilities/synthetic-accessibility) for more information on our **Retrosynthesis** capability."}],"servers":[{"url":"https://api.pending.ai/retro/v2","description":"Pending AI API Server"}],"security":[{"oauth":[]},{"token":[]}],"components":{"securitySchemes":{"oauth":{"type":"oauth2","description":"Pending AI OAuth2 authentication.","flows":{"authorizationCode":{"refreshUrl":"https://auth.pending.ai/oauth/token","scopes":{"openid":"Required for OpenID Connect sign-in","profile":"Access to the user's basic profile information","email":"Access to the user's email address","offline_access":"Request a refresh token"},"authorizationUrl":"https://auth.pending.ai/authorize","tokenUrl":"https://auth.pending.ai/oauth/token"}}},"token":{"type":"http","description":"Pending AI authentication access token.","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RequestValidationErrorContent":{"description":"A request or response encountered a validation error when enforcing field constraints. Refer to `error.details` to resolve individual errors. For any unexpected validation errors, contact Pending AI support via email at [support@pending.ai](mailto:support@pending.ai).","properties":{"status":{"default":"error","description":"Status of the request.","enum":["error","success"],"title":"Request Status","type":"string"},"status_code":{"description":"Response status code received for the request.","title":"Status Code","type":"integer"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A unique ID given to each request.","title":"Request ID"},"error":{"anyOf":[{"$ref":"#/components/schemas/RequestValidationErrorInfo"},{"type":"null"}],"default":null,"description":"Response content containing extra information for an error.","title":"Error Information"}},"required":["status_code"],"title":"Request Validation Error","type":"object"},"RequestValidationErrorInfo":{"description":"Response content containing extra information for an error.","properties":{"code":{"description":"Short identifier code to classify the error.","title":"Code","type":"string"},"timestamp":{"description":"Timestamp of when the error occurred.","format":"date-time","title":"Timestamp","type":"string"},"path":{"description":"Request path for where the error occurred.","title":"Request Path","type":"string"},"message":{"default":null,"description":"Message associated with the encountered error.","title":"Message"},"details":{"anyOf":[{"items":{"$ref":"#/components/schemas/RequestValidationErrorInfoDetails"},"type":"array"},{"type":"null"}],"default":null,"description":"Validation errors with extra information.","title":"Detailed Message"}},"required":["code","path"],"title":"Error Information","type":"object"},"RequestValidationErrorInfoDetails":{"description":"An individual validation error with extra information.","properties":{"location":{"default":null,"description":"One or more parameters for where the validation failed.","title":"Validation Location"},"error_type":{"default":null,"description":"A description of the validation constraint that was broken.","title":"Constraint Type"}},"title":"Detailed Error Content","type":"object"}}},"paths":{"/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Retrieve a Job","description":"Retrieve a Job resource by its ID`. Synthesis routes are returned along\nwith additional job metadata to indicate the status of the job which is\nupdated and can be used for polling until results become available.","operationId":"retrieve_job_jobs__job_id__get","parameters":[{"description":"Unique identifier for a `Job` object. The IDs\n        for objects are used to perform different operations.","required":true,"schema":{"type":"string","maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","title":"Job Id","description":"Unique identifier for a `Job` object. The IDs\n        for objects are used to perform different operations."},"name":"job_id","in":"path"},{"description":"Providing a value for the header will request\n        that the response be converted into the specified format. If\n        omitted, the response will be in the default JSON format. Most\n        client libraries can automatically handle various compression\n        communication formats.","required":false,"schema":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Accept-Encoding","description":"Providing a value for the header will request\n        that the response be converted into the specified format. If\n        omitted, the response will be in the default JSON format. Most\n        client libraries can automatically handle various compression\n        communication formats."},"name":"accept-encoding","in":"header"}],"responses":{"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestValidationErrorContent"}}}}}}}}}
```

## Delete a Job

> Delete a Job resource and any generated synthetic routes. The job will no\
> longer be processed if it is still queued and any results will be removed\
> if they exist. Results are no longer accessible after deletion.

```json
{"openapi":"3.1.0","info":{"title":"Pending AI Retrosynthesis API","version":"0.0.0"},"tags":[{"name":"Jobs","description":"For low-throughput screening or synthetic route exploration, a **Retrosynthesis** *job* can be submitted for a single `query` target molecule. The molecule, represented in [SMILES](http://opensmiles.org/opensmiles.html) format, is provided alongside a set of guiding `parameters` impacting route diversity and results.\n- **Fast synthetic accessibility** can be assessed by reducing the time requirement for planning to `processing_time=60` and yield only a single route `number_of_routes=1`. - **Novel route exploration** can be achieved by increasing the time and resource allocation, allowing for multiple routes to be generated and evaluated. Additionally, decreasing `building_block_limit` and `reaction_limit` forces the engine to consider more diverse reaction pathways, potentially leading to more novel synthetic routes.\nEach job requires specifying a `retrosynthesis_engine` and `building_block_libraries` list corresponding to respective resource `id` fields of the engine and libraries. Our unique representation of synthetic routes provides a detailed reaction tree overview. See our [examples](https://docs.pending.ai/libraries/guides) for handling results for detailed analysis.\nSee [here](https://docs.pending.ai/capabilities/synthetic-accessibility) for more information on our **Retrosynthesis** capability."}],"servers":[{"url":"https://api.pending.ai/retro/v2","description":"Pending AI API Server"}],"security":[{"oauth":[]},{"token":[]}],"components":{"securitySchemes":{"oauth":{"type":"oauth2","description":"Pending AI OAuth2 authentication.","flows":{"authorizationCode":{"refreshUrl":"https://auth.pending.ai/oauth/token","scopes":{"openid":"Required for OpenID Connect sign-in","profile":"Access to the user's basic profile information","email":"Access to the user's email address","offline_access":"Request a refresh token"},"authorizationUrl":"https://auth.pending.ai/authorize","tokenUrl":"https://auth.pending.ai/oauth/token"}}},"token":{"type":"http","description":"Pending AI authentication access token.","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RequestValidationErrorContent":{"description":"A request or response encountered a validation error when enforcing field constraints. Refer to `error.details` to resolve individual errors. For any unexpected validation errors, contact Pending AI support via email at [support@pending.ai](mailto:support@pending.ai).","properties":{"status":{"default":"error","description":"Status of the request.","enum":["error","success"],"title":"Request Status","type":"string"},"status_code":{"description":"Response status code received for the request.","title":"Status Code","type":"integer"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A unique ID given to each request.","title":"Request ID"},"error":{"anyOf":[{"$ref":"#/components/schemas/RequestValidationErrorInfo"},{"type":"null"}],"default":null,"description":"Response content containing extra information for an error.","title":"Error Information"}},"required":["status_code"],"title":"Request Validation Error","type":"object"},"RequestValidationErrorInfo":{"description":"Response content containing extra information for an error.","properties":{"code":{"description":"Short identifier code to classify the error.","title":"Code","type":"string"},"timestamp":{"description":"Timestamp of when the error occurred.","format":"date-time","title":"Timestamp","type":"string"},"path":{"description":"Request path for where the error occurred.","title":"Request Path","type":"string"},"message":{"default":null,"description":"Message associated with the encountered error.","title":"Message"},"details":{"anyOf":[{"items":{"$ref":"#/components/schemas/RequestValidationErrorInfoDetails"},"type":"array"},{"type":"null"}],"default":null,"description":"Validation errors with extra information.","title":"Detailed Message"}},"required":["code","path"],"title":"Error Information","type":"object"},"RequestValidationErrorInfoDetails":{"description":"An individual validation error with extra information.","properties":{"location":{"default":null,"description":"One or more parameters for where the validation failed.","title":"Validation Location"},"error_type":{"default":null,"description":"A description of the validation constraint that was broken.","title":"Constraint Type"}},"title":"Detailed Error Content","type":"object"}}},"paths":{"/jobs/{job_id}":{"delete":{"tags":["Jobs"],"summary":"Delete a Job","description":"Delete a Job resource and any generated synthetic routes. The job will no\nlonger be processed if it is still queued and any results will be removed\nif they exist. Results are no longer accessible after deletion.","operationId":"delete_job_jobs__job_id__delete","parameters":[{"description":"Unique identifier for a `Job` object. The IDs\n        for objects are used to perform different operations.","required":true,"schema":{"type":"string","maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","title":"Job Id","description":"Unique identifier for a `Job` object. The IDs\n        for objects are used to perform different operations."},"name":"job_id","in":"path"}],"responses":{"402":{"description":"Payment gateway operation failed","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"409":{"description":"Job is in progress","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestValidationErrorContent"}}}}}}}}}
```

## List Jobs

> Retrieve a list of Job resources using either cursor-based pagination.\
> See the returned \`data\` field for more information about the Job\
> resources. Use additional \`metadata\` and \`links\` fields to navigate\
> the paginated resources.

```json
{"openapi":"3.1.0","info":{"title":"Pending AI Retrosynthesis API","version":"0.0.0"},"tags":[{"name":"Jobs","description":"For low-throughput screening or synthetic route exploration, a **Retrosynthesis** *job* can be submitted for a single `query` target molecule. The molecule, represented in [SMILES](http://opensmiles.org/opensmiles.html) format, is provided alongside a set of guiding `parameters` impacting route diversity and results.\n- **Fast synthetic accessibility** can be assessed by reducing the time requirement for planning to `processing_time=60` and yield only a single route `number_of_routes=1`. - **Novel route exploration** can be achieved by increasing the time and resource allocation, allowing for multiple routes to be generated and evaluated. Additionally, decreasing `building_block_limit` and `reaction_limit` forces the engine to consider more diverse reaction pathways, potentially leading to more novel synthetic routes.\nEach job requires specifying a `retrosynthesis_engine` and `building_block_libraries` list corresponding to respective resource `id` fields of the engine and libraries. Our unique representation of synthetic routes provides a detailed reaction tree overview. See our [examples](https://docs.pending.ai/libraries/guides) for handling results for detailed analysis.\nSee [here](https://docs.pending.ai/capabilities/synthetic-accessibility) for more information on our **Retrosynthesis** capability."}],"servers":[{"url":"https://api.pending.ai/retro/v2","description":"Pending AI API Server"}],"security":[{"oauth":[]},{"token":[]}],"components":{"securitySchemes":{"oauth":{"type":"oauth2","description":"Pending AI OAuth2 authentication.","flows":{"authorizationCode":{"refreshUrl":"https://auth.pending.ai/oauth/token","scopes":{"openid":"Required for OpenID Connect sign-in","profile":"Access to the user's basic profile information","email":"Access to the user's email address","offline_access":"Request a refresh token"},"authorizationUrl":"https://auth.pending.ai/authorize","tokenUrl":"https://auth.pending.ai/oauth/token"}}},"token":{"type":"http","description":"Pending AI authentication access token.","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RequestValidationErrorContent":{"description":"A request or response encountered a validation error when enforcing field constraints. Refer to `error.details` to resolve individual errors. For any unexpected validation errors, contact Pending AI support via email at [support@pending.ai](mailto:support@pending.ai).","properties":{"status":{"default":"error","description":"Status of the request.","enum":["error","success"],"title":"Request Status","type":"string"},"status_code":{"description":"Response status code received for the request.","title":"Status Code","type":"integer"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A unique ID given to each request.","title":"Request ID"},"error":{"anyOf":[{"$ref":"#/components/schemas/RequestValidationErrorInfo"},{"type":"null"}],"default":null,"description":"Response content containing extra information for an error.","title":"Error Information"}},"required":["status_code"],"title":"Request Validation Error","type":"object"},"RequestValidationErrorInfo":{"description":"Response content containing extra information for an error.","properties":{"code":{"description":"Short identifier code to classify the error.","title":"Code","type":"string"},"timestamp":{"description":"Timestamp of when the error occurred.","format":"date-time","title":"Timestamp","type":"string"},"path":{"description":"Request path for where the error occurred.","title":"Request Path","type":"string"},"message":{"default":null,"description":"Message associated with the encountered error.","title":"Message"},"details":{"anyOf":[{"items":{"$ref":"#/components/schemas/RequestValidationErrorInfoDetails"},"type":"array"},{"type":"null"}],"default":null,"description":"Validation errors with extra information.","title":"Detailed Message"}},"required":["code","path"],"title":"Error Information","type":"object"},"RequestValidationErrorInfoDetails":{"description":"An individual validation error with extra information.","properties":{"location":{"default":null,"description":"One or more parameters for where the validation failed.","title":"Validation Location"},"error_type":{"default":null,"description":"A description of the validation constraint that was broken.","title":"Constraint Type"}},"title":"Detailed Error Content","type":"object"}}},"paths":{"/jobs":{"get":{"tags":["Jobs"],"summary":"List Jobs","description":"Retrieve a list of Job resources using either cursor-based pagination.\nSee the returned `data` field for more information about the Job\nresources. Use additional `metadata` and `links` fields to navigate\nthe paginated resources.","operationId":"retrieve_job_list_jobs_get","parameters":[{"description":"\n            An *optional* cursor used to indicate the item after which\n            results should be returned. When provided, results that come\n            after the specified cursor are returned. Cannot be used\n            together with the `before` parameter.\n\n            Note that results are returned in descending order so the\n            `after` cursor returns older items that appear in pages that\n            are *after* the current page.\n            ","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After","description":"\n            An *optional* cursor used to indicate the item after which\n            results should be returned. When provided, results that come\n            after the specified cursor are returned. Cannot be used\n            together with the `before` parameter.\n\n            Note that results are returned in descending order so the\n            `after` cursor returns older items that appear in pages that\n            are *after* the current page.\n            "},"name":"after","in":"query"},{"description":"\n            An *optional* cursor used to indicate the item before which\n            results should be returned. When provided, results that come\n            before the specified cursor are returned. Cannot be used\n            together with the `after` parameter.\n\n            Note that results are returned in descending order so the\n            `before` cursor returns newer items that appear in pages\n            that are *before* the current page.\n            ","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before","description":"\n            An *optional* cursor used to indicate the item before which\n            results should be returned. When provided, results that come\n            before the specified cursor are returned. Cannot be used\n            together with the `after` parameter.\n\n            Note that results are returned in descending order so the\n            `before` cursor returns newer items that appear in pages\n            that are *before* the current page.\n            "},"name":"before","in":"query"},{"description":"\n                The **maximum** number of results to return for a single page\n                of items. The value can adversely affect offset-based pagination\n                when using the `page` parameter. Fewer results can be returned\n                than the value specified.\n                ","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"title":"Limit","description":"\n                The **maximum** number of results to return for a single page\n                of items. The value can adversely affect offset-based pagination\n                when using the `page` parameter. Fewer results can be returned\n                than the value specified.\n                ","default":25},"name":"limit","in":"query"},{"description":"Providing a value for the header will request\n        that the response be converted into the specified format. If\n        omitted, the response will be in the default JSON format. Most\n        client libraries can automatically handle various compression\n        communication formats.","required":false,"schema":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Accept-Encoding","description":"Providing a value for the header will request\n        that the response be converted into the specified format. If\n        omitted, the response will be in the default JSON format. Most\n        client libraries can automatically handle various compression\n        communication formats."},"name":"accept-encoding","in":"header"}],"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestValidationErrorContent"}}}}}}}}}
```

## Create a Job

> Create a new Job resource for a retrosynthesis query molecule. The job is\
> queued for processing and the response contains the initial job metadata.\
> The retrosynthesis process is performed asynchronously and the job status\
> can be polled using the job retrieval endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Pending AI Retrosynthesis API","version":"0.0.0"},"tags":[{"name":"Jobs","description":"For low-throughput screening or synthetic route exploration, a **Retrosynthesis** *job* can be submitted for a single `query` target molecule. The molecule, represented in [SMILES](http://opensmiles.org/opensmiles.html) format, is provided alongside a set of guiding `parameters` impacting route diversity and results.\n- **Fast synthetic accessibility** can be assessed by reducing the time requirement for planning to `processing_time=60` and yield only a single route `number_of_routes=1`. - **Novel route exploration** can be achieved by increasing the time and resource allocation, allowing for multiple routes to be generated and evaluated. Additionally, decreasing `building_block_limit` and `reaction_limit` forces the engine to consider more diverse reaction pathways, potentially leading to more novel synthetic routes.\nEach job requires specifying a `retrosynthesis_engine` and `building_block_libraries` list corresponding to respective resource `id` fields of the engine and libraries. Our unique representation of synthetic routes provides a detailed reaction tree overview. See our [examples](https://docs.pending.ai/libraries/guides) for handling results for detailed analysis.\nSee [here](https://docs.pending.ai/capabilities/synthetic-accessibility) for more information on our **Retrosynthesis** capability."}],"servers":[{"url":"https://api.pending.ai/retro/v2","description":"Pending AI API Server"}],"security":[{"oauth":[]},{"token":[]}],"components":{"securitySchemes":{"oauth":{"type":"oauth2","description":"Pending AI OAuth2 authentication.","flows":{"authorizationCode":{"refreshUrl":"https://auth.pending.ai/oauth/token","scopes":{"openid":"Required for OpenID Connect sign-in","profile":"Access to the user's basic profile information","email":"Access to the user's email address","offline_access":"Request a refresh token"},"authorizationUrl":"https://auth.pending.ai/authorize","tokenUrl":"https://auth.pending.ai/oauth/token"}}},"token":{"type":"http","description":"Pending AI authentication access token.","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CreateJob":{"properties":{"query":{"type":"string","maxLength":10000,"pattern":"^[A-Za-z0-9@\\.\\+\\-\\[\\]\\(\\)\\=:\\#\\%\\*\\$/\\\\]+$","title":"Query","description":"A SMILES molecule to perform retrosynthesis on."},"parameters":{"$ref":"#/components/schemas/CreateJobParameters","title":"Parameters"}},"type":"object","required":["query"],"title":"CreateJob","description":"Request data for creating a Job resource."},"CreateJobParameters":{"properties":{"retrosynthesis_engine":{"anyOf":[{"type":"string","maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","description":"An ID belonging to a selected retrosynthesis engine to execute\nthe synthesis planning procedure. The value can be omitted to\nuse a default engine."},{"type":"null"}],"title":"Retrosynthesis Engine"},"building_block_libraries":{"anyOf":[{"items":{"type":"string","maxLength":128,"pattern":"^[A-Za-z0-9_-]+$","description":"Unique identifier for a resource."},"type":"array","maxItems":100,"minItems":1,"description":"A list of IDs belonging to selected library resources used\nfor controlling synthetic route termination. The value can be\nomitted to use all libraries. At least one must be provided."},{"type":"null"}],"title":"Building Block Libraries"},"number_of_routes":{"type":"integer","maximum":50,"minimum":1,"title":"Number Of Routes","description":"The maximum number of routes to be generated during retrosynthesis\ncalculations. Found synthesis routes can be limited by the amount\nrequested, building block libraries, and other control parameters.","default":1},"processing_time":{"type":"integer","maximum":720,"minimum":60,"title":"Processing Time","description":"The maximum allowable processing time to complete retrosynthesis\nfor a target molecule. Calculations stop and exit once the time\nlimit is reached.","default":60},"reaction_limit":{"type":"integer","maximum":25,"minimum":1,"title":"Reaction Limit","description":"The maximum number of times a single reaction step SMILES can\nappear within computed synthesis routes.","default":10},"building_block_limit":{"type":"integer","maximum":25,"minimum":1,"title":"Building Block Limit","description":"The maximum number of times a single SMILES building block can\nappear within computed synthesis routes.","default":10}},"type":"object","title":"CreateJobParameters","description":"Retrosynthesis configuration parameters for creating a Job resource.\n\nThe `retrosynthesis_engine` and `building_block_libraries` fields are\noptional and can be omitted to use default values. If provided, they\nmust be valid resource IDs.\n\n- `retrosynthesis_engine`: An ID belonging to a selected retrosynthesis\nengine to execute the synthesis planning procedure. The value can be\nomitted to use a default engine.\n\n- `building_block_libraries`: A list of ID values belonging to selected\nlibrary resources used for controlling synthetic route termination. The\nvalue can be omitted to use all building block libraries."},"RequestValidationErrorContent":{"description":"A request or response encountered a validation error when enforcing field constraints. Refer to `error.details` to resolve individual errors. For any unexpected validation errors, contact Pending AI support via email at [support@pending.ai](mailto:support@pending.ai).","properties":{"status":{"default":"error","description":"Status of the request.","enum":["error","success"],"title":"Request Status","type":"string"},"status_code":{"description":"Response status code received for the request.","title":"Status Code","type":"integer"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A unique ID given to each request.","title":"Request ID"},"error":{"anyOf":[{"$ref":"#/components/schemas/RequestValidationErrorInfo"},{"type":"null"}],"default":null,"description":"Response content containing extra information for an error.","title":"Error Information"}},"required":["status_code"],"title":"Request Validation Error","type":"object"},"RequestValidationErrorInfo":{"description":"Response content containing extra information for an error.","properties":{"code":{"description":"Short identifier code to classify the error.","title":"Code","type":"string"},"timestamp":{"description":"Timestamp of when the error occurred.","format":"date-time","title":"Timestamp","type":"string"},"path":{"description":"Request path for where the error occurred.","title":"Request Path","type":"string"},"message":{"default":null,"description":"Message associated with the encountered error.","title":"Message"},"details":{"anyOf":[{"items":{"$ref":"#/components/schemas/RequestValidationErrorInfoDetails"},"type":"array"},{"type":"null"}],"default":null,"description":"Validation errors with extra information.","title":"Detailed Message"}},"required":["code","path"],"title":"Error Information","type":"object"},"RequestValidationErrorInfoDetails":{"description":"An individual validation error with extra information.","properties":{"location":{"default":null,"description":"One or more parameters for where the validation failed.","title":"Validation Location"},"error_type":{"default":null,"description":"A description of the validation constraint that was broken.","title":"Constraint Type"}},"title":"Detailed Error Content","type":"object"}}},"paths":{"/jobs":{"post":{"tags":["Jobs"],"summary":"Create a Job","description":"Create a new Job resource for a retrosynthesis query molecule. The job is\nqueued for processing and the response contains the initial job metadata.\nThe retrosynthesis process is performed asynchronously and the job status\ncan be polled using the job retrieval endpoint.","operationId":"create_job_jobs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJob"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"402":{"description":"Payment gateway operation failed","content":{"application/json":{"schema":{"type":"null","title":"Return"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestValidationErrorContent"}}}}}}}}}
```
