> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.laposta.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.laposta.org/_mcp/server.

# Campagne testen

POST https://api.laposta.nl/v2/campaign/{campaign_id}/action/testmail
Content-Type: application/x-www-form-urlencoded

Stuurt een testmail naar een adres dat je zelf opgeeft. Dat kan alleen bij een campagne die al inhoud heeft en nog niet verzonden is.Sending a test mail Note: only in the case of a campaign for which there already is content, but which has not yet been sent, is it possible for a test email to be sent.Schickt eine Testmail an eine Adresse, die du selbst angibst. Das geht nur bei einer Kampagne, die bereits Inhalt hat und noch nicht versendet wurde.Envía un correo de prueba a una dirección que indicas tú mismo. Esto solo es posible con una campaña que ya tiene contenido y que todavía no se ha enviado.

Reference: https://docs.laposta.org/campagnes/campagne-testen

## Authentication

- `Authorization` header (basic auth, required) — Vul je API-sleutel in bij `api_key` en laat `leave_empty` leeg. De API gebruikt basic auth, waarbij je sleutel de plaats van de gebruikersnaam inneemt. In curl schrijf je dat als `-u JOUW_SLEUTEL:`, met een dubbele punt en niets erachter.Enter your API key at `api_key` and leave `leave_empty` empty. The API uses basic auth, with your key in place of the username. In curl that reads `-u YOUR_KEY:`, with a colon and nothing after it.Trage deinen API-Schlüssel bei `api_key` ein und lass `leave_empty` leer. Die API nutzt Basic Auth, wobei dein Schlüssel an die Stelle des Benutzernamens tritt. In curl schreibst du das als `-u DEIN_SCHLUESSEL:`, mit einem Doppelpunkt und nichts dahinter.Introduce tu clave API en `api_key` y deja `leave_empty` vacío. La API usa basic auth, con tu clave en lugar del nombre de usuario. En curl se escribe como `-u TU_CLAVE:`, con dos puntos y nada después.

## Request

### Path parameters

- `campaign_id` (string, required) — Het id van de campagne. Dat vind je in het antwoord van [Alle campagnes opvragen](/campagnes/alle-campagnes-opvragen).The id of the campaign. You find it in the response of [Get all campaigns](/campagnes/alle-campagnes-opvragen).Die ID der Kampagne. Du findest sie in der Antwort von [Alle Kampagnen abrufen](/campagnes/alle-campagnes-opvragen).El id de la campaña. Lo encuentras en la respuesta de [Obtener todas las campañas](/campagnes/alle-campagnes-opvragen).

### Body (application/x-www-form-urlencoded)

This endpoint expects an object.

- `email` (string, required) — Het e-mailadres waarnaar de test verzonden moet worden.The email address to which the test should be sent.Die E-Mail-Adresse, an die der Test versendet werden soll.La dirección de correo electrónico a la que se debe enviar la prueba.

## Response

### 200

De aanvraag is gelukt.The request succeeded.Die Anfrage war erfolgreich.La solicitud se ha realizado correctamente.

- `campaign` (Campaign, optional) — Het campaign-objectThe campaign objectDas campaign-ObjektEl objeto campaign

## Errors

### 400 Bad Request Error

De aanvraag klopt niet. Het antwoord bevat een `type`, een `message` en meestal een `code` en de `parameter` die de fout veroorzaakte. Een object dat niet bestaat valt ook hieronder, met code 203.The request is not valid. The response contains a `type`, a `message` and usually a `code` plus the `parameter` that caused it. An object that does not exist also falls under this, with code 203.Die Anfrage stimmt nicht. Die Antwort enthält einen `type`, eine `message` und meistens einen `code` und den `parameter`, der den Fehler verursacht hat. Ein Objekt, das nicht existiert, fällt ebenfalls hierunter, mit Code 203.La solicitud no es correcta. La respuesta contiene un `type`, un `message` y normalmente un `code` y el `parameter` que ha causado el error. Un objeto que no existe también entra aquí, con el código 203.

- `error` (ErrorError, optional)

### 401 Unauthorized Error

Er is geen geldige API-sleutel meegestuurd, of dit endpoint staat niet aan voor dit account.No valid API key was provided, or this endpoint is not enabled for this account.Es wurde kein gültiger API-Schlüssel mitgeschickt, oder dieser Endpunkt ist für dieses Konto nicht aktiv.No se ha enviado una clave API válida, o este endpoint no está activado para esta cuenta.

- `error` (ErrorError, optional)

