---
title: "Allow one more address — Anis Developers"
description: "POST /v1/application/networks allows one public IPv4 or IPv6 address for your application. It is stored as `/32` or `/128` and applies from your next request. Staging only — testing endpoints, not available in production. Production answers `404 resource_not_found`."
url: https://developers.anis.ly/reference/add-network/
language: en
---

> Every page of this documentation: https://developers.anis.ly/llms.txt

[API reference](https://developers.anis.ly/reference.md) · Your application

# Allow one more address

`POST /v1/application/networks`

POST /v1/application/networks allows one public IPv4 or IPv6 address for your application. It is stored as `/32` or `/128` and applies from your next request. Staging only — testing endpoints, not available in production. Production answers `404 resource_not_found`.

- **Permission:** None
- **Authentication:** Signed change
- **Anis’s answer:** Signed
- **Staff-set limits it counts toward:** All requests
- **.NET SDK:** `Permanently excluded from all SDKs; send a signed HTTP request.`

- No particular permission is required, but your application must have at least one effective permission. Private, loopback, link-local, shared (`100.64.0.0/10`), multicast, documentation, benchmarking, reserved, unspecified, IPv4-mapped IPv6 and non-global IPv6 addresses are refused as `validation_failed` (422). Use a real public address; documentation examples are not accepted.
- You may add at most 10 addresses. An address already allowed returns `changed: false`; repeating the call is safe.
- The answer includes the current list and how many more addresses you may add. A separate list call may take a few seconds to show the change.

## Request

Signed with your key, with a one-time nonce and a digest of the body.

Headers: `Signature-Input`, `Signature`, `Content-Digest`, `Nonce`, `X-Anis-Date`. The SDKs set all of them for you.

**Body:** `{"address":"<your-public-ipv4-or-ipv6-address>"}` — send one address without a prefix or range. The request must come from an address already allowed and use a signed request with an active key.

## Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | Success. | [ApplicationNetworksChange](#type-applicationnetworkschange) |
| 400 | Refused: the signed request is badly built. | [Problem](#refusals) |
| 401 | Refused: not authenticated. | [Problem](#refusals) |
| 403 | Refused: not allowed. | [Problem](#refusals) |
| 404 | Refused: not found, or not yours. | [Problem](#refusals) |
| 409 | Refused: conflicts with the current state. | [Problem](#refusals) |
| 422 | Refused: the request breaks a rule. | [Problem](#refusals) |
| 429 | Refused: a limit was reached. | [Problem](#refusals) |
| 503 | No decision: a dependency was unavailable. | [Problem](#refusals) |

Every answer of this call is signed by Anis — success and every refusal. Require the signature and verify it before you act on the answer; an answer without one is a failure, never an answer ([how](https://developers.anis.ly/docs/verifying-answers.md)).

## Refusals

Every refusal of this call is a signed problem. Branch on its `code`; each links to what it means and what to do.

| Error | Code | Status |
| --- | --- | --- |
| [Invalid credentials](https://developers.anis.ly/errors/invalid-credentials.md) | `invalid_credentials` | 401 |
| [Malformed signed request](https://developers.anis.ly/errors/malformed-signed-request.md) | `malformed_signed_request` | 400 |
| [Insufficient scope](https://developers.anis.ly/errors/insufficient-scope.md) | `insufficient_scope` | 403 |
| [Source address not allowed](https://developers.anis.ly/errors/source-ip-not-allowed.md) | `source_ip_not_allowed` | 403 |
| [Rate limited](https://developers.anis.ly/errors/rate-limited.md) | `rate_limited` | 429 |
| [Replay detected](https://developers.anis.ly/errors/replay-detected.md) | `replay_detected` | 409 |
| [Validation failed](https://developers.anis.ly/errors/validation-failed.md) | `validation_failed` | 422 |
| [Address limit reached](https://developers.anis.ly/errors/partner-network-limit-reached.md) | `partner_network_limit_reached` | 409 |
| [Not found](https://developers.anis.ly/errors/resource-not-found.md) | `resource_not_found` | 404 |
| [Service unavailable](https://developers.anis.ly/errors/dependency-unavailable.md) | `dependency_unavailable` | 503 |
| [Request timeout](https://developers.anis.ly/errors/request-timeout.md) | `request_timeout` | 504 |
| [Internal error](https://developers.anis.ly/errors/internal-error.md) | `internal_error` | 500 |

## Types

### ApplicationNetworksChange

| Field | Type | Notes |
| --- | --- | --- |
| `changed` (required) | boolean | `false` when the address was already allowed (add) or already absent (remove); repeating either call is safe. |
| `networks` (required) | list of [ApplicationNetwork](#type-applicationnetwork) | The current list of addresses the application may call from. A separate list call may take a few seconds to reflect a change. |
| `partnerNetworksRemaining` (required) | integer | How many more addresses your application may add, up to 10 Partner-added addresses. |

### ApplicationNetwork

| Field | Type | Notes |
| --- | --- | --- |
| `cidr` (required) | string | An address the application may call from, in CIDR form. Addresses added by a Partner are stored as `/32` (IPv4) or `/128` (IPv6). |
| `addedBy` (required) | string | `anis` if Anis added the address; `partner` if your application added it. You can remove only addresses marked `partner`. Values: `anis`, `partner` |
