B

Blenddoit License API

Professional public documentation for software license verification

Overview Endpoint Response First Parameters Integration Guide Success Response Error Responses Examples Try API Postman Renewal
Public API Documentation

Verify a software license, validate the installation domain, and guide the customer with a clean response flow.

This API checks whether a license key is valid for a selected software product and whether that license is allowed for the submitted domain. The API always returns a JSON response so your application can handle success, expiration, invalid input, and renewal flow consistently.

POST https://apiserver.blenddoit.com/api/verify-license.php

Overview

What this API does

It verifies a submitted license key for a selected software product and confirms whether the submitted domain matches the registered installation domain.

What your software should do

Your software should send the required fields, read the JSON response, allow access on success, and show the returned message or renewal action on failure.

This documentation is intentionally user-facing and professional. It explains how to call the API and how to handle the returned response in your own software.

Endpoint

Method POST
URL https://apiserver.blenddoit.com/api/verify-license.php
Request Type application/x-www-form-urlencoded
Response Type application/json

Response First

Before integrating the API into your software, first understand what your application will receive after making the request.

Successful response example

{
  "status": "success",
  "message": "License verified successfully.",
  "data": {
    "software_name": "Example Product",
    "license_key": "ABCDEF1234567890",
    "domain": "example.com",
    "status": "active",
    "expiry_date": "2026-05-01",
    "source": "license-system",
    "activated_at": "2026-04-01 10:20:00",
    "last_verified_at": "2026-04-01 10:25:12",
    "current_plan_id": 1,
    "current_plan_name": "Monthly Plan",
    "current_duration_value": 1,
    "current_duration_unit": "month",
    "renewed_at": null
  }
}

Expired response example

{
  "status": "error",
  "message": "License has expired, please renew now.",
  "data": {
    "status": "expired",
    "expiry_date": "2026-03-01",
    "payment_page_url": "https://apiserver.blenddoit.com/renew.php?software_id=1",
    "current_plan_id": 1,
    "current_plan_name": "Monthly Plan",
    "current_duration_value": 1,
    "current_duration_unit": "month"
  }
}
Your application should read status first, show message to the customer, and then use the data object for product logic such as access control, renewal, or domain mismatch handling.

Request Parameters

Send the following fields in the request body.

Parameter Type Required Description
software_id Integer Yes The ID of the software product that the customer is trying to activate or verify.
license_key String Yes The license key provided to the customer.
domain String Yes The installation domain, for example example.com.

Accepted domain input

The API accepts common domain formats and normalizes them before verification.

  • example.com
  • www.example.com
  • https://example.com
  • http://www.example.com/path

Integration Guide

Follow this order so your software integration stays simple, user-friendly, and predictable.

Step 1 — Collect the required values Ask the customer for the license key and detect or collect the installation domain. Your software must also know its own software_id.
Step 2 — Send a POST request Send software_id, license_key, and domain to the API using application/x-www-form-urlencoded.
Step 3 — Read the JSON response Always parse the returned JSON and check the status field first.
Step 4 — If status is success, allow access If the API returns status: "success", your software can proceed with activation, access, or normal product usage.
Step 5 — If status is error, show the returned message If the API returns status: "error", show the message to the user and use the data object for details such as domain mismatch or renewal action.
Step 6 — Handle expired licenses properly If the response says the license has expired, read payment_page_url from the response and redirect the customer to the renewal page.
Step 7 — Keep your software logic clean Do not guess the license state on the client side. Always rely on the API response fields that are documented on this page.

Recommended software behavior

  • Show a loading state while verification is in progress.
  • Store the verified result only after a successful response.
  • Show user-friendly error messages directly from the API response.
  • Redirect to renewal only when the API explicitly returns renewal information.

Success Response

When the license is valid and active, the API returns a success response like this:

{
  "status": "success",
  "message": "License verified successfully.",
  "data": {
    "software_name": "Example Product",
    "license_key": "ABCDEF1234567890",
    "domain": "example.com",
    "status": "active",
    "expiry_date": "2026-05-01",
    "source": "license-system",
    "activated_at": "2026-04-01 10:20:00",
    "last_verified_at": "2026-04-01 10:25:12",
    "current_plan_id": 1,
    "current_plan_name": "Monthly Plan",
    "current_duration_value": 1,
    "current_duration_unit": "month",
    "renewed_at": null
  }
}

Returned data fields

