SCRIPTYLABS
HostingDomainsSolutionsFeaturesAuctionsServicesPricingAboutContact
Log inGet started

Getting started

  • Introduction
  • Authentication
  • Errors

Domains

  • GETList domains
  • GETGet a domain
  • PATCHTurn auto-renewal on or off
  • PATCHLock or unlock a domain
  • PUTUpdate nameservers
  • PUTGet a transfer code

DNS records

  • GETList records
  • POSTCreate a record
  • PUTUpdate a record
  • DELDelete a record
  • DELDelete several records
  • PATCHReset to defaults

Search and pricing

  • GETCheck one domain
  • GETSearch other extensions
  • GETList extensions and prices

API reference

ScriptyLabs API

Manage your .rw domains and DNS records from your own code. A REST API with JSON in and out, authenticated with a key from your dashboard.

Get an API keyBase URLhttps://api.scriptylabs.cloud/v1
  1. 01

    Create a key

    Dashboard → API → Create key. Copy it once; it isn't shown again.

  2. 02

    Send the header

    Add x-api-key to every request, from your server only.

  3. 03

    Call an endpoint

    Start with List domains, then manage DNS records.

Authentication

Send your key in the x-api-key header with every request. Create, rotate and delete keys under API in your dashboard.

Treat a key like a password: keep it on your server, never in a website or mobile app, and rotate it from the dashboard if it leaks.
Authenticated request
curl "https://api.scriptylabs.cloud/v1/domains" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"

Errors

Failed requests return a non-2xx status with a JSON body that explains what went wrong.

401
The API key is missing or invalid.
404
The endpoint or the resource doesn't exist.
401 Unauthorized
{
  "message": "Invalid API key.",
  "statusCode": 401,
  "code": "Unauthorized",
  "success": false
}

Reference

Domains

Read your domains and change their renewal, lock and nameserver settings.

List domains

GET/domains

Returns the domains your API key can access, newest first.

curl "https://api.scriptylabs.cloud/v1/domains" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
Response200
{
  "data": [
    {
      "id": "6f1c…",
      "name": "yourbusiness.rw",
      "status": "active",
      "registrationDate": "2026-10-30T09:12:00.000Z",
      "expirationDate": "2027-10-30T09:12:00.000Z",
      "autoRenewal": true,
      "isLocked": true,
      "nameservers": ["ns1.scriptylabs.com", "ns2.scriptylabs.com"],
      "registrar": "scriptylabs",
      "dnsProvider": "scriptylabs"
    }
  ],
  "meta": { "total": 1, "page": 1, "limit": 20, "totalPages": 1 }
}

Get a domain

GET/domains/{name}

Returns one domain by its full name.

Path parameters

  • namestringrequired

    Full domain name, e.g. yourbusiness.rw.

curl "https://api.scriptylabs.cloud/v1/domains/yourbusiness.rw" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
Response200
{
  "data": {
    "id": "6f1c…",
    "name": "yourbusiness.rw",
    "status": "active",
    "expirationDate": "2027-10-30T09:12:00.000Z",
    "autoRenewal": true,
    "isLocked": true,
    "nameservers": ["ns1.scriptylabs.com", "ns2.scriptylabs.com"]
  }
}

Turn auto-renewal on or off

PATCH/domains/{domainId}/auto-renew

Controls whether the domain renews automatically before it expires.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

Body

  • enabledbooleanrequired

    true to renew automatically.

curl -X PATCH "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/auto-renew" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true }'
2xxReturned when the change is saved.

Lock or unlock a domain

PATCH/domains/{domainId}/lock

A locked domain cannot be transferred to another registrar.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

Body

  • lockedbooleanrequired

    true to lock the domain.

curl -X PATCH "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/lock" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "locked": true }'
2xxReturned when the change is saved.

Update nameservers

PUT/domains/{domainId}/nameservers

Replaces the domain's nameservers. Pointing away from ns1/ns2.scriptylabs.com means ScriptyLabs no longer manages its DNS records.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

Body

  • nameserversstring[]required

    At least two nameserver hostnames.

curl -X PUT "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/nameservers" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "nameservers": ["ns1.scriptylabs.com", "ns2.scriptylabs.com"] }'
2xxReturned when the change is saved.

Get a transfer code

PUT/domains/{domainId}/authorization-code

Generates the authorization (EPP) code needed to transfer the domain to another registrar.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

curl -X PUT "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/authorization-code" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
Response200
{ "data": { "code": "Xk7#p2…" } }

Reference

DNS records

Manage records for domains on ScriptyLabs DNS. Changes go live worldwide within about 5 minutes.

List records

GET/domains/{domainId}/records

Returns the domain's DNS records, paginated.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

Query parameters

  • pageintegeroptional

    Page number, from 1.

  • limitintegeroptional

    Records per page.

  • typestringoptional

    Only return records of this type, e.g. MX.

curl "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/records" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
Response200
{
  "data": [
    {
      "id": "r_91a…",
      "domainId": "6f1c…",
      "type": "CNAME",
      "host": "www",
      "value": "yourbusiness.rw",
      "ttl": 3600,
      "priority": null
    }
  ],
  "meta": { "total": 1, "page": 1, "limit": 15, "totalPages": 1 }
}

