API reference guide
Endpoint guidesEvery public route with its scope, parameters, valid values and a complete request example.
Organisation and billing
GET
/api/v1/organization
Get organisationReturns the organisation permanently bound to the key.
Required scope: organizations:read
No path, query or body parameters.
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" https://as213905.com/api/v1/organization
GET
/api/v1/invoices
List invoicesReturns billing documents ordered newest first.
Required scope: invoices:read
No path, query or body parameters.
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" https://as213905.com/api/v1/invoices
Services and metrics
GET
/api/v1/services
List servicesReturns every service owned by the key organisation.
Required scope: services:read
No path, query or body parameters.
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" https://as213905.com/api/v1/services
GET
/api/v1/services/{id}
Get serviceReturns one service, including its current lifecycle state and configuration.
Required scope: services:read
ParameterInTypeDescription
id
required
pathUUIDService identifier returned by the list endpoint.
Example: 38fce115-83e6-4122-a65a-9c70c9187794
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" \
  https://as213905.com/api/v1/services/38fce115-83e6-4122-a65a-9c70c9187794
GET
/api/v1/services/{id}/metrics
Read BGP VM metricsReturns a time series for a controllable BGP VM.
Required scope: services:read
ParameterInTypeDescription
id
required
pathUUIDService identifier.
Example: 38fce115-83e6-4122-a65a-9c70c9187794
targetqueryenumMetric: cpu_load, mem_usage_percent, net_rx, net_tx, iops or df.root.used.
Example: net_tx
rangequeryenumSampling window: 1h, 6h, 24h or 7d. Default is 24h.
Example: 6h
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" \
  'https://as213905.com/api/v1/services/38fce115-83e6-4122-a65a-9c70c9187794/metrics?target=net_tx&range=6h'
POST
/api/v1/services/{id}/power
Change BGP VM power stateQueues a start, stop or restart command.
Required scope: services:write
ParameterInTypeDescription
id
required
pathUUIDControllable service identifier.
Example: 38fce115-83e6-4122-a65a-9c70c9187794
action
required
JSON bodyenumOne of start, stop or restart.
Example: restart
Example request
curl -X POST -H "Authorization: Bearer $AS213905_API_KEY" -H "Content-Type: application/json" \
  -d '{"action":"restart"}' \
  https://as213905.com/api/v1/services/38fce115-83e6-4122-a65a-9c70c9187794/power
Traffic
GET
/api/v1/traffic
Organisation trafficReturns 95th-percentile and transferred-byte accounting for the whole organisation.
Required scope: traffic:read
ParameterInTypeDescription
daysqueryinteger 1–366Last N UTC days. Mutually exclusive with from/to.
Example: 7
fromquerydateFirst UTC calendar date in an explicit range.
Example: 2026-08-01
toquerydateInclusive final UTC calendar date.
Example: 2026-08-07
Example request
# Relative window
curl -H "Authorization: Bearer $AS213905_API_KEY" 'https://as213905.com/api/v1/traffic?days=7'

# Explicit window
curl -H "Authorization: Bearer $AS213905_API_KEY" 'https://as213905.com/api/v1/traffic?from=2026-08-01&to=2026-08-07'
GET
/api/v1/tunnels/{id}/traffic
Tunnel trafficReturns the same accounting fields for one tunnel.
Required scope: traffic:read
ParameterInTypeDescription
id
required
pathUUIDTunnel identifier.
Example: a5247bdd-e2d0-4c25-a1e6-c84e290cbfa1
daysqueryinteger 1–366Last N UTC days; mutually exclusive with from/to.
Example: 30
fromquerydateFirst UTC calendar date.
Example: 2026-07-01
toquerydateInclusive final UTC calendar date.
Example: 2026-07-31
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" \
  'https://as213905.com/api/v1/tunnels/a5247bdd-e2d0-4c25-a1e6-c84e290cbfa1/traffic?days=30'
Transit tunnels
GET
/api/v1/tunnels
List tunnelsReturns transit tunnels and provisioning state.
Required scope: tunnels:read
No path, query or body parameters.
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" https://as213905.com/api/v1/tunnels
POST
/api/v1/tunnels
Request a tunnelRecords a Frankfurt transit tunnel for asynchronous provisioning.
Required scope: tunnels:write
ParameterInTypeDescription
peer_endpoint
required
JSON bodyIP addressPublic remote GRE endpoint.
Example: 203.0.113.10
location
required
JSON bodystringService location: fra or ams.
Example: ams
labelJSON bodystring ≤100Your human-readable tunnel name.
Example: fra-primary
announceJSON bodybooleanRequest route announcement after configuration.
Example: true
Example request
curl -X POST -H "Authorization: Bearer $AS213905_API_KEY" -H "Content-Type: application/json" \
  -d '{"peer_endpoint":"203.0.113.10","location":"fra","label":"fra-primary","announce":true}' \
  https://as213905.com/api/v1/tunnels
