JouloDocs

List pre-registered customers

Lists the drafts this partner uploaded, newest first, with their claim status. Filter on external_ref or email to find one customer. stats always counts all drafts of the partner, whatever the filter.

GET
/partner/drafts
AuthorizationBearer <token>

Partner API key, sent as Authorization: Bearer <key>. Production keys start with jpk_live_ and work only on https://api.joulo.nl. Sandbox keys start with jpk_test_ and work only on https://api-staging.joulo.nl. Sandbox keys minted before September 2026 also start with jpk_live_. A key used on the wrong host returns 401 with a detail. A key is bound to one partner and reaches only the Partner API routes. Any other route returns 404 when it does not exist. A route that needs a scope the key lacks, such as GET /sessions, returns 403 with error: Insufficient scope and a required_scope. Every other route returns 403 with error: partner_api_key_scope. Mint and revoke keys in the partner portal. A partner has one active key at a time.

In: header

Query Parameters

limit?integer

Page size. Values outside 1 to 500 are clamped. 0 or a non-number gives the default.

Default500
Range1 <= value <= 500
offset?integer

Number of rows to skip. Negative values count as 0.

Default0
Range0 <= value
external_ref?string

Exact match on your own customer reference. Trimmed and cut to 120 characters.

email?string

Exact match on the uploaded email address. Trimmed, lowercased and cut to 320 characters.

Response Body

curl -X GET "https://api.joulo.nl/functions/v1/api/partner/drafts?limit=500&offset=0&external_ref=string&email=string"
{
  "drafts": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "type": "particulier",
      "naam": "string",
      "company_name": "string",
      "email": "string",
      "ean": "string",
      "external_ref": "string",
      "status": "invited",
      "import_batch_id": "ea85a421-a4d5-4804-b803-3bf857852db0",
      "postal_code": "string",
      "house_number": "string",
      "house_number_addition": "string",
      "city": "string",
      "invite_expires_at": "2019-08-24T14:15:22Z",
      "claimed_at": "2019-08-24T14:15:22Z",
      "activated_at": "2019-08-24T14:15:22Z",
      "created_at": "2019-08-24T14:15:22Z",
      "ean_status": "resolved",
      "ean_candidates": 0
    }
  ],
  "stats": {
    "invited": 0,
    "claimed": 0,
    "active": 0,
    "expired": 0,
    "conflict": 0,
    "total": 0
  },
  "batches": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "source": "csv",
      "row_count": 0,
      "created_at": "2019-08-24T14:15:22Z"
    }
  ],
  "limit": 0,
  "offset": 0,
  "count": 0,
  "external_ref": "string",
  "email": "string"
}
{
  "error": "Missing or invalid API token"
}
{
  "error": "No partner is linked to this API key"
}
{
  "error": "Too many requests",
  "retry_after_seconds": 3
}
{
  "error": "Failed to fetch drafts"
}
{
  "error": "Authentication is temporarily unavailable, try again shortly"
}