Resourcly imports API
The imports API from Resourcly — 6 operation(s) for imports.
The imports API from Resourcly — 6 operation(s) for imports.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/resourcly-imports-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: API for document processing, item similarity search, and analytics.
title: Resourcly analytics Imports API
termsOfService: https://resourcly.com/terms
contact:
name: API Support
email: support@resourcly.com
license:
name: Proprietary
version: 1.0.0
servers:
- url: https://api.resourcly.com/v1
tags:
- name: imports
paths:
/imports:
get:
security:
- BearerAuth: []
description: Returns a paginated list of import jobs for the authenticated business
tags:
- imports
summary: List import jobs
parameters:
- description: Page number
name: page
in: query
schema:
type: integer
default: 1
- description: Items per page
name: page_size
in: query
schema:
type: integer
default: 20
maximum: 100
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobListResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
post:
security:
- BearerAuth: []
description: Creates a new import job for batch document uploads
tags:
- imports
summary: Create import job
parameters:
- description: Import job name
name: name
in: query
schema:
type: string
- description: Import source (web_upload, api, bulk_import)
name: source
in: query
schema:
type: string
- description: Delete and re-process documents with same filename
name: replace_existing
in: query
schema:
type: boolean
- description: Expected total number of documents in this import
name: total_documents
in: query
schema:
type: integer
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobCreateResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
/imports/validate:
post:
security:
- BearerAuth: []
description: Categorizes local upload file paths against the business import folder mapping, returning which are valid item files (with a derived part number) and which are not. Used by the V2 upload flow to upload only importable files.
tags:
- imports
summary: Validate upload paths against the folder mapping
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ValidateImportFilesResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ValidateImportFilesRequest'
description: Paths to validate
required: true
/imports/{id}:
get:
security:
- BearerAuth: []
description: Returns a single import job by ID
tags:
- imports
summary: Get import job
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJob'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
delete:
security:
- BearerAuth: []
description: Deletes an import job and all its associated documents
tags:
- imports
summary: Delete import job
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobDeleteResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
/imports/{id}/documents:
get:
security:
- BearerAuth: []
description: Returns documents belonging to an import job
tags:
- imports
summary: Get import documents
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
- description: Page number
name: page
in: query
schema:
type: integer
default: 1
- description: Items per page
name: page_size
in: query
schema:
type: integer
default: 20
maximum: 100
- description: Filter by status (pending, processing, completed, failed)
name: status
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobDocumentsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
post:
security:
- BearerAuth: []
description: Uploads a document as part of an import job
tags:
- imports
summary: Upload document to import
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/models.DocumentUploadWithImportResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
description: Document file to upload
format: binary
required:
- file
delete:
security:
- BearerAuth: []
description: Deletes all documents from an import job
tags:
- imports
summary: Delete import documents
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobDeleteResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
/imports/{id}/rerun:
post:
security:
- BearerAuth: []
description: Re-runs processing for ALL documents in an import job using the original configuration
tags:
- imports
summary: Re-run import job
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobRerunResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
/imports/{id}/retrigger:
post:
security:
- BearerAuth: []
description: Retriggers processing for failed or stuck pending documents in an import job
tags:
- imports
summary: Retrigger import documents
parameters:
- description: Import job ID (UUID)
name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobRetriggerResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/models.ErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ImportJobRetriggerRequest'
description: Optional document IDs to retrigger
components:
schemas:
models.ValidateImportFileResult:
type: object
properties:
part_number:
type: string
path:
type: string
reason:
type: string
valid:
type: boolean
models.ImportJobOptions:
type: object
properties:
replace_existing:
description: Delete and re-process documents with same filename
type: boolean
models.ImportJobCreateResponse:
type: object
properties:
import_id:
type: string
message:
type: string
models.ImportJob:
type: object
properties:
auto_pause_reason:
type: string
auto_paused:
type: boolean
auto_paused_at:
type: string
business_id:
type: string
completed_at:
type: string
created_at:
type: string
error_message:
type: string
failed_documents:
type: integer
id:
type: string
import_bucket_path:
type: string
name:
type: string
options:
$ref: '#/components/schemas/models.ImportJobOptions'
paused:
type: boolean
paused_at:
type: string
paused_by:
type: string
processed_documents:
type: integer
recent_failure_count:
description: Circuit breaker fields
type: integer
source:
type: string
status:
type: string
total_documents:
type: integer
updated_at:
type: string
models.ImportJobDocumentsResponse:
type: object
properties:
documents:
type: array
items:
$ref: '#/components/schemas/models.Document'
import_id:
type: string
page:
type: integer
page_size:
type: integer
total_count:
type: integer
models.Document:
type: object
properties:
business_id:
type: string
business_node_id:
type: string
created_at:
type: string
error_message:
type: string
filename:
type: string
gcs_uri:
type: string
id:
type: string
image_count:
type: integer
import_bucket_uri:
type: string
import_id:
type: string
items_count:
type: integer
page_count:
type: integer
processed_at:
type: string
status:
type: string
table_count:
type: integer
trace_id:
type: string
updated_at:
type: string
models.ImportJobRetriggerRequest:
type: object
properties:
document_ids:
description: 'Optional: specific documents to retrigger'
type: array
items:
type: string
force:
description: 'Force also retriggers documents in terminal success states
(spec_matched). Only honored together with an explicit DocumentIDs list —
a forced full-import rerun must stay impossible from this endpoint.'
type: boolean
models.ValidateImportFilesRequest:
type: object
properties:
business_node_id:
type: string
paths:
type: array
items:
type: string
models.ErrorResponse:
type: object
properties:
code:
type: string
details: {}
error:
type: string
models.ImportJobListResponse:
type: object
properties:
import_jobs:
type: array
items:
$ref: '#/components/schemas/models.ImportJob'
page:
type: integer
page_size:
type: integer
total_count:
type: integer
models.ImportJobRetriggerResponse:
type: object
properties:
documents_retriggered:
type: integer
import_id:
type: string
message:
type: string
models.ImportJobRerunResponse:
type: object
properties:
documents_rerun:
type: integer
import_id:
type: string
message:
type: string
replace_existing:
type: boolean
models.ImportJobDeleteResponse:
type: object
properties:
documents_deleted:
type: integer
import_id:
type: string
message:
type: string
models.DocumentUploadWithImportResponse:
type: object
properties:
document_id:
type: string
filename:
type: string
import_id:
type: string
message:
type: string
status:
type: string
models.ValidateImportFilesResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/models.ValidateImportFileResult'
securitySchemes:
BearerAuth:
description: 'Firebase JWT token. Format: "Bearer {token}"'
type: apiKey
name: Authorization
in: header