# Jobs ## Create Classify Job `client.classifier.jobs.create(JobCreateParamsparams, RequestOptionsoptions?): ClassifyJob` **post** `/api/v1/classifier/jobs` Create a classify job. Experimental: This endpoint is not yet ready for production use and is subject to change at any time. ### Parameters - `params: JobCreateParams` - `file_ids: Array` Body param: The IDs of the files to classify - `rules: Array` Body param: The rules to classify the files - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') - `organization_id?: string | null` Query param - `project_id?: string | null` Query param - `mode?: "FAST" | "MULTIMODAL"` Body param: The classification mode to use - `"FAST"` - `"MULTIMODAL"` - `parsing_configuration?: ClassifyParsingConfiguration` Body param: The configuration for the parsing job - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) - `webhook_configurations?: Array` Body param: List of webhook configurations for notifications - `webhook_events?: Array | null` Events that trigger this webhook. Options: 'parse.success' (job completed), 'parse.failure' (job failed), 'parse.partial' (some pages failed). If not specified, webhook fires for all events - `webhook_headers?: Record | null` Custom HTTP headers to include in webhook requests. Use for authentication tokens or custom routing. Example: {'Authorization': 'Bearer xyz'} - `webhook_url?: string | null` HTTPS URL to receive webhook POST requests. Must be publicly accessible ### Returns - `ClassifyJob` A classify job. - `id: string` Unique identifier - `project_id: string` The ID of the project - `rules: Array` The rules to classify the files - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') - `status: StatusEnum` The status of the classify job - `"PENDING"` - `"SUCCESS"` - `"ERROR"` - `"PARTIAL_SUCCESS"` - `"CANCELLED"` - `user_id: string` The ID of the user - `created_at?: string | null` Creation datetime - `effective_at?: string` - `error_message?: string | null` Error message for the latest job attempt, if any. - `job_record_id?: string | null` The job record ID associated with this status, if any. - `mode?: "FAST" | "MULTIMODAL"` The classification mode to use - `"FAST"` - `"MULTIMODAL"` - `parsing_configuration?: ClassifyParsingConfiguration` The configuration for the parsing job - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) - `updated_at?: string | null` Update datetime ### Example ```typescript import LlamaCloud from '@llamaindex/llama-cloud'; const client = new LlamaCloud({ apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted }); const classifyJob = await client.classifier.jobs.create({ file_ids: ['182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'], rules: [ { description: 'contains invoice number, line items, and total amount', type: 'invoice' }, ], }); console.log(classifyJob.id); ``` #### Response ```json { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "project_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "rules": [ { "description": "contains invoice number, line items, and total amount", "type": "invoice" } ], "status": "PENDING", "user_id": "user_id", "created_at": "2019-12-27T18:11:19.117Z", "effective_at": "2019-12-27T18:11:19.117Z", "error_message": "error_message", "job_record_id": "job_record_id", "mode": "FAST", "parsing_configuration": { "lang": "af", "max_pages": 0, "target_pages": [ 0 ] }, "updated_at": "2019-12-27T18:11:19.117Z" } ``` ## List Classify Jobs `client.classifier.jobs.list(JobListParamsquery?, RequestOptionsoptions?): PaginatedCursor` **get** `/api/v1/classifier/jobs` List classify jobs. Experimental: This endpoint is not yet ready for production use and is subject to change at any time. ### Parameters - `query: JobListParams` - `organization_id?: string | null` - `page_size?: number | null` - `page_token?: string | null` - `project_id?: string | null` ### Returns - `ClassifyJob` A classify job. - `id: string` Unique identifier - `project_id: string` The ID of the project - `rules: Array` The rules to classify the files - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') - `status: StatusEnum` The status of the classify job - `"PENDING"` - `"SUCCESS"` - `"ERROR"` - `"PARTIAL_SUCCESS"` - `"CANCELLED"` - `user_id: string` The ID of the user - `created_at?: string | null` Creation datetime - `effective_at?: string` - `error_message?: string | null` Error message for the latest job attempt, if any. - `job_record_id?: string | null` The job record ID associated with this status, if any. - `mode?: "FAST" | "MULTIMODAL"` The classification mode to use - `"FAST"` - `"MULTIMODAL"` - `parsing_configuration?: ClassifyParsingConfiguration` The configuration for the parsing job - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) - `updated_at?: string | null` Update datetime ### Example ```typescript import LlamaCloud from '@llamaindex/llama-cloud'; const client = new LlamaCloud({ apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const classifyJob of client.classifier.jobs.list()) { console.log(classifyJob.id); } ``` #### Response ```json { "items": [ { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "project_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "rules": [ { "description": "contains invoice number, line items, and total amount", "type": "invoice" } ], "status": "PENDING", "user_id": "user_id", "created_at": "2019-12-27T18:11:19.117Z", "effective_at": "2019-12-27T18:11:19.117Z", "error_message": "error_message", "job_record_id": "job_record_id", "mode": "FAST", "parsing_configuration": { "lang": "af", "max_pages": 0, "target_pages": [ 0 ] }, "updated_at": "2019-12-27T18:11:19.117Z" } ], "next_page_token": "next_page_token", "total_size": 0 } ``` ## Get Classify Job `client.classifier.jobs.get(stringclassifyJobID, JobGetParamsquery?, RequestOptionsoptions?): ClassifyJob` **get** `/api/v1/classifier/jobs/{classify_job_id}` Get a classify job. Experimental: This endpoint is not yet ready for production use and is subject to change at any time. ### Parameters - `classifyJobID: string` - `query: JobGetParams` - `organization_id?: string | null` - `project_id?: string | null` ### Returns - `ClassifyJob` A classify job. - `id: string` Unique identifier - `project_id: string` The ID of the project - `rules: Array` The rules to classify the files - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') - `status: StatusEnum` The status of the classify job - `"PENDING"` - `"SUCCESS"` - `"ERROR"` - `"PARTIAL_SUCCESS"` - `"CANCELLED"` - `user_id: string` The ID of the user - `created_at?: string | null` Creation datetime - `effective_at?: string` - `error_message?: string | null` Error message for the latest job attempt, if any. - `job_record_id?: string | null` The job record ID associated with this status, if any. - `mode?: "FAST" | "MULTIMODAL"` The classification mode to use - `"FAST"` - `"MULTIMODAL"` - `parsing_configuration?: ClassifyParsingConfiguration` The configuration for the parsing job - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) - `updated_at?: string | null` Update datetime ### Example ```typescript import LlamaCloud from '@llamaindex/llama-cloud'; const client = new LlamaCloud({ apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted }); const classifyJob = await client.classifier.jobs.get('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'); console.log(classifyJob.id); ``` #### Response ```json { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "project_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "rules": [ { "description": "contains invoice number, line items, and total amount", "type": "invoice" } ], "status": "PENDING", "user_id": "user_id", "created_at": "2019-12-27T18:11:19.117Z", "effective_at": "2019-12-27T18:11:19.117Z", "error_message": "error_message", "job_record_id": "job_record_id", "mode": "FAST", "parsing_configuration": { "lang": "af", "max_pages": 0, "target_pages": [ 0 ] }, "updated_at": "2019-12-27T18:11:19.117Z" } ``` ## Get Classification Job Results `client.classifier.jobs.getResults(stringclassifyJobID, JobGetResultsParamsquery?, RequestOptionsoptions?): JobGetResultsResponse` **get** `/api/v1/classifier/jobs/{classify_job_id}/results` Get the results of a classify job. Experimental: This endpoint is not yet ready for production use and is subject to change at any time. ### Parameters - `classifyJobID: string` - `query: JobGetResultsParams` - `organization_id?: string | null` - `project_id?: string | null` ### Returns - `JobGetResultsResponse` Response model for the classify endpoint following AIP-132 pagination standard. - `items: Array` The list of items. - `id: string` Unique identifier - `classify_job_id: string` The ID of the classify job - `created_at?: string | null` Creation datetime - `file_id?: string | null` The ID of the classified file - `result?: Result | null` Result of classifying a single file. - `confidence: number` Confidence score of the classification (0.0-1.0) - `reasoning: string` Step-by-step explanation of why this classification was chosen and the confidence score assigned - `type: string | null` The document type that best matches, or null if no match. - `updated_at?: string | null` Update datetime - `next_page_token?: string | null` A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages. - `total_size?: number | null` The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only. ### Example ```typescript import LlamaCloud from '@llamaindex/llama-cloud'; const client = new LlamaCloud({ apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted }); const response = await client.classifier.jobs.getResults('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'); console.log(response.items); ``` #### Response ```json { "items": [ { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "classify_job_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "created_at": "2019-12-27T18:11:19.117Z", "file_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "result": { "confidence": 0, "reasoning": "reasoning", "type": "type" }, "updated_at": "2019-12-27T18:11:19.117Z" } ], "next_page_token": "next_page_token", "total_size": 0 } ``` ## Domain Types ### Classifier Rule - `ClassifierRule` A rule for classifying documents - v0 simplified version. This represents a single classification rule that will be applied to documents. All rules are content-based and use natural language descriptions. - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') ### Classify Job - `ClassifyJob` A classify job. - `id: string` Unique identifier - `project_id: string` The ID of the project - `rules: Array` The rules to classify the files - `description: string` Natural language description of what to classify. Be specific about the content characteristics that identify this document type. - `type: string` The document type to assign when this rule matches (e.g., 'invoice', 'receipt', 'contract') - `status: StatusEnum` The status of the classify job - `"PENDING"` - `"SUCCESS"` - `"ERROR"` - `"PARTIAL_SUCCESS"` - `"CANCELLED"` - `user_id: string` The ID of the user - `created_at?: string | null` Creation datetime - `effective_at?: string` - `error_message?: string | null` Error message for the latest job attempt, if any. - `job_record_id?: string | null` The job record ID associated with this status, if any. - `mode?: "FAST" | "MULTIMODAL"` The classification mode to use - `"FAST"` - `"MULTIMODAL"` - `parsing_configuration?: ClassifyParsingConfiguration` The configuration for the parsing job - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) - `updated_at?: string | null` Update datetime ### Classify Parsing Configuration - `ClassifyParsingConfiguration` Parsing configuration for a classify job. - `lang?: ParsingLanguages` The language to parse the files in - `"af"` - `"az"` - `"bs"` - `"cs"` - `"cy"` - `"da"` - `"de"` - `"en"` - `"es"` - `"et"` - `"fr"` - `"ga"` - `"hr"` - `"hu"` - `"id"` - `"is"` - `"it"` - `"ku"` - `"la"` - `"lt"` - `"lv"` - `"mi"` - `"ms"` - `"mt"` - `"nl"` - `"no"` - `"oc"` - `"pi"` - `"pl"` - `"pt"` - `"ro"` - `"rs_latin"` - `"sk"` - `"sl"` - `"sq"` - `"sv"` - `"sw"` - `"tl"` - `"tr"` - `"uz"` - `"vi"` - `"ar"` - `"fa"` - `"ug"` - `"ur"` - `"bn"` - `"as"` - `"mni"` - `"ru"` - `"rs_cyrillic"` - `"be"` - `"bg"` - `"uk"` - `"mn"` - `"abq"` - `"ady"` - `"kbd"` - `"ava"` - `"dar"` - `"inh"` - `"che"` - `"lbe"` - `"lez"` - `"tab"` - `"tjk"` - `"hi"` - `"mr"` - `"ne"` - `"bh"` - `"mai"` - `"ang"` - `"bho"` - `"mah"` - `"sck"` - `"new"` - `"gom"` - `"sa"` - `"bgc"` - `"th"` - `"ch_sim"` - `"ch_tra"` - `"ja"` - `"ko"` - `"ta"` - `"te"` - `"kn"` - `max_pages?: number | null` The maximum number of pages to parse - `target_pages?: Array | null` The pages to target for parsing (0-indexed, so first page is at 0) ### Job Get Results Response - `JobGetResultsResponse` Response model for the classify endpoint following AIP-132 pagination standard. - `items: Array` The list of items. - `id: string` Unique identifier - `classify_job_id: string` The ID of the classify job - `created_at?: string | null` Creation datetime - `file_id?: string | null` The ID of the classified file - `result?: Result | null` Result of classifying a single file. - `confidence: number` Confidence score of the classification (0.0-1.0) - `reasoning: string` Step-by-step explanation of why this classification was chosen and the confidence score assigned - `type: string | null` The document type that best matches, or null if no match. - `updated_at?: string | null` Update datetime - `next_page_token?: string | null` A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages. - `total_size?: number | null` The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only.