Code Example

$curl = curl_init();

$endpoint = '{{domain}}/wp-json/wclm/v3/create-license-key';
$parameters = array(
        // Required, JSON Array of license keys
        'license_keys' => '["FFFF-FFFF-FFFF-FFFF", "FFFF-FFFF-FFFF-1234"]',

        // Required, WooCommerce Product ID
        'product_id' => '236',

        // Optional, WooCommerce Variation  ID, Default 0. 0 = Product has no variations.
        'variation_id' => '0',

        // Optional, License owner first name
        'owner_first_name' => 'Test',

        // Optional, License owner last name
        'owner_last_name' => 'Test',

        // Optional, License owner email
        'owner_email_address' => 'contact@domain.ltd',

        // Optional, Default 1
        'delivery_limit' => '1',

        // Optional, Default 1
        'remaining_delivery_times' => '1',

        // Optional, Default 1
        'activation_limit' => '3',

        // Optional, Default 1
        'remaining_activations' => '3',

        // Optional, Format YYYY-MM-DD, Default null
        'activation_date' => '2021-04-12',

        // Optional, Format YYYY-MM-DD, Default null
        'expiration_date' => '2022-04-12',

        // Optional, Format YYYY-MM-DD, Default null
        'sold_date' => '2021-04-12',

        // Optional, Default 0
        'validity_days' => '365',

        // Optional, Default 0
        'order_id' => '23',

        // Optional, Default available
        'license_status' => 'sold'
    );

curl_setopt_array($curl, array(
     CURLOPT_URL => $endpoint,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_MAXREDIRS => 10,
     CURLOPT_TIMEOUT => 0,
     CURLOPT_FOLLOWLOCATION => true,
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
     CURLOPT_CUSTOMREQUEST => 'POST',
     CURLOPT_POSTFIELDS => $parameters,
     CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
     CURLOPT_SSL_VERIFYPEER => false,
     CURLOPT_HTTPHEADER => array(
         // Authenticated user token
         'Authorization: Bearer {{User Token}}'
     )
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

API Responses

{
    "response": {
        "result": "error",
        "code": "960",
        "message": "Invalid product ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "961",
        "message": "Invalid variation ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "980",
        "message": "Invalid order ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "981",
        "message": "The order doesn't have an item with the given product ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "982",
        "message": "The order doesn't have an item with the given variation ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "success",
        "code": "962",
        "message": "License key(s) created",
        "data": {
            "total": 2,
            "added": 2,
            "duplicate": 0,
            "duplicates_allowed": false
        },
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}

WordPress’s built-in REST API responses.

{
    "code": "rest_forbidden",
    "message": "Sorry, you are not allowed to do that.",
    "data": {
        "status": 403
    }
}