### 429 Too Many Requests Error

Je hebt te veel aanvragen in een minuut gedaan. De header `Retry-After` vertelt na hoeveel seconden het weer mag.Too many requests in one minute. The `Retry-After` header tells you how many seconds to wait.Du hast zu viele Anfragen in einer Minute gestellt. Der Header `Retry-After` sagt, nach wie vielen Sekunden es wieder erlaubt ist.Has hecho demasiadas solicitudes en un minuto. La cabecera `Retry-After` indica después de cuántos segundos puedes volver a intentarlo.

- `error` (ErrorError, optional)

## Types

### Campaign

Het campaign-objectThe campaign objectDas campaign-ObjektEl objeto campaign

- `account_id` (string, optional) — Het id van dit account.The ID of this accountDie ID dieses Kontos.El ID de esta cuenta.
- `campaign_id` (string, optional) — Het id van de campagne.The ID of this campaignDie ID der Kampagne.El ID de la campaña.
- `timezone` (string, optional) — De tijdzone van het account voor datum- en tijdvelden.The account timezone used for datetime fieldsDie Zeitzone des Kontos für Datums- und Zeitfelder.La zona horaria de la cuenta para los campos de fecha y hora.
- `created` (string, optional) — Moment van aanmaken.Date and time of creationZeitpunkt der Erstellung.Momento de creación.
- `created_iso` (string, optional, nullable) — Moment van aanmaken in ISO-formaat.Date and time of creation in ISO formatZeitpunkt der Erstellung im ISO-Format.Momento de creación en formato ISO.
- `modified` (string, optional, nullable) — Moment van laatste wijziging.Date and time of last modification madeZeitpunkt der letzten Änderung.Momento de la última modificación.
- `modified_iso` (string, optional, nullable) — Moment van laatste wijziging in ISO-formaat.Date and time of last modification in ISO formatZeitpunkt der letzten Änderung im ISO-Format.Momento de la última modificación en formato ISO.
- `type` (string, optional) — Het soort campagne. Op dit moment is `regular` de enige mogelijkheid.The type of campaign (currently only possible: regular)Die Art der Kampagne. Zurzeit ist `regular` die einzige Möglichkeit.El tipo de campaña. Por ahora `regular` es la única posibilidad.
- `delivery_requested` (string, optional, nullable) — Het moment waarop verzenden is aangevraagd.When to sendDer Zeitpunkt, zu dem der Versand angefordert wurde.El momento en que se solicitó el envío.
- `delivery_requested_iso` (string, optional, nullable) — Het moment waarop verzenden is aangevraagd, in ISO-formaat.When to send in ISO formatDer Zeitpunkt, zu dem der Versand angefordert wurde, im ISO-Format.El momento en que se solicitó el envío, en formato ISO.
- `delivery_started` (string, optional, nullable) — Het moment waarop de verzending begon.Start of last transmissionDer Zeitpunkt, zu dem der Versand begann.El momento en que empezó el envío.
- `delivery_started_iso` (string, optional, nullable) — Het moment waarop de verzending begon, in ISO-formaat.Start of last transmission in ISO formatDer Zeitpunkt, zu dem der Versand begann, im ISO-Format.El momento en que empezó el envío, en formato ISO.
- `delivery_ended` (string, optional, nullable) — Het moment waarop de verzending klaar was.End of last transmissionDer Zeitpunkt, zu dem der Versand fertig war.El momento en que el envío terminó.
- `delivery_ended_iso` (string, optional, nullable) — Het moment waarop de verzending klaar was, in ISO-formaat.End of last transmission in ISO formatDer Zeitpunkt, zu dem der Versand fertig war, im ISO-Format.El momento en que el envío terminó, en formato ISO.
- `name` (string, optional) — De interne naam van de campagne, die ontvangers niet zien.Internal name of campaignDer interne Name der Kampagne, den Empfänger nicht sehen.El nombre interno de la campaña, que los destinatarios no ven.
- `subject` (string, optional) — De onderwerpregel van de campagne.Subject lineDie Betreffzeile der Kampagne.La línea de asunto de la campaña.
- `from` (CampaignFrom, optional) — De afzender, met naam en e-mailadres.Sender (name en email address)Der Absender, mit Name und E-Mail-Adresse.El remitente, con nombre y dirección de correo electrónico.
- `reply_to` (string, optional) — Het e-mailadres waarop antwoorden binnenkomen.Email address for receiving repliesDie E-Mail-Adresse, an der Antworten eingehen.La dirección de correo electrónico donde se reciben las respuestas.
- `list_ids` (CampaignListIds, optional) — De lijsten en segmenten die de campagne ontvangen.Linked lists and segmentsDie Listen und Segmente, die die Kampagne erhalten.Las listas y los segmentos que reciben la campaña.
- `stats` (CampaignStats, optional) — De gekoppelde webstatistieken, zoals Google Analytics.Linked web statisticsDie verknüpften Webstatistiken, wie Google Analytics.Las estadísticas web vinculadas, como Google Analytics.
- `web` (string, optional) — De link naar de webversie van deze campagne.URL to web versionDer Link zur Webversion dieser Kampagne.El enlace a la versión web de esta campaña.
- `screenshot` (CampaignScreenshot, optional) — Afbeeldingen van de campagne, in twee formaten.Screenshots of campaignBilder der Kampagne, in zwei Formaten.Imágenes de la campaña, en dos tamaños.
- `previewtext` (string, optional) — De preheader die na de onderwerpregel in de inbox getoond wordt.The preheader shown after the subject line in the inbox.Der Preheader, der nach der Betreffzeile im Posteingang angezeigt wird.El preheader que se muestra después de la línea de asunto en la bandeja de entrada.

