Skip to main content
Version: development

API reference

This page contains the technical reference for the embedded dashboard endpoints. It is published so that you can assess the scope of the integration before implementing it.

Integrator credentials are required

These endpoints only respond to integrator keys issued by Lawwwing after the onboarding process. Request access to obtain yours.

Base URL​

EnvironmentBase URL
Productionhttps://api.lawwwing.com/
Staginghttps://api.staging.lawwwing.com/

Authentication​

Every request is authenticated through the Authorization header with your integrator key.

HeaderValue
AuthorizationIntegrator-Key {your_api_key}
Content-Typeapplication/json
Protect your key

The integrator key identifies your organisation and allows subscriptions to be created and cancelled. Use it exclusively from your backend and never from the browser. If it is missing or invalid, the API responds with 401 Unauthorized.


Endpoints​

Check connectivity​

GET /api/integrator/ping/

Verifies that the API is reachable and that your credentials are valid.

Example​

curl -X GET "https://api.lawwwing.com/api/integrator/ping/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"message": "pong"
}

1. Onboard a website​

POST /api/integrators/sites/

Registers your customer's domain in Lawwwing.

Parameters​

FieldTypeRequiredDescription
urlstring (URL)βœ…URL of the website to create

Example​

curl -X POST "https://api.lawwwing.com/api/integrators/sites/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json" \
-d '{
"url": "client.example.com"
}'

Response​

{
"site": "fa514048-ac51-4677-b16d-9e849c5406c5",
"scheme": "https",
"fqdn": "client.example.com",
"subdomain": "client",
"domain": "example",
"suffix": "com",
"registered_domain": "example.com",
"path": ""
}
Website identifier

The site field is the unique identifier of the website (site_id). Store it alongside your customer record: you will need it in every other operation.


2. Retrieve a website​

GET /api/integrators/sites/{site_id}/

Retrieves the details of a website from its identifier.

Example​

curl -X GET "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"site": "fa514048-ac51-4677-b16d-9e849c5406c5",
"scheme": "https",
"fqdn": "client.example.com",
"subdomain": "client",
"domain": "example",
"suffix": "com",
"registered_domain": "example.com",
"path": ""
}

3. Create a subscription​

POST /api/integrators/sites/{site_id}/subscription/

Activates the service on the website with the given plan and modules.

Parameters​

FieldTypeRequiredDefaultDescription
tierstringβœ…No defaultPlan to activate: starter, growth, professional or comfort
intervalstring❌monthlyBilling frequency: monthly or annually
modulesarray❌[]Additional modules, in the format { "name": string, "quantity": number }

Available plans (tier)​

PlanCustomer profile
starterSimple websites with basic compliance needs.
growthCorporate websites and growing online stores.
professionalDemanding or multilingual projects. Includes every available language.
comfortHigh-end managed plan. Includes every module and a monthly allowance of AI Sentinel credits.

You can review the features and pricing of each plan at lawwwing.com/precios.

Available modules (modules)​

Modules are optional capabilities added to the website subscription as extra line items. Each element of the array requires two fields:

FieldTypeRequiredDescription
namestringβœ…Module identifier, as listed in the table below.
quantityinteger β‰₯ 1βœ…Number of units of the module to purchase.
nameModuleWhat it enablesMeaning of quantity
extra_languageAdditional languageAdds one more language to the consent banner and the legal documents, and enables the language selector in the dashboard.Number of additional languages on top of those included in the plan. For example, 2 adds two languages.
accessibility_pluginAccessibility pluginEnables the accessibility widget on the customer's website.Always 1, as it is an activation module.
ai_sentinel_moduleAI SentinelEnables AI Sentinel and adds a monthly allowance of analysis credits.Number of modules purchased. For example, 2 adds two monthly credit packs.
How to combine the plan and the modules
  • Only send the modules the customer has purchased. If there are none, omit the modules field or send [].
  • The professional plan already includes every language, so you should not add extra_language.
  • The comfort plan already includes every module, so you normally do not need to send modules.
  • Modules are billed with the same interval as the plan. You cannot combine an annual plan with monthly modules.
  • The same name must appear only once in the array. To purchase several units, use quantity.
