Documentation
The service is available as a JSON API. No key is required.
Endpoint
GET https://urls.dwainosaur.com/api/v1/extend?url=<url>&style=<style>&length=<n> POST https://urls.dwainosaur.com/api/v1/extend
POST accepts a JSON body or a form body with the same three fields. Responses are JSON. Cross-origin requests are allowed.
Parameters
| Field | Required | Description |
|---|---|---|
url | yes | The destination. http or https. A missing scheme is treated as https. Hosts on private networks are refused. |
style | no | One of the style identifiers below. Default enterprise. |
length | no | Target length of the extended URL in characters, 100 to 2,000. Default 1,000. The result is never longer than this unless the destination itself needs more. |
Styles
| Identifier | Name | Shape |
|---|---|---|
enterprise | Enterprise path | /platform/v3/regions/us-east-2/tenants/tnt-4 |
tracking | Tracking parameters | /c?utm_source=newsletter&utm_medium=email&ut |
hex | Raw encoding | /a8f3e2c9/d1b04f7a6e5d3c2b1a0f9e8d7c6b5a4f/3 |
identifiers | Identifier chains | /documents/8f3e2c9d-1b04-4f7a-6e5d-3c2b1a0f9 |
gps | GPS trail | /lat/51.50741/lng/-0.12780/alt/11.3/hdg/271/ |
postal | Postal address | /country/GB/region/greater-london/postcode/S |
airline | Airline itinerary | /booking/pnr/K7X9QL/segment/2/carrier/BA/fli |
dna | DNA sequence | /sequence/ATCGGATTACAGGCTTAACGTTAGC/exon/3/c |
pi | Digits of pi | /pi/3.1415926535/8979323846/2643383279/50288 |
timestamps | Timestamps | /t/2026/09/07/14/32/07/183442019/UTC/2026/09 |
java | Java package | /com/dwainosaur/platform/internal/impl/Abstr |
windows | Windows desktop | /C:/Users/Administrator/Desktop/New%20folder |
redirects | Nested redirects | /redirect?to=%2Fredirect%3Fto%3D%252Fredirec |
legalese | Policy document | /legal/terms-of-service/section-14/subsectio |
filesystem | Filesystem | /home/deploy/2019-03-11/backup/backup-final/ |
chess | Chess game | /game/1.e4/e5/2.Nf3/Nc6/3.Bb5/a6/4.Ba4/Nf6/5 |
standards | Standards citation | /iso/iec/27001/2022/annex/A/control/8.24/cla |
countdown | Reassurance | /almost/there/almost/there/one/more/segment/ |
GET /api/v1/styles returns the same list as JSON.
Response
{
"url": "https://urls.dwainosaur.com/platform/v3/regions/us-east-2/...",
"length": 1000,
"requested_length": 1000,
"style": "enterprise",
"destination": "https://example.com/",
"minimum": false
}
minimum is true when the destination alone needs more characters than requested. The URL returned is then the shortest valid one.
Errors
| Status | Meaning |
|---|---|
400 | The destination or a parameter was rejected. The body carries an error field with the reason. |
429 | Too many requests from one address. Retry after the number of seconds in Retry-After. |
Examples
curl "https://urls.dwainosaur.com/api/v1/extend?url=https://example.com"
curl "https://urls.dwainosaur.com/api/v1/extend?url=https://example.com&style=chess&length=2000"
curl -X POST https://urls.dwainosaur.com/api/v1/extend \
-H "content-type: application/json" \
-d '{"url":"https://example.com","style":"dna","length":1500}'
Resolution
The destination is encoded inside the extended URL. Nothing is stored, so links do not expire and cannot be edited or revoked. A request to an extended URL receives a permanent redirect to its destination.
Acceptable use
Extended URLs may not be used to disguise the destination of phishing, malware, or other content that would be blocked if the destination were visible. Destinations that resolve to private networks are refused at generation. Reports go to abuse@dwainosaur.com and are acted on.