Create a record

POST/domains/{domainId}/records

Adds a DNS record to the domain.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

Body

  • type"A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS"required

    Record type.

  • hoststringrequired

    Hostname. Use @ for the root of the domain.

  • valuestringrequired

    Record value, up to 4,000 bytes. A takes an IPv4 address, AAAA an IPv6 address.

  • ttlintegerrequired

    Time to live in seconds, 30 to 604,800.

  • priorityintegeroptional

    0 to 65,535. Required for MX records.

curl -X POST "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/records" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "type": "CNAME", "host": "www", "value": "yourbusiness.rw", "ttl": 3600 }'
2xxReturned when the change is saved.

Update a record

PUT/domains/records/{recordId}

Replaces a record with the values you send.

Path parameters

  • recordIdstringrequired

    The record's id.

Body

  • type"A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS"required

    Record type.

  • hoststringrequired

    Hostname. Use @ for the root of the domain.

  • valuestringrequired

    Record value, up to 4,000 bytes. A takes an IPv4 address, AAAA an IPv6 address.

  • ttlintegerrequired

    Time to live in seconds, 30 to 604,800.

  • priorityintegeroptional

    0 to 65,535. Required for MX records.

curl -X PUT "https://api.scriptylabs.cloud/v1/domains/records/RECORD_ID" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "type": "MX", "host": "@", "value": "mail.yourbusiness.rw", "ttl": 3600, "priority": 10 }'
2xxReturned when the change is saved.

Delete a record

DELETE/domains/records/{recordId}

Removes one record.

Path parameters

  • recordIdstringrequired

    The record's id.

curl -X DELETE "https://api.scriptylabs.cloud/v1/domains/records/RECORD_ID" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
2xxReturned when the change is saved.

Delete several records

DELETE/domains/records

Removes several records in one request.

Body

  • idsstring[]required

    Ids of the records to delete.

curl -X DELETE "https://api.scriptylabs.cloud/v1/domains/records" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "ids": ["r_91a…", "r_4be…"] }'
2xxReturned when the change is saved.

Reset to defaults

PATCH/domains/{domainId}/records/reset

Replaces all of the domain's records with the ScriptyLabs defaults.

Path parameters

  • domainIdstringrequired

    The domain's id, as returned by List domains.

curl -X PATCH "https://api.scriptylabs.cloud/v1/domains/DOMAIN_ID/records/reset" \
  -H "x-api-key: $SCRIPTYLABS_API_KEY"
2xxReturned when the change is saved.

Reference

Search and pricing

Check availability and prices for .rw names. These endpoints don't need an API key.

Check one domain

GET/domains/search/singleNo key needed

Availability and price of an exact name.

Query parameters

  • domainstringrequired

    Name to check, e.g. yourbusiness.rw.

curl "https://api.scriptylabs.cloud/v1/domains/search/single?domain=yourbusiness.rw"
Response200
{
  "data": {
    "domain": "yourbusiness.rw",
    "tld": ".rw",
    "available": true,
    "price": 14900,
    "renewalPrice": 14900,
    "marketplace": null,
    "description": "National domain for Rwanda",
    "productId": "d18258bd-…",
    "category": "PERSONAL"
  },
  "success": true,
  "message": "success"
}

Search other extensions

GET/domains/searchNo key needed

The same name across the other .rw extensions, with availability and prices.

Query parameters

  • domainstringrequired

    Name to search, e.g. yourbusiness.

curl "https://api.scriptylabs.cloud/v1/domains/search?domain=yourbusiness.rw"
Response200
{
  "data": [
    { "domain": "yourbusiness.co.rw", "tld": ".co.rw", "available": true, "price": 9900, "renewalPrice": 9900 }
  ]
}

List extensions and prices

GET/domains/tldsNo key needed

Every .rw extension with its registration, renewal, transfer and restoration price in RWF.

curl "https://api.scriptylabs.cloud/v1/domains/tlds"
Response200
{
  "data": [
    {
      "name": ".rw",
      "price": 14900,
      "renewalPrice": 14900,
      "restorationPrice": 5500,
      "transferPrice": 3000,
      "productId": "d18258bd-…",
      "category": "PERSONAL",
      "description": "Rwanda .rw ccTLD"
    }
  ]
}
SCRIPTYLABS

Domains, hosting and servers for Rwandan businesses — registered, deployed and managed in one place.

Create an account

Product

  • Features
  • Pricing
  • Domains
  • Web hosting
  • Auctions
  • WHOIS lookup
  • API docs

Company

  • About
  • Services
  • Solutions
  • Contact

Legal

  • Terms of Service
  • Privacy Policy
  • Refund Policy
  • Acceptable Use
  • All policies

Contact

  • support@scriptylabs.com
  • +250 780 226 666
  • Kigali, Rwanda
MTN Mobile MoneyAirtel MoneyVisa & MastercardBitcoin
SCRIPTYLABS

© 2026 SCRIPTYLABS. All rights reserved.

TermsPrivacyCookies