How document upload works
- You submit one or more file URLs to the bulk upload endpoint.
- Nectar queues each file for processing.
- A job ID is returned that you can poll for status, or you can subscribe to
job.completed.v2. - When processing completes, created documents appear in the API like any other bill. Jobs that produce no new documents (duplicates, non-utility files, password-protected files, or processing errors) still complete — they just leave
parsedDocumentIdsempty.
Upload documents
Use the bulk upload endpoint to submit files for a company. Provide adocuments array of publicly accessible HTTPS URLs. Optionally pin every document in the batch to a site and/or utility account, and pass free-text notes as background context for processing.
Limits: each document is at most 25MB; PDF page limit is 800.
Use v2.2 for new integrations (v2.1 remains available).
Request fields
Upload a single file
You can also upload a single file directly as a form submission. The same 25MB / 800-page limits apply. OptionalsiteId, accountId, and notes work the same as bulk upload.
Check job status
After uploading, poll the job detail endpoint to check processing status. You can also subscribe to thejob.completed.v2 webhook instead of polling.
Job status values
When a job completes, the response includes additional fields:
COMPLETED means Nectar finished processing the upload, not that a new document was created. A batch of duplicates or non-utility files still returns COMPLETED with the corresponding ID lists populated and parsedDocumentIds empty. document.created.v2 fires only when a document is created; job.completed.v2 fires for every finished job.Supported file formats
Tips
- All URLs in the
documentsarray must start withhttps://. If your files are in a private S3 bucket, generate a pre-signed URL. - Include
siteIdand/oraccountIdwhen you need bills allocated to a known site or account — recommended for compliance-sensitive uploads. - Use
notesfor background context (billing period, source, special instructions). - Processing typically completes within a few minutes per document.
- Created documents appear in the standard
/document/endpoints and triggerdocument.created.v2webhooks. Subscribe tojob.completed.v2to learn when the upload job itself finishes, including when no document is created.
Next steps
Webhooks
Get notified when upload jobs finish and when documents are created
Pagination
Iterate through document lists
Data model
Understand how documents relate to usage data