Request and Response Formats
Request
The No-IP API follows HTTP standards. URL path segments and query parameter are expected to be percent-encoded.
The request body is always JSON format unless otherwise noted. The content-type
HTTP header must be set to application/json
.
Example Request with Curl
curl --user ":<api key>" \ --header "Content-Type: application/json" \ --data '{"zone_name": "example.com"}' \ https://api.noip.com/v1/dns/zones
Response
The No-IP API makes use of the standard HTTP response codes to indicate success and failure. Specific possible codes are included for each resource in the API reference.
- 200 - 299: Success.
- 400 - 499: Client error; correct the error in the request and submit it again.
- 500 - 599: Server error; the API is experiencing problems. Our engineering team has been automatically notified.
Success
The response body of successful requests will be returned as a JSON object. If there is data in the response it will be under the data
key.
{ "data": { "name": "example.com", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2024-08-24T14:15:22Z" }}
Other keys may exist that describe or augment the data, such as warnings and page information.
Paging
When the data
key is an array a sibling key, page
, will accompany it with information about the list.
page
is an object with three keys,
limit
: the maximum number of items in thedata
array.offset
: the start position of the data.total
: the total number of items available.
Example
{ "data": [ { "name": "example.com", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2024-08-24T14:15:22Z" } ], "page": { "limit": 0, "offset": 0, "total": 10 }}
Warnings
A top level field warnings: []
may be included in all responses as a
sibling to data:
and paging:
. Non-critical indications may appear here,
such as approaching expirations and SPF formatting issues in TXT records.
Success Example
{ "data": [ ... ], "page": { ... }, "warnings": [ { "title": "Change may not be as expected", "code": "W1000", "detail": "Request was completed but has a possibly unwanted side effect." } ]}
Errors
Responses with HTTP codes 400 - 499 will have a JSON response body. Responses with HTTP codes 500 - 599 may have a JSON body but since they are a critical server error that cannot be guaranteed.
The errors
key will always be a list of objects.
Error object fields. id
, code
, and title
will always be included.
id
: a unique string that identifies this error in our logscode
: identifies exactly in our code where the problem occurred and is very helpful in debuggingtitle
: the main error messagedetail
: additional information specific to this requestlocation
: in what part of the request the error occurred. For instance “query” for the query string.pointer
: more exact information on where the error occurred, such as a JSON pointer, if possible.
Example
{ "errors": [{ "id": "err_eXgLfYUj", "code": "2451", "title": "invalid request query", "detail": "unknown variant `summary`, expected `detail` or `name_only`", "location": "query" }, { "id": "err_oWfehpGt", "code": "3809", "title": "invalid url encoded request body", }],}
Warnings
Non-critical indications may appear in the warnings
key along with errors,
such as approaching expirations and SPF formatting issues in TXT records.
Error Example
{ "errors": [ ... ], "warnings": [ { "title": "Resource expiring soon", "code": "W1001", "detail": "The related resource will expire soon" } ]}