Field Meaning
software_name Name of the software product.
license_key The verified license key.
domain The registered or verified installation domain.
status Current license state, normally active on success.
expiry_date The date until which the license remains valid.
source Internal reference label from the verification system. Client applications usually do not need to use this field for UI logic.
activated_at License activation time, if available.
last_verified_at Last successful verification timestamp.
current_plan_id, current_plan_name, current_duration_value, current_duration_unit Current plan or subscription details linked to the license.
renewed_at Last renewal time, if available.

Error Responses

If verification fails, the API returns a clear error message and additional data when needed.

Missing required parameters

{
  "status": "error",
  "message": "Missing required parameters.",
  "data": []
}

Invalid domain format

{
  "status": "error",
  "message": "Invalid domain format.",
  "data": []
}

Invalid software ID

{
  "status": "error",
  "message": "Invalid software ID.",
  "data": []
}

Invalid license format

{
  "status": "error",
  "message": "Invalid license format.",
  "data": []
}

License not registered for this domain

{
  "status": "error",
  "message": "License is not registered for this domain.",
  "data": {
    "registered_domain": "oldsite.com",
    "requested_domain": "newsite.com"
  }
}

License not active

{
  "status": "error",
  "message": "License is not active.",
  "data": {
    "status": "inactive"
  }
}

Expired license

{
  "status": "error",
  "message": "License has expired, please renew now.",
  "data": {
    "status": "expired",
    "expiry_date": "2026-03-01",
    "payment_page_url": "https://apiserver.blenddoit.com/renew.php?software_id=1",
    "current_plan_id": 1,
    "current_plan_name": "Monthly Plan",
    "current_duration_value": 1,
    "current_duration_unit": "month"
  }
}

General server-side failure

{
  "status": "error",
  "message": "Server error.",
  "data": []
}
Best practice: your software should always depend on status and message first. Then it should use the data object only when extra information is required.

Request Examples

cURL Example

curl -X POST "https://apiserver.blenddoit.com/api/verify-license.php" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "software_id=1" \
  -d "license_key=ABCDEF1234567890" \
  -d "domain=example.com"

JavaScript Fetch Example

fetch('https://apiserver.blenddoit.com/api/verify-license.php', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams({
    software_id: '1',
    license_key: 'ABCDEF1234567890',
    domain: 'example.com'
  })
})
.then(res => res.json())
.then(data => {
  if (data.status === 'success') {
    console.log('Verified:', data.data);
  } else {
    console.log('Verification failed:', data.message, data.data);
  }
})
.catch(err => {
  console.error('Request failed:', err);
});

PHP cURL Example

<?php
$apiUrl = 'https://apiserver.blenddoit.com/api/verify-license.php';

$postData = [
    'software_id' => 1,
    'license_key' => 'ABCDEF1234567890',
    'domain'      => 'example.com'
];

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($postData),
    CURLOPT_TIMEOUT => 20
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

if (($result['status'] ?? '') === 'success') {
    echo 'License verified successfully';
} else {
    echo $result['message'] ?? 'Verification failed';
}

Try API

Use the form below to test the endpoint directly and preview the JSON response live.

Live Response Preview Waiting for request...
{
  "status": "info",
  "message": "Send a request to preview the API response.",
  "data": []
}

Postman Collection

Use the buttons below to download or copy a ready-to-import Postman collection for this API.

{
  "info": {
    "name": "Blenddoit License Verification API",
    "_postman_id": "blenddoit-license-api-collection",
    "description": "Postman collection for Blenddoit license verification endpoint.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Verify License",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            { "key": "software_id", "value": "1", "type": "text" },
            { "key": "license_key", "value": "ABCDEF1234567890", "type": "text" },
            { "key": "domain", "value": "example.com", "type": "text" }
          ]
        },
        "url": {
          "raw": "https://apiserver.blenddoit.com/api/verify-license.php",
          "protocol": "https",
          "host": ["apiserver", "blenddoit", "com"],
          "path": ["api", "verify-license.php"]
        }
      },
      "response": []
    }
  ]
}

Renewal Flow

If a license has expired, the API returns a renewal-ready response. Your software should use that response to guide the customer to payment or renewal.

When renewal is required

If the returned message says the license has expired, your software should stop activation and move the customer to the renewal step.

What your software should do

Read the payment_page_url field from the response and redirect the customer to that page.

Important Notes

  • Always send all required fields: software_id, license_key, and domain.
  • The API always returns JSON with status, message, and data.
  • Your software should rely on the API response instead of trying to guess license state locally.
  • Use the response message for user-facing notifications.
  • On expired licenses, your software should present or redirect to the renewal flow immediately.
  • On domain mismatch, show the returned message clearly to the customer.