openapi: 3.1.0
info:
title: Parcel documents API
description: >
For international shipments, customs documentation is generated alongside
the shipping label. These documents can be downloaded separately from the
shipping label in various formats and resolutions via this API.
version: 3.0.0
contact:
name: Sendcloud API Support
url: https://www.sendcloud.dev
email: contact@sendcloud.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://panel.sendcloud.sc/api/v3
description: Sendcloud Production
tags:
- name: Parcel Documents
paths:
/parcels/{id}/documents/{type}:
get:
summary: Retrieve a parcel document
x-mint:
href: /api/v3/parcel-documents/retrieve-a-parcel-document
content: >-
Sendcloud generates the correct type of document for your shipment
when you [Create a
parcel](/api/v2/parcels/create-a-parcel-or-parcels), provided that you
have filled in all the information related to the parcel contents,
value and invoice. Use this endpoint to retrieve these documents in
your preferred format.
This endpoint supports the following document types:
- `label`
- `customs-declaration`
- `air-waybill`
For international shipments, customs declaration must be attached (either physically or [digitally](https://support.sendcloud.com/hc/en-us/articles/4417349714452-Send-your-customs-documents-digitally-via-Paperless-Trade-) for some carriers) to the shipment for customs officials to access.
tags:
- Parcel Documents
responses:
'200':
description: Requested parcel document file
content:
application/pdf:
schema:
type: string
format: binary
application/zpl:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
InvalidType:
value:
errors:
- code: invalid
status: '400'
detail: Invalid document type.
'404':
description: Document type requested is not available for the parcel
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
NotFound:
summary: Parcel Document Not Found
value:
errors:
- code: not_found
status: '404'
detail: No Parcel matches the given query.
operationId: sc-public-v3-scp-get-retrieve_parcel_documents
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/type'
- $ref: '#/components/parameters/dpi'
- $ref: '#/components/parameters/rendering_format'
- $ref: '#/components/parameters/paper-size'
description: >-
Retrieve a specific document for a given parcel, and download it in your
preferred format and resolution.
/parcel-documents/{type}:
get:
summary: Retrieve multiple parcel documents
tags:
- Parcel Documents
x-mint:
href: /api/v3/parcel-documents/retrieve-multiple-parcel-documents
content: >-
Sendcloud generates the correct type of document for your shipment
when you [Create a
parcel](/api/v2/parcels/create-a-parcel-or-parcels), provided that you
have filled in all the information related to the parcel contents,
value and invoice. Use this endpoint to retrieve these documents in
bulk.
This endpoint supports the following document types:
- `label`
- `customs-declaration`
- `air-waybill`
For international shipments, customs declaration must be attached (either physically or [digitally](https://support.sendcloud.com/hc/en-us/articles/4417349714452-Send-your-customs-documents-digitally-via-Paperless-Trade-) for some carriers) to the shipment for customs officials to access.
responses:
'200':
description: Requested parcel document files of a specific type.
content:
application/pdf:
schema:
type: string
format: binary
application/zpl:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
InvalidType:
value:
errors:
- code: invalid
status: '400'
detail: Invalid document type.
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/errors'
examples:
NotFound:
value:
errors:
- code: not_found
status: '404'
detail: No Parcel matches the given query.
operationId: sc-public-v3-scp-get-retrieve_parcel_documents_bulk
security:
- HTTPBasicAuth: []
- OAuth2ClientCreds: []
parameters:
- $ref: '#/components/parameters/parcels'
- $ref: '#/components/parameters/type'
- $ref: '#/components/parameters/paper-size'
description: Download multiple parcel documents of the same type in bulk.
components:
securitySchemes:
HTTPBasicAuth:
type: http
description: >-
Basic Authentication using API key and secrets is currently the main
authentication mechanism.
scheme: basic
OAuth2ClientCreds:
type: oauth2
description: >-
OAuth2 is a standardized protocol for authorization that allows users to
share their private resources stored on one site with another site
without having to provide their credentials. OAuth2 Client Credentials
Grant workflow. This workflow is typically used for server-to-server
interactions that require authorization to access specific resources.
flows:
clientCredentials:
tokenUrl: https://account.sendcloud.com/oauth2/token/
scopes:
api: Default OAuth scope required to access Sendcloud API.
parameters:
id:
name: id
in: path
schema:
type: integer
example: 1
minimum: 1
description: Identifier of the parcel which you want to retrieve a document from
required: true
type:
name: type
in: path
schema:
type: string
example: customs-declaration
enum:
- label
- customs-declaration
- air-waybill
description: Document type you want to retrieve.
required: true
dpi:
name: dpi
in: query
required: false
schema:
type: integer
default: 72
enum:
- 72
- 150
- 203
- 300
- 600
example: 300
minimum: 1
description: >
DPI, or dots per inch, refers to the printing resolution of your
shipping labels. Labels must be printed at a high enough resolution to
ensure the clarity of address details and the barcode for scanning
purposes.
Use the following table to find the appropriate DPI for each file
format:
| File format | Default DPI | Valid DPI |
|-------------|-------------|-----------|
| pdf | 72 | 72 |
| png | 300 | 150, 300 |
ZPL labels are not affected by the DPI setting, as the resolution is
determined by the carrier itself. Most carriers use a resolution of 203
DPI. Zebra printers need to be configured to print at the specific DPI
of the label if they have higher resolution capabilities.
rendering_format:
name: Accept
in: header
required: false
schema:
type: string
default: application/pdf
enum:
- application/pdf
- application/zpl
- image/png
example: image/png
description: >-
The returned format of the document.
**Note:** If a label is requested as native ZPL from the carrier it
can't be converted to another format and will always be returned in ZPL.
parcels:
name: parcels
in: query
required: true
schema:
type: array
items:
type: integer
example:
- 1
- 2
- 3
maxItems: 20
minItems: 1
description: Parcels for which you want to retrieve the documents
paper-size:
in: query
name: paper_size
description: >
The paper size of the document you would like to retrieve. Paper size
can be one of:
- A4
- A5
- A6
Omitting this query parameter leads to the internal paper size of the
document being used. Generally this is A6 for labels and A4 for larger
documents, like customs documents.
schema:
type: string
enum:
- A4
- A5
- A6
example: A4
schemas:
ErrorObject:
title: Error
type: object
description: Error in a JSON:API error format
properties:
id:
type: string
description: A unique identifier for the error.
links:
type: object
description: >-
A set of hyperlinks that provide additional information about the
error.
properties:
about:
type: string
description: A URL that provides additional information about the error.
status:
type: string
format: int32
description: The HTTP status code of the error.
minLength: 1
code:
type: string
description: A unique error code for the error, in snake case format.
minLength: 1
enum:
- unknown_field
- invalid
- forbidden
- invalid_choice
- min_value
- 'null'
- not_found
- required
- not_a_list
- non_field_errors
- authentication_failed
- validation_error
- parcel_announcement_error
title:
type: string
description: A short, human-readable summary of the error.
minLength: 1
detail:
type: string
description: A human-readable explanation of the error.
minLength: 1
source:
type: object
description: >-
An object that identifies the source of the error within the request
payload.
properties:
pointer:
type: string
description: >-
A `JSON` pointer to the location of the error within the request
payload.
parameter:
type: string
description: The name of the `query` parameter that caused the error.
header:
type: string
description: The name of the `header` parameter that caused the error.
meta:
type: object
description: Additional metadata about the error.
errors:
title: Errors
type: object
description: A standardized format for errors in JSON:API responses.
properties:
errors:
type:
- array
- object
items:
type: object
allOf:
- $ref: '#/components/schemas/ErrorObject'
required:
- status
- code
- detail