client.extract(...) -> ExtractResponse
-
-
-
The primary endpoint for the Pulse API. Parses uploaded documents or remote file URLs and returns rich markdown content with optional structured data extraction based on user-provided schemas and extraction options.
Set
async: trueto return immediately with a job_id for polling via GET /job/{jobId}. Otherwise processes synchronously.To process many files at once, see Batch Extract or the Batch Processing guide.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.extract( file="example_file", )
-
-
-
file:
typing.Optional[core.File]β Document to upload directly. Required unless fileUrl is provided.
-
file_url:
typing.Optional[str]β Public or pre-signed URL that Pulse will download and extract. Required unless file is provided.
-
model:
typing.Optional[ExtractRequestModel]β Extraction model to use. When set topulse-ultra-2, routes the request through Pulse Ultra 2 (self-hosted VPC model) instead of the default cloud-based service. If omitted or set todefault, the default model is used.
-
extraction_config_id:
typing.Optional[str]β UUID of a saved extraction configuration (a "preset"). When provided, the server loads the saved configuration and applies its options on top of any inline parameters supplied in this request. Inline parameters always take precedence over preset values for the same field. Saved configs are managed via the platform UI or theinput_extractionsadmin endpoints.
-
pages:
typing.Optional[str]β Page range filter supporting segments such as1-2or mixed ranges like1-2,5.
-
figure_processing:
typing.Optional[ExtractRequestFigureProcessing]β Settings that control how figures and embedded visuals are processed. Applies to both PDFs/images (where figures are detected from layout) and spreadsheets (where charts and embedded images are read directly from the workbook). These options affect the markdown output and thebounding_boxes.Images[]array; they do not produce additional output fields elsewhere in the response.
-
extensions:
typing.Optional[ExtractRequestExtensions]β Settings that enable additional processing passes or alternate output formats. Each enabled extension produces a corresponding output field underresponse.extensions.*.
-
spreadsheet:
typing.Optional[ExtractRequestSpreadsheet]β Settings for Excel/spreadsheet extraction. Controls handling of hidden rows, columns, and sheets, whether numeric cells are rendered using their display format or underlying raw value, and optional trimming of empty phantom rows/columns past the last data-bearing cell. Applies to.xlsx,.xlsm, and.xlsfiles. Accepts both camelCase and snake_case field names.
-
storage:
typing.Optional[ExtractRequestStorage]β Options for persisting extraction artifacts. When enabled (default), artifacts are saved to storage and a database record is created.
-
async:
typing.Optional[bool]β If true, returns immediately with a job_id for polling via GET /job/{jobId}. Otherwise processes synchronously.
-
structured_output:
typing.Optional[ExtractRequestStructuredOutput]ββ οΈ DEPRECATED β Use the/schemaendpoint after extraction instead. Pass theextraction_idfrom the extract response to/schemawith yourschema_config. This parameter still works for backward compatibility but will be removed in a future version.
-
schema:
typing.Optional[ExtractRequestSchema]β (Deprecated) JSON schema describing structured data to extract. Use structuredOutput instead. Accepts either a JSON object or a stringified JSON representation.
-
schema_prompt:
typing.Optional[str]β (Deprecated) Natural language prompt for schema-guided extraction. Use structuredOutput.schemaPrompt instead.
-
custom_prompt:
typing.Optional[str]β (Deprecated) Custom instructions that augment the default extraction behaviour. UsefigureProcessingorextensionsinstead.
-
chunking:
typing.Optional[str]ββ οΈ DEPRECATED β Useextensions.chunking.chunkTypesinstead. Comma-separated list of chunking strategies to apply (for examplesemantic,header,page,recursive). Still accepted for backward compatibility.
-
chunk_size:
typing.Optional[int]ββ οΈ DEPRECATED β Useextensions.chunking.chunkSizeinstead. Override for maximum characters per chunk when chunking is enabled.
-
extract_figure:
typing.Optional[bool]ββ οΈ DEPRECATED β Toggle to enable figure extraction in results.
-
figure_description:
typing.Optional[bool]ββ οΈ DEPRECATED β UsefigureProcessing.descriptioninstead. Toggle to generate descriptive captions for extracted figures.
-
show_images:
typing.Optional[bool]ββ οΈ DEPRECATED β UsefigureProcessing.showImagesinstead. Embed base64-encoded images inline in figure tags in the output. Increases response size.
-
return_html:
typing.Optional[bool]ββ οΈ DEPRECATED β Useextensions.altOutputs.returnHtmlinstead. Whether to include HTML representation alongside markdown in the response.
-
thinking:
typing.Optional[bool]β (Deprecated) Enables expanded rationale output for debugging.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.extract_async(...) -> AsyncSubmissionResponse
-
-
-
Deprecated: Use
/extractwithasync: trueinstead.Starts an asynchronous extraction job. The request mirrors the synchronous options but returns immediately with a job identifier that clients can poll for completion status.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.extract_async( file="example_file", )
-
-
-
file:
typing.Optional[core.File]β Document to upload directly. Required unless fileUrl is provided.
-
file_url:
typing.Optional[str]β Public or pre-signed URL that Pulse will download and extract. Required unless file is provided.
-
model:
typing.Optional[ExtractAsyncRequestModel]β Extraction model to use. When set topulse-ultra-2, routes the request through Pulse Ultra 2 (self-hosted VPC model) instead of the default cloud-based service. If omitted or set todefault, the default model is used.
-
extraction_config_id:
typing.Optional[str]β UUID of a saved extraction configuration (a "preset"). When provided, the server loads the saved configuration and applies its options on top of any inline parameters supplied in this request. Inline parameters always take precedence over preset values for the same field. Saved configs are managed via the platform UI or theinput_extractionsadmin endpoints.
-
pages:
typing.Optional[str]β Page range filter supporting segments such as1-2or mixed ranges like1-2,5.
-
figure_processing:
typing.Optional[ExtractAsyncRequestFigureProcessing]β Settings that control how figures and embedded visuals are processed. Applies to both PDFs/images (where figures are detected from layout) and spreadsheets (where charts and embedded images are read directly from the workbook). These options affect the markdown output and thebounding_boxes.Images[]array; they do not produce additional output fields elsewhere in the response.
-
extensions:
typing.Optional[ExtractAsyncRequestExtensions]β Settings that enable additional processing passes or alternate output formats. Each enabled extension produces a corresponding output field underresponse.extensions.*.
-
spreadsheet:
typing.Optional[ExtractAsyncRequestSpreadsheet]β Settings for Excel/spreadsheet extraction. Controls handling of hidden rows, columns, and sheets, whether numeric cells are rendered using their display format or underlying raw value, and optional trimming of empty phantom rows/columns past the last data-bearing cell. Applies to.xlsx,.xlsm, and.xlsfiles. Accepts both camelCase and snake_case field names.
-
storage:
typing.Optional[ExtractAsyncRequestStorage]β Options for persisting extraction artifacts. When enabled (default), artifacts are saved to storage and a database record is created.
-
async:
typing.Optional[bool]β If true, returns immediately with a job_id for polling via GET /job/{jobId}. Otherwise processes synchronously.
-
structured_output:
typing.Optional[ExtractAsyncRequestStructuredOutput]ββ οΈ DEPRECATED β Use the/schemaendpoint after extraction instead. Pass theextraction_idfrom the extract response to/schemawith yourschema_config. This parameter still works for backward compatibility but will be removed in a future version.
-
schema:
typing.Optional[ExtractAsyncRequestSchema]β (Deprecated) JSON schema describing structured data to extract. Use structuredOutput instead. Accepts either a JSON object or a stringified JSON representation.
-
schema_prompt:
typing.Optional[str]β (Deprecated) Natural language prompt for schema-guided extraction. Use structuredOutput.schemaPrompt instead.
-
custom_prompt:
typing.Optional[str]β (Deprecated) Custom instructions that augment the default extraction behaviour. UsefigureProcessingorextensionsinstead.
-
chunking:
typing.Optional[str]ββ οΈ DEPRECATED β Useextensions.chunking.chunkTypesinstead. Comma-separated list of chunking strategies to apply (for examplesemantic,header,page,recursive). Still accepted for backward compatibility.
-
chunk_size:
typing.Optional[int]ββ οΈ DEPRECATED β Useextensions.chunking.chunkSizeinstead. Override for maximum characters per chunk when chunking is enabled.
-
extract_figure:
typing.Optional[bool]ββ οΈ DEPRECATED β Toggle to enable figure extraction in results.
-
figure_description:
typing.Optional[bool]ββ οΈ DEPRECATED β UsefigureProcessing.descriptioninstead. Toggle to generate descriptive captions for extracted figures.
-
show_images:
typing.Optional[bool]ββ οΈ DEPRECATED β UsefigureProcessing.showImagesinstead. Embed base64-encoded images inline in figure tags in the output. Increases response size.
-
return_html:
typing.Optional[bool]ββ οΈ DEPRECATED β Useextensions.altOutputs.returnHtmlinstead. Whether to include HTML representation alongside markdown in the response.
-
thinking:
typing.Optional[bool]β (Deprecated) Enables expanded rationale output for debugging.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.split(...) -> SplitResponse
-
-
-
Identify which pages of a document contain each topic/section. Takes an existing extraction and a list of topics, then uses AI to identify which PDF pages contain content related to each topic.
The result is persisted with a
split_idthat can be used with the/schemaendpoint (split mode) for targeted schema extraction on specific page groups.Set
async: trueto return immediately with a job_id for polling.To split many extractions at once, see Batch Split or the Batch Processing guide.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.split( extraction_id="extraction_id", )
-
-
-
extraction_id:
strβ ID of the saved extraction to split.
-
split_config:
typing.Optional[SplitConfig]β Inline split configuration with topics. Required if split_config_id is not provided.
-
split_config_id:
typing.Optional[str]β Reference to a saved split configuration. Use this instead of providing split_config inline.
-
async:
typing.Optional[bool]β If true, returns immediately with a job_id for polling via GET /job/{jobId}. Otherwise processes synchronously.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.schema(...) -> SchemaResponse
-
-
-
Apply schema extraction to a previously saved extraction. The mode is inferred from the input:
Single mode β Provide
extraction_id+schema_config(orschema_config_id) to apply one schema to the entire document.Multi-extraction mode β Provide a batch extract ID as
extraction_id(auto-detected) or an explicitextraction_idslist. The content from all extractions is combined and the schema is applied to the composite. Citations useextraction_id-bb_idformat to disambiguate across source documents.Split mode β Provide
split_id+split_schema_configto apply different schemas to different page groups from a prior/splitcall. Each topic can have its own schema, prompt, and effort setting.Creates a versioned schema record that can be retrieved later. Set
async: trueto return immediately with a job_id for polling.To apply schemas across many extractions or splits at once, see Batch Schema or the Batch Processing guide.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.schema()
-
-
-
extraction_id:
typing.Optional[str]β ID of a saved extraction OR a batch extract job. When a batch extract ID is provided, the system auto-detects it and combines all completed child extractions into a single schema application.
-
extraction_ids:
typing.Optional[typing.List[str]]β Explicit list of extraction IDs to combine. The markdown and bounding boxes from all extractions are merged and the schema is applied to the composite content. Citations useextraction_id-bb_idformat to disambiguate across source documents.
-
split_id:
typing.Optional[str]β ID of saved split (from a prior/splitcall). Use for split-mode schema extraction.
-
schema_config:
typing.Optional[SchemaConfig]β Inline schema configuration for single mode. Required (with extraction_id) if schema_config_id is not provided.
-
schema_config_id:
typing.Optional[str]β Reference to a saved schema configuration for single mode. Use this instead of providing schema_config inline.
-
split_schema_config:
typing.Optional[typing.Dict[str, TopicSchemaConfig]]β Per-topic schema configurations for split mode. Keys must match the topic names from the split. Each topic provides either inline schema or schema_config_id.
-
async:
typing.Optional[bool]β If true, returns immediately with a job_id for polling via GET /job/{jobId}. Otherwise processes synchronously.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.tables(...) -> TablesResponse
-
-
-
Extract tables from a previously completed extraction. Processes the extraction's document content and returns structured table data.
Requires the
tables_endpointfeature flag to be enabled for your organization.Set
async: trueto return immediately with atables_idfor polling viaGET /job/{tables_id}.To extract tables from many extractions at once, see Batch Tables or the Batch Processing guide.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.tables( extraction_id="extraction_id", )
-
-
-
extraction_id:
strβ ID of a completed extraction to extract tables from.
-
tables_config:
typing.Optional[TablesConfig]β Table extraction configuration. If omitted, defaults are used (merge: false,table_format: "html").
-
async:
typing.Optional[bool]β When true, returns immediately with a job ID. PollGET /job/{tables_id}for the result.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.form.detect(...) -> FormResult
-
-
-
Run cell detection on a PDF and return the detected
form_fieldsalong with a reusableform_id. No LLM matching, no fill, no clear β this is the OCR / layout step that/form/filland/form/clearwould otherwise run internally.The returned
form_idreferences the uploaded PDF and its detected layout, and can be passed back to a subsequent/form/fill,/form/clear, or/form/detectcall as the single input source β Pulse will skip detection on the fast path and reuse the cached cells.Input modes β provide exactly one of:
form_idβ re-detect cells on a previously stored PDF. Useful when callers want to refresh layout after editing or when chaining detect calls.file_urlβ public or pre-signed URL Pulse will download.fileβ direct binary upload of the PDF.
All three input modes ride on the same
multipart/form-datarequest body. (Callers sendingContent-Type: application/jsonwithform_id/file_urlare still accepted server-side for backward compatibility, but the SDKs only model the multipart form.)Optional
page_range(aliaspages, e.g."1-3,5") restricts the operation to a subset of pages.Synchronous by default β returns the detected layout inline. Set
async: trueto receive{job_id, status: "pending"}immediately and poll GET /job/{jobId}.Billed at 1 credit per page. Requires the
form_fillerfeature flag to be enabled for your organization.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.form.detect( file="example_file", )
-
-
-
file:
typing.Optional[core.File]β Direct binary upload of the PDF. Mutually exclusive withfile_urlandform_id.
-
file_url:
typing.Optional[str]β Public or pre-signed URL of a PDF Pulse will download. Mutually exclusive withfileandform_id.
-
form_id:
typing.Optional[str]β Reference to a previously processed form. Mutually exclusive withfile/file_url.
-
page_range:
typing.Optional[str]β Restrict the operation to a subset of pages, e.g."1-3,5".
-
async:
typing.Optional[str]β Set to"true"to run asynchronously and receive{job_id, status}immediately.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.form.fill(...) -> FormResult
-
-
-
Fill the fields of a PDF form with values inferred from a natural language
instructionsprompt. Works on both AcroForm PDFs (true form fields are written) and flat/scanned PDFs (values are rendered as an overlay using detected cells from OCR).Input modes β provide exactly one of:
form_idβ reuse a previously processed form from a prior/form/detect,/form/fill, or/form/clearcall. Skips re-detection (fast path); the cachedform_fieldsare reused.file_urlβ public or pre-signed URL of a PDF Pulse will download.fileβ direct binary upload of the PDF. Pulse runs cell detection internally before filling.
All three input modes ride on the same
multipart/form-datarequest body. (Callers sendingContent-Type: application/jsonwithform_id/file_urlare still accepted server-side for backward compatibility, but the SDKs only model the multipart form.)Optional
form_fieldslets callers supply or edit the detected cells before filling. Optionalpage_range(aliaspages, e.g."1-3,5") restricts the operation to a subset of pages.Synchronous by default β returns the filled
FormResultinline (including apdf_urlyou canGETto download the PDF binary). Setasync: trueto receive{job_id, status: "pending"}and poll GET /job/{jobId}.Billed at 3 credits per page. Requires the
form_fillerfeature flag to be enabled for your organization.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.form.fill( file="example_file", instructions="instructions", )
-
-
-
instructions:
strβ Required natural-language fill prompt.
-
file:
typing.Optional[core.File]β Direct binary upload of the PDF. Mutually exclusive withfile_urlandform_id.
-
file_url:
typing.Optional[str]β Public or pre-signed URL of a PDF Pulse will download. Mutually exclusive withfileandform_id.
-
form_id:
typing.Optional[str]β Reference to a previously processed form. Mutually exclusive withfile/file_url.
-
form_fields:
typing.Optional[str]β Optional JSON-encoded array ofFormCellobjects to override detected cells. Multipart bodies must serialise this field as a string.
-
page_range:
typing.Optional[str]β Restrict the operation to a subset of pages, e.g."1-3,5".
-
async:
typing.Optional[str]β Set to"true"to run asynchronously and receive{job_id, status}immediately.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.form.clear(...) -> FormResult
-
-
-
Remove user-entered data from a PDF form, leaving the blank form template intact. Erases handwritten entries, typed values, and unchecks selected checkboxes β printed labels, field titles, section headers, and other static template content are preserved.
Input modes β provide exactly one of:
form_idβ reuse a previously processed form from a prior/form/detect,/form/fill, or/form/clearcall (fast path; cached layout reused).file_urlβ public or pre-signed URL of a PDF Pulse will download.fileβ direct binary upload of the PDF.
All three input modes ride on the same
multipart/form-datarequest body. (Callers sendingContent-Type: application/jsonwithform_id/file_urlare still accepted server-side for backward compatibility, but the SDKs only model the multipart form.)instructionsis optional. When omitted, Pulse clears every user-filled field deterministically (no LLM call) on AcroForm PDFs, eliminating any chance of hallucinated content. Provide a natural language prompt to clear only specific fields (e.g."clear only the address fields"); targeted clears go through the LLM matcher with a delete-only filter.Optional
form_fieldsandpage_range(aliaspages) behave the same as on Form Fill.Synchronous by default β returns the cleared
FormResultinline (including apdf_urlyou canGETto download the PDF binary). Setasync: trueto receive{job_id, status: "pending"}and poll GET /job/{jobId}.Billed at 3 credits per page. Requires the
form_fillerfeature flag to be enabled for your organization.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.form.clear( file="example_file", )
-
-
-
file:
typing.Optional[core.File]β Direct binary upload of the PDF. Mutually exclusive withfile_urlandform_id.
-
file_url:
typing.Optional[str]β Public or pre-signed URL of a PDF Pulse will download. Mutually exclusive withfileandform_id.
-
form_id:
typing.Optional[str]β Reference to a previously processed form. Mutually exclusive withfile/file_url.
-
instructions:
typing.Optional[str]β Optional natural language description of what to clear. When omitted, Pulse clears everything user-filled deterministically.
-
form_fields:
typing.Optional[str]β Optional JSON-encoded array ofFormCellobjects to override detected cells. Multipart bodies must serialise this field as a string.
-
page_range:
typing.Optional[str]β Restrict the operation to a subset of pages, e.g."1-3,5".
-
async:
typing.Optional[str]β Set to"true"to run asynchronously and receive{job_id, status}immediately.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.batch.extract(...) -> BatchExtractResponse
-
-
-
Process multiple files in parallel. Enumerates files from an input source (S3 prefix, local directory, or URL list), calls Extract for each file, and saves results to an output destination.
Always asynchronous β returns a batch job ID immediately. Poll GET /job/{jobId} for real-time progress including per-file completion status.
See the Extract endpoint for details on
extract_optionsand the Batch Processing guide for an overview of the batch pipeline.
-
-
-
from pulse import Pulse, BatchInputSource, BatchOutputDestination from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.batch.extract( input=BatchInputSource(), output=BatchOutputDestination(), )
-
-
-
input:
BatchInputSourceβ Source of files to process.
-
output:
BatchOutputDestinationβ Where to save extraction result JSON files.
-
extract_options:
typing.Optional[typing.Dict[str, typing.Any]]β Options forwarded to each/extractcall (e.g.pages,figureProcessing,extensions).
-
workers:
typing.Optional[int]β Number of parallel workers. Higher values increase throughput but consume more server resources.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.batch.schema(...) -> BatchSchemaResponse
-
-
-
Apply schema extraction to multiple items in parallel. Mode is inferred from the input:
Single mode β Provide
extraction_idsorbatch_extract_idwithschema_configto apply one schema to each extraction.Split mode β Provide
split_idsorbatch_split_idwithsplit_schema_configto apply per-topic schemas to each split.Each child call goes through the full Schema code path. Poll GET /job/{jobId} for real-time progress.
See the Schema endpoint for details on
schema_configandsplit_schema_config, and the Batch Processing guide for an overview of the batch pipeline.
-
-
-
from pulse import Pulse, BatchOutputDestination from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.batch.schema( output=BatchOutputDestination(), )
-
-
-
output:
BatchOutputDestinationβ Where to save schema result JSON files.
-
batch_extract_id:
typing.Optional[str]β ID of a prior/batch/extractrun (single mode).
-
extraction_ids:
typing.Optional[typing.List[str]]β Explicit list of extraction IDs (single mode).
-
batch_split_id:
typing.Optional[str]β ID of a prior/batch/splitrun (split mode).
-
split_ids:
typing.Optional[typing.List[str]]β Explicit list of split IDs (split mode).
-
schema_config:
typing.Optional[SchemaConfig]β Schema configuration for single mode. Applied to each extraction.
-
split_schema_config:
typing.Optional[typing.Dict[str, TopicSchemaConfig]]β Per-topic schema configurations for split mode. Keys must match the topic names from the splits.
-
page_range:
typing.Optional[str]β Page range filter for single mode (e.g.1-5,10).
-
workers:
typing.Optional[int]β Number of parallel workers.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.batch.tables(...) -> BatchTablesResponse
-
-
-
Extract tables from multiple existing extractions in parallel. Each child call goes through the full Tables code path.
Extractions are identified by either a
batch_extract_id(from a prior Batch Extract run) or an explicit list ofextraction_ids.Poll GET /job/{jobId} for real-time progress.
See the Tables endpoint for details on
tables_configand the Batch Processing guide for an overview of the batch pipeline.
-
-
-
from pulse import Pulse, BatchOutputDestination from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.batch.tables( output=BatchOutputDestination(), )
-
-
-
output:
BatchOutputDestinationβ Where to save table result JSON files.
-
batch_extract_id:
typing.Optional[str]β ID of a prior/batch/extractrun. All completed child extraction IDs will be used.
-
extraction_ids:
typing.Optional[typing.List[str]]β Explicit list of extraction IDs to process.
-
tables_config:
typing.Optional[TablesConfig]β Table extraction configuration forwarded to each/tablescall.
-
workers:
typing.Optional[int]β Number of parallel workers.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.batch.split(...) -> BatchSplitResponse
-
-
-
Split multiple existing extractions by topics in parallel. Each child call goes through the full Split code path.
Extractions are identified by either a
batch_extract_id(from a prior Batch Extract run) or an explicit list ofextraction_ids.Poll GET /job/{jobId} for real-time progress.
See the Split endpoint for details on
split_configand the Batch Processing guide for an overview of the batch pipeline.
-
-
-
from pulse import Pulse, BatchOutputDestination, SplitConfig, TopicDefinition from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.batch.split( output=BatchOutputDestination(), split_config=SplitConfig( split_input=[ TopicDefinition( name="name", ) ], ), )
-
-
-
output:
BatchOutputDestinationβ Where to save split result JSON files.
-
split_config:
SplitConfigβ Split configuration with topic definitions. Applied to each extraction.
-
batch_extract_id:
typing.Optional[str]β ID of a prior/batch/extractrun. All completed child extraction IDs will be used.
-
extraction_ids:
typing.Optional[typing.List[str]]β Explicit list of extraction IDs to process.
-
workers:
typing.Optional[int]β Number of parallel workers.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.pipeline.execute(...) -> PipelineExecuteResponse
-
-
-
Chain multiple processing steps (extract, schema, split, tables) into a single request with inline configurations. No saved pipeline required.
The
stepsobject defines what to run and in what order. Outputs flow forward automatically β you never need to pass extraction IDs between steps.Supported step combinations:
extractβ extract a single documentextractβschemaβ extract then apply structured schemaextractβsplitβ extract then split into topicsextractβsplitβschemaβ extract, split by topic, apply per-topic schemasextractβtablesβ extract then extract structured tablesbatch_extractβschemaβ extract multiple files, combine into one schema output
Document input:
- Single file: provide
fileUrlin JSON orfilevia multipart - Multiple files (batch_extract): provide
fileUrlsin JSON or multiplefilefields via multipart
Set
async: trueto return immediately with ajob_idfor polling viaGET /job/{jobId}.Set
autoDelete: truefor zero-retention mode β all stored artifacts are deleted immediately after you receive the results. Requiressave_extractionsto be disabled for your organization.Requires the
enable_adhoc_pipelinefeature flag.
-
-
-
from pulse import Pulse, PipelineSteps from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.pipeline.execute( steps=PipelineSteps(), )
-
-
-
steps:
PipelineStepsβ Ordered step definitions. Key order determines execution order.
-
file_url:
typing.Optional[str]β URL of the document to process. Use withextractstep.
-
async:
typing.Optional[bool]β If true, returns immediately with ajob_idfor polling viaGET /job/{jobId}.
-
auto_delete:
typing.Optional[bool]β If true, all stored artifacts are deleted immediately after you receive the results. The inline data in the response is unaffected. Requiressave_extractionsto be disabled for your organization.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.jobs.get_job(...) -> JobStatusResponse
-
-
-
Check the status and retrieve results of an asynchronous job (submitted via any endpoint with
async: true).
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.jobs.get_job( job_id="jobId", )
-
-
-
job_id:
strβ Identifier returned from an async job submission.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.jobs.cancel_job(...) -> JobCancellationResponse
-
-
-
Attempts to cancel an asynchronous job that is currently pending or processing. Jobs that have already completed will remain unchanged.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.jobs.cancel_job( job_id="jobId", )
-
-
-
job_id:
strβ Identifier returned from an async job submission.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.results.get_pdf(...) -> typing.Iterator[bytes]
-
-
-
Download the PDF binary produced by a
/form/detect,/form/fill, or/form/clearjob. Thepdf_urlfield on aFormResultpoints at this endpoint β you can hand it directly to a browser, embed it in an<iframe>, or fetch the bytes from a backend.Returns
404for non-form jobs (no PDF was produced) and for form jobs whose PDF artifact is no longer available.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.results.get_pdf( job_id="jobId", )
-
-
-
job_id:
strβ Job identifier from a form endpoint.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.results.get_image(...) -> typing.Iterator[bytes]
-
-
-
Stream a PNG/JPEG visual image referenced by an extraction response under
bounding_boxes.Images[].image_url.The URL is API-hosted instead of raw S3 β the underlying object store is intentionally not part of the public contract. The host in
image_urlmirrors the request origin (e.g. a request to a beta deployment returns image URLs on that same host).Authentication is required. Unlike the legacy single-use
/large_results/{jobId}route, visual artifacts are independently-addressable resources β every fetch must present a valid API key for the owning org. There is no anonymous / TTL-based fallback. Use the samex-api-keyheader you use for/extract.Fetching an image does not consume the parent extraction's result-delivery slot, so one extraction can produce many image URLs and each can be fetched repeatedly while the artifact is retained.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.results.get_image( job_id="jobId", filename="filename", )
-
-
-
job_id:
strβ Job identifier β same value used in theimage_urlreturned from/extract.
-
filename:
strβ Visual filename β e.g.excel_image_1_1.png. Must be the exactfilenamesegment from theimage_url.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.large_results.get_large_result(...) -> ExtractResultCore
-
-
-
Download the full result for a large extraction. When
/extractorGET /job/{jobId}returnsis_url: true, fetch the complete result from the URL provided. The URL is single-use: after a successful download the resource is deleted and subsequent requests return 410 Gone.For form jobs (
/form/detect,/form/fill,/form/clear) you don't need this endpoint at all βGET /job/{jobId}already returns the fullFormResultinline underresult, and thepdf_urlfield points at GET /results/{jobId}/pdf for the binary.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.large_results.get_large_result( job_id="jobId", )
-
-
-
job_id:
strβ Job identifier from the extraction response.
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-
client.webhooks.create_webhook_link() -> CreateWebhookLinkResponse
-
-
-
Generates a temporary link to the Svix webhook portal where users can manage their webhook endpoints and view message logs.
-
-
-
from pulse import Pulse from pulse.environment import PulseEnvironment client = Pulse( api_key="<value>", environment=PulseEnvironment.DEFAULT, ) client.webhooks.create_webhook_link()
-
-
-
request_options:
typing.Optional[RequestOptions]β Request-specific configuration.
-
-