REST API

Documentatie


File transfer

Je kunt je bestanden op twee verschillende manieren aanleveren. In de stap Bestellen was al te zien dat je de bestanden kon aanleveren als URL's, wanneer je de bestelling aanmaakt:

"files": {
    "content": "https://www.printapi.nl/sample-book-a5-content.pdf",
    "cover": "https://www.printapi.nl/sample-book-a5-cover.pdf"
}
Lees over het aanleverformat voor bestanden in onze FAQ.

Print API zal deze bestanden dan automatisch asynchronous downloaden. Dat gebeurt meestal binnen tien minuten: je hoeft hier verder zelf niets voor te doen. Voldoet het bestand niet aan het aanleverformat of mislukt de download, dan krijg je per e-mail een foutmelding. Is dit voor jou een geschikte oplossing, dan kun je dus direct door naar de volgende stap.

Zijn jouw bestanden niet openbaar beschikbaar vanaf een webserver, lees dan verder. Je kunt de bestanden namelijk ook naar de API uploaden. Dat is slechts een kleine extra stap.

Alternatief Uploaden

Je kunt jouw bestanden ook uploaden, na het aanmaken van de bestelling. Print API geeft elk aan te leveren bestand een unieke uploadUrl, waar je jouw bestand naar kunt POST-en. Die URL's staan in de API response van je bestelling.

Om deze functie te gebruiken, moet je eerst het volledige files-object uit je bestelgegevens weghalen, of op null zetten. Daardoor zal de API wachten op uploads. Je vindt de uploadUrl op de volgende plaats in de API response van je bestelling:

"items": [
    {
        "id": "18557",
        ...
        "files": {
            "content": {
                "status": "AwaitingUpload",
                "uploadUrl": "https://test.printapi.nl/v2/files/05WTSKLi4fVVXog4qw8"
            }
        }
    }
]

Je kunt het bestand uploaden door een HTTP POST te doen naar de uploadUrl, met je bestand direct in de request body. Je hoeft dus geen complexe multipart/form-data request op te bouwen — het volgende is al voldoende:

Request:
POST /v2/files/05WTSKLi4fVVXog4qw8 HTTP/1.1
Authorization: Bearer TOKEN
Content-Type: application/pdf

<binary inhoud>

Let er ook op dat je de juiste Content-Type header opgeeft voor het bestandstype dat je gebruikt, zodat de API weet hoe je bestand gelezen moet worden. In de onderstaande tabel staat welke waarde bij welk bestandstype hoort.

Bestandstype Content-Type
PDF *.pdf application/pdf
PNG *.png image/png
JPEG *.jpg, *.jpeg image/jpeg
Tip: meerdere items, unieke bestanden

Bestel je meerdere items met elk hun eigen bestand(en)? Om de juiste bestanden bij de juiste items te zoeken, kan het handig zijn om bij het aanmaken van je bestelling metadata op te geven:

Excerpt "POST /orders" request
{
    "productId": "poster_a4_sta",
    "quantity": 100,
    "metadata": "{ \"file\" => \"e7JkW4YVNE1qg6iRMBZ3.png\" }"
}

In het metadata-veld kun je jouw eigen data kwijt. Bijvoorbeeld een bestandspad of -ID. Dat mag in JSON, XML of elk ander format dat je wilt. Bij het uploaden kun je dit veld weer uitlezen:

Excerpt "POST /orders" response
"items": [
    {
        "id": "18557",
        "metadata": "{ \"file\" => \"e7JkW4YVNE1qg6iRMBZ3.png\" }"
        ...
        "files": {
            "content": {
                "status": "AwaitingUpload",
                "uploadUrl": "https://test.printapi.nl/v2/files/05WTSKLi4fVVXog4qw8"
            }
        }
    }
]
Volgende