DoConure

How do I make my first call?

From a new account to a PDF on disk in one request. Every account starts with a template called Hello World and a starter API key named hello-world, so there is nothing to build first.

  1. Get your API key. The starter key arrives by email when your account is created; it is never shown on screen. Lost it, or need more than composing? In the console open API keys and issue a new one, giving it a name: it is shown once, so copy it before you leave the page. Keep it in an environment variable rather than in your code:
    export DOCONURE_API_KEY="paste-your-key-here"
  2. Get the template id. In the console open Templates → Hello World; the id is on the template's page.
  3. Write the request to a file called request.json. It has two parts: data, the values the template reads, and settings, which template to use:
    {
      "data": {
        "title": "Order confirmation",
        "reference": "ORD-1042",
        "date": "2026-09-19",
        "customer": {"name": "Rossi Costruzioni Srl", "email": "ufficio@example.com"},
        "lines": [
          {"description": "Site survey", "quantity": 1, "price": "450.00", "amount": "450.00"},
          {"description": "Structural report", "quantity": 2, "price": "300.00", "amount": "600.00"}
        ],
        "total": "1050.00",
        "note": "Payment within 30 days."
      },
      "settings": {"templateId": "YOUR_TEMPLATE_ID"}
    }
  4. Call the API:
    curl -X POST https://app.doconure.com/api/v1/compose/documents/generate \
      -H "Authorization: Bearer $DOCONURE_API_KEY" \
      -H "Content-Type: application/json" \
      -d @request.json \
      --dump-header headers.txt \
      --output document.pdf

What comes back

On success the answer is 200 and the body is the PDF itself, written to document.pdf. A PDF has no room for anything else, so the rest is in the headers (headers.txt above):

  • X-Credits-Used and X-Credits-Left: what this document cost and what your organisation has left;
  • X-Document-Id: the stored document, to download again or to send for signature;
  • X-Template-Version: which version of the template produced it.

Prefer JSON? Add "responseFormat": "json" to settings: the answer then carries an output object with the same facts.

If it does not work

An error is always JSON with a stable code, never a bare status. The usual first-call ones:

  • 401 INVALID_API_KEY: the key is missing, mistyped, expired or revoked. Check that $DOCONURE_API_KEY is set in the shell you run cURL from.
  • 404 TEMPLATE_NOT_FOUND: the id belongs to another organisation or does not exist. Copy it again from the template's page.
  • 429 QUOTA_EXCEEDED: not enough credit left for this document. The console shows your balance; nothing was charged.

Every code, with what to do about it: Errors.

No code needed to try a template. Open the template in the console and use Test with JSON. The field is pre-filled from the template's own placeholders, so the shape is already correct — press the button and download the PDF.

Full field list for this call: Generating a document. Ready to send it for signature too? See Your first signature or, to do both in one request, Compose and send for signature in one call.