Data validation

If you send a name that is not in the table, a quantity lower than 1, or an unsupported tier or interval, the API responds with 400 Bad Request indicating the affected field.

Not sure which combination to offer your customers? Book a call with our team.

Example​

curl -X POST "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/subscription/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json" \
-d '{
"tier": "growth",
"interval": "monthly",
"modules": [
{"name": "extra_language", "quantity": 2},
{"name": "accessibility_plugin", "quantity": 1}
]
}'

Response​

{
"message": "Subscription created"
}
info

The website must not have an active subscription in order to create a new one.


4. Retrieve the subscription​

GET /api/integrators/sites/{site_id}/subscription/

Retrieves the status and terms of the website's subscription.

Example​

curl -X GET "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/subscription/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"status": "active",
"tier": "growth",
"interval": "annually",
"modules": [
{"name": "extra_language", "quantity": 2},
{"name": "accessibility_plugin", "quantity": 1}
],
"valid_until": "2027-01-01T14:38:11Z",
"will_be_renewed": true
}
FieldDescription
statusSubscription status, for example active or canceled.
tierPlan currently purchased.
intervalBilling frequency.
modulesActive modules, using the same name and quantity structure used when creating the subscription.
valid_untilDate until which the service is guaranteed.
will_be_renewedfalse if automatic renewal has been cancelled.

5. Cancel the subscription​

POST /api/integrators/sites/{site_id}/subscription/cancel/

Cancels the renewal of the active subscription.

Example​

curl -X POST "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/subscription/cancel/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"message": "Subscription canceled"
}
Cancellation is not immediate

The subscription stays active until the end of the current billing period. Until then you can reactivate it.


6. Reactivate the subscription​

POST /api/integrators/sites/{site_id}/subscription/reactivate/

Reverts a cancellation and restores automatic renewal.

Example​

curl -X POST "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/subscription/reactivate/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"message": "Subscription reactivated"
}

7. Terminate the subscription​

DELETE /api/integrators/sites/{site_id}/subscription/

Permanently removes the website's subscription.

Example​

curl -X DELETE "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/subscription/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"message": "Subscription terminated"
}
Irreversible action

The website will stop being active immediately. To provide the service again you will need to create a new subscription.


8. Get the embedded dashboard session​

GET /api/integrators/sites/{site_id}/embed/

Generates the session URL used to load the Lawwwing dashboard inside an iframe.

Example​

curl -X GET "https://api.lawwwing.com/api/integrators/sites/fa514048-ac51-4677-b16d-9e849c5406c5/embed/" \
-H "Authorization: Integrator-Key {your_api_key}" \
-H "Content-Type: application/json"

Response​

{
"site": "61e21ed7-2770-4fa8-baad-53564ee7651d",
"embed_url": "https://app.lawwwing.com/d/61e21ed7-2770-4fa8-baad-53564ee7651d/?embed=1&token=cd99d2156453544a7c9b6eae13bff3380d4a35ae6a891632a4ff29bc7c2efd83",
"embed_token": "cd99d2156453544a7c9b6eae13bff3380d4a35ae6a891632a4ff29bc7c2efd83"
}
Tokens have limited validity

Tokens expire for security reasons. Request a new embed_url on every dashboard load and do not store or reuse the token.

Using embed_url

The embed_url field is the value you must assign to the src attribute of the iframe. See the integration guide for the recommended markup.


Response codes​

CodeMeaning
200 / 201The operation completed successfully.
400The data sent is not valid. Check the parameters.
401The Authorization header is missing or the key is not valid.
404The website or the subscription does not exist for your integrator account.

Ready to integrate?​

πŸ”‘ Request integrator credentials