DELETE
/api/v1/tunnels/{id}
Remove a tunnelQueues asynchronous teardown.
Required scope: tunnels:write
ParameterInTypeDescription
id
required
pathUUIDTunnel identifier.
Example: a5247bdd-e2d0-4c25-a1e6-c84e290cbfa1
Example request
curl -X DELETE -H "Authorization: Bearer $AS213905_API_KEY" \
  https://as213905.com/api/v1/tunnels/a5247bdd-e2d0-4c25-a1e6-c84e290cbfa1
RFC 8805 geofeeds
GET
/api/v1/geofeeds
List geofeedsLists up to two geofeeds for the organisation.
Required scope: geofeeds:read
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDThe organisation bound to the API key.
Example: 9f44e0e7-13d4-4af3-bc6e-76b91c93b752
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" https://as213905.com/api/v1/geofeeds
POST
/api/v1/geofeeds
Create a geofeedCreates a geofeed when the organisation is below its limit of two.
Required scope: geofeeds:write
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
Example: 9f44e0e7-13d4-4af3-bc6e-76b91c93b752
name
required
JSON bodystring 1–100Display name.
Example: Customer prefixes
Example request
curl -X POST -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" -H "Content-Type: application/json" \
  -d '{"name":"Customer prefixes"}' \
  https://as213905.com/api/v1/geofeeds
GET
/api/v1/geofeeds/{id}
Get a geofeedReturns metadata and every RFC 8805 record.
Required scope: geofeeds:read
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
Example: 9f44e0e7-13d4-4af3-bc6e-76b91c93b752
id
required
pathUUIDGeofeed identifier.
Example: 661e65fd-a498-4418-af2f-dbc8e4b24535
Example request
curl -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" \
  https://as213905.com/api/v1/geofeeds/661e65fd-a498-4418-af2f-dbc8e4b24535
PATCH
/api/v1/geofeeds/{id}
Rename a geofeedChanges the display name without changing its public URL.
Required scope: geofeeds:write
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
id
required
pathUUIDGeofeed identifier.
name
required
JSON bodystring 1–100New display name.
Example: Production geofeed
Example request
curl -X PATCH -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" -H "Content-Type: application/json" \
  -d '{"name":"Production geofeed"}' \
  https://as213905.com/api/v1/geofeeds/661e65fd-a498-4418-af2f-dbc8e4b24535
DELETE
/api/v1/geofeeds/{id}
Delete a geofeedPermanently deletes the geofeed and its public CSV URL.
Required scope: geofeeds:write
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
id
required
pathUUIDGeofeed identifier.
Example request
curl -X DELETE -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" \
  https://as213905.com/api/v1/geofeeds/661e65fd-a498-4418-af2f-dbc8e4b24535
PUT
/api/v1/geofeeds/{id}/records
Replace recordsAtomically validates and replaces all records; maximum 1,000.
Required scope: geofeeds:write
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
id
required
pathUUIDGeofeed identifier.
records
required
JSON bodyarray ≤1000RFC 8805 records with prefix, country_code and optional region_code, city and postal_code.
Example request
curl -X PUT -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" -H "Content-Type: application/json" \
  -d '{"records":[{"prefix":"203.0.113.0/24","country_code":"DE","region_code":"DE-HE","city":"Frankfurt am Main","postal_code":"60311"}]}' \
  https://as213905.com/api/v1/geofeeds/661e65fd-a498-4418-af2f-dbc8e4b24535/records
POST
/api/v1/geofeeds/{id}/rotate
Rotate public URLInvalidates the previous unguessable CSV URL and creates a new one.
Required scope: geofeeds:write
ParameterInTypeDescription
X-Organization-ID
required
headerUUIDKey organisation UUID.
id
required
pathUUIDGeofeed identifier.
Example request
curl -X POST -H "Authorization: Bearer $AS213905_API_KEY" -H "X-Organization-ID: $ORGANIZATION_ID" \
  https://as213905.com/api/v1/geofeeds/661e65fd-a498-4418-af2f-dbc8e4b24535/rotate