### ErrorError

- `type` (enum, required)
  - Allowed values: `invalid_request`, `invalid_input`, `internal`
- `message` (string, required)
- `code` (integer, optional)
- `parameter` (string, optional)

### CampaignFrom

De afzender, met naam en e-mailadres.Sender (name en email address)Der Absender, mit Name und E-Mail-Adresse.El remitente, con nombre y dirección de correo electrónico.

### CampaignListIds

De lijsten en segmenten die de campagne ontvangen.Linked lists and segmentsDie Listen und Segmente, die die Kampagne erhalten.Las listas y los segmentos que reciben la campaña.

### CampaignStats

De gekoppelde webstatistieken, zoals Google Analytics.Linked web statisticsDie verknüpften Webstatistiken, wie Google Analytics.Las estadísticas web vinculadas, como Google Analytics.

### CampaignScreenshot

Afbeeldingen van de campagne, in twee formaten.Screenshots of campaignBilder der Kampagne, in zwei Formaten.Imágenes de la campaña, en dos tamaños.

## Examples

**Request**

```json
{
  "email": "relatie@example.net"
}
```

**Response**

```json
{
  "campaign": {
    "account_id": "wFiUS4HL4e",
    "campaign_id": "njhgaf61ye",
    "timezone": "Europe/Amsterdam",
    "created": "string",
    "created_iso": "string",
    "modified": "string",
    "modified_iso": "string",
    "type": "string",
    "delivery_requested": "string",
    "delivery_requested_iso": "string",
    "delivery_started": "string",
    "delivery_started_iso": "string",
    "delivery_ended": "string",
    "delivery_ended_iso": "string",
    "name": "Nieuwsbrief",
    "subject": "string",
    "from": {},
    "reply_to": "string",
    "list_ids": {},
    "stats": {},
    "web": "string",
    "screenshot": {},
    "previewtext": "string"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail"

payload = ""
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}

response = requests.post(url, data=payload, headers=headers, auth=("<api_key>", "<leave_empty>"))

print(response.json())
```

```javascript
const url = 'https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail';
const credentials = btoa("<api_key>:<leave_empty>");

const options = {
  method: 'POST',
  headers: {
    Authorization: `Basic ${credentials}`,
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams('')
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail"

	req, _ := http.NewRequest("POST", url, nil)

	req.SetBasicAuth("<api_key>", "<leave_empty>")
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.basic_auth("<api_key>", "<leave_empty>")
request["Content-Type"] = 'application/x-www-form-urlencoded'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail")
  .basicAuth("<api_key>", "<leave_empty>")
  .header("Content-Type", "application/x-www-form-urlencoded")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail', [
  'form_params' => null,
  'headers' => [
    'Content-Type' => 'application/x-www-form-urlencoded',
  ],
    'auth' => ['<api_key>', '<leave_empty>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail");
client.Authenticator = new HttpBasicAuthenticator("<api_key>", "<leave_empty>");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<api_key>:<leave_empty>".utf8).base64EncodedString()

let headers = [
  "Authorization": "Basic \(credentials)",
  "Content-Type": "application/x-www-form-urlencoded"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.laposta.nl/v2/campaign/njhgaf61ye/action/testmail")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```