Task Spec
A Task Specification (Task Spec) is a declarative template that defines the structure and requirements for the outputs of a web research operation. While optional in each Task Run, Task Specs provide significant advantages when you need precise control over your research data. Task Specs ensure consistent results by enforcing a specific output structure across multiple runs. They validate schema against expected formats and create reusable templates for common research patterns. By defining the expected outputs clearly, they also serve as self-documentation for your tasks, making them easier to understand and maintain.Component | Required | Purpose | Format |
---|---|---|---|
Output Schema | Yes | Defines the structure and fields of the task result | JSON Schema or Text |
Input Schema | No | Specifies expected input parameters and their formats | JSON Schema or Text |
Task Spec Structure
A Task Spec consists of:Field | Type | Required | Description |
---|---|---|---|
output | Schema object or string | Yes | Description and structure of the desired output |
input | Schema object or string | No | Description and structure of input parameters |
When providing a bare string for input or output, it’s equivalent to a text schema with that string as the description.
Schema Types
Task Spec supports three schema formats: When using the Python SDK, the Parallel Task API also supports Pydantic objects in Task Spec
auto
mode enables Deep Research style outputs only in processors pro
and above. Read more about Deep Research here. Task Spec Best Practices
Define what entity you’re researching (input) and what specific data points you need back (output). Keep both as flat-structured as possible. Our system handles complexity and instructions in thedescription
fields for inputs and outputs. Adjusting description
fields is akin to ‘prompt engineering’ for the Task Spec.
1
Identify what schema your use case requires
- If executing a Deep Research style Task, use the Task Spec with
auto
schema - If control and specificity with regards to outputs are required, use Task Spec with a JSONSchema for inputs and outputs
- In other cases, the Task Spec may not be necessary; the system in this case will output a plain text response
2
Define effective inputs
- When using only text based inputs, be as specific as possible about what you are expecting the system to return. Include any instructions and preferences in the input text.
- When using JSON Schema inputs, use the minimum fields required to uniquely identify the entity you want to enrich. For example, include both the company_name and company_website, or both the person_name and social_url, to help the system disambiguate.
- Avoid deeply nested structures and keep the input schema flat
3
Define effective outputs (relevant when using JSONSchema outputs)
- Include all instructions and preferences under field-level
description
where possible - Write effective
description
fields by using this format: Entity (what are you researching), Action (what do you want to find), Specifics (constraints, time periods, formatting requirements), and Error Handling (eg. if unavailable, return “Not Available”). - Use clear, descriptive field names
- Use
ceo_name
instead ofname
- Use
headquarters_address
** instead ofaddress
- Use
annual_revenue_2024
** instead ofrevenue
- Use
- Specify Data Formats
- Always specify format for dates:
YYYY-MM-DD
- Use ranges for numerical values with units:
revenue_in_millions
,employee_count
- Specify quantities for lists:
top_5_products
,recent_3_acquisitions
- Always specify format for dates:
- Unnecessary Fields: Don’t include fields like
reasoning
orconfidence_score
as these are already included in the basis
4
Additional instructions
If there are additional requirements or instructions separate from individual fields, the top-level
description
field is available. For example:Output Schema Validation Rules
The Task API enforces several restrictions on output schemas to ensure compatibility and performance:Schema Structure Rules
Rule | Type | Description |
---|---|---|
Root type must be object | error | The root schema must have "type": "object" |
Root must have properties | error | The root object must have a properties field |
Root cannot use anyOf | error | The root level cannot use anyOf |
Standalone null type | error | null type is only allowed in union types or anyOf |
All fields must be required | warning | All properties should be listed in the required array |
additionalProperties must be false | warning | All object types should set additionalProperties: false |
While all fields must be required in the schema, you can create optional parameters by using a union type with
null
. For example, "type": ["string", "null"]
allows a field to be either a string or null, effectively making it optional while maintaining schema compliance.Size and Complexity Limits
Rule | Type | Limit | Description |
---|---|---|---|
Nesting depth | error | 5 levels | Maximum nesting depth of objects and arrays |
Total properties | error | 100 | Maximum total number of properties across all levels |
Total string length | error | 15,000 chars | Maximum total string length for names and values |
Enum values | error | 500 | Maximum number of enum values across all properties |
Large enum string length | error | 7,500 chars | Maximum string length for enums with >250 values |
Task spec size | error | 10,000 chars | Maximum length of the task specification |
Total size | error | 15,000 chars | Maximum combined length of task specification and input data |
Unsupported Keywords
The following JSON Schema keywords are not supported in output schemas:contains
, format
, maxContains
, maxItems
, maxLength
, maxProperties
, maximum
, minContains
, minItems
, minLength
, minimum
, minProperties
, multipleOf
, pattern
, patternProperties
, propertyNames
, uniqueItems
, unevaluatedItems
, unevaluatedProperties
irements: it has an object root type with properties, all fields are required, and additionalProperties
is set to false.