InfraNest Custom fields API
The Custom fields API from InfraNest — 3 operation(s) for custom fields.
The Custom fields API from InfraNest — 3 operation(s) for custom fields.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/infranest:infranest-custom-fields-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: InfraNest Custom fields API
description: Domains, DNS, cloud servers, certificates and uptime monitoring in one API, across the registrars, DNS hosts and clouds you already use, such as Cloudflare, Route 53, Hetzner and GoDaddy. Start in a free sandbox with sample data, use scoped tokens, try DNS changes as a dry run first, and retry safely with idempotency keys.
version: 1.0.0
x-logo:
url: https://developers.infranest.io/logo.svg
altText: InfraNest
contact:
name: InfraNest
url: https://developers.infranest.io
termsOfService: https://infranest.io/terms
servers:
- url: https://api.infranest.io
security:
- default: []
tags:
- name: Custom Fields
description: ''
paths:
/api/organizations/{organization_id}/custom-fields:
get:
summary: List custom fields
operationId: getApiOrganizationsOrganization_idCustomFields
description: The organization’s custom field definitions in display order. Pass `entity_type` to list only the fields that apply to that kind of record.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
example:
- id: 1
organization_id: 1
entity_types:
- server
- domain
key: cost_centre
label: Cost centre
type: select
options:
- Platform
- Marketing
required: false
sort: 0
show_on_detail: true
show_as_column: true
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
deleted_at: null
purge_after: null
purge_reminder_sent_at: null
deleted_by_id: null
deleted_by_label: null
deletion_reason: null
- id: 2
organization_id: 1
entity_types:
- server
key: owner_team
label: Owning team
type: text
options: null
required: false
sort: 1
show_on_detail: true
show_as_column: false
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
deleted_at: null
purge_after: null
purge_reminder_sent_at: null
deleted_by_id: null
deleted_by_label: null
deletion_reason: null
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
entity_type:
type: string
description: ''
example: architecto
x-infranest-scope: monitoring.read
x-infranest-token-writable: false
x-infranest-module: tags
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- not_found
- rate_limited
post:
summary: Create a custom field
operationId: postApiOrganizationsOrganization_idCustomFields
description: Defines a custom field with `entity_types`, a unique `key`, a `label` and a `type`; select and multi-select fields also need `options`. Requires a plan that includes custom fields.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
responses:
'201':
description: Created
content:
application/json:
example:
entity_types:
- server
key: cost_center
label: Cost center
type: text
options: null
required: false
sort: 0
show_on_detail: true
show_as_column: false
organization_id: 1
updated_at: '2026-01-15T12:00:00.000000Z'
created_at: '2026-01-15T12:00:00.000000Z'
id: 4
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'409':
$ref: '#/components/responses/Error409'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
x-infranest-scope: monitoring.write
x-infranest-token-writable: true
x-infranest-module: tags
requestBody:
required: true
content:
application/json:
example:
entity_types:
- server
key: cost_center
label: Cost center
type: text
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- write_disabled
- organization_suspended
- not_found
- idempotency_in_progress
- validation_failed
- idempotency_key_reused
- rate_limited
/api/organizations/{organization_id}/custom-fields/{customFieldDefinition_id}:
patch:
summary: Update a custom field
operationId: patchApiOrganizationsOrganization_idCustomFieldsCustomFieldDefinition_id
description: Replaces the field’s definition; send the full set of fields, as on create. Requires a plan that includes custom fields.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
- in: path
name: customFieldDefinition_id
required: true
description: The customFieldDefinition's ID.
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
example:
id: 1
organization_id: 1
entity_types:
- server
- domain
key: cost_centre
label: Responsible team
type: select
options:
- Platform
- Marketing
required: false
sort: 0
show_on_detail: true
show_as_column: false
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
deleted_at: null
purge_after: null
purge_reminder_sent_at: null
deleted_by_id: null
deleted_by_label: null
deletion_reason: null
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
x-infranest-scope: monitoring.write
x-infranest-token-writable: true
x-infranest-module: tags
requestBody:
required: true
content:
application/json:
example:
entity_types:
- server
- domain
key: cost_centre
label: Responsible team
type: select
options:
- Platform
- Marketing
- Data
- Internal tools
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- write_disabled
- organization_suspended
- not_found
- validation_failed
- rate_limited
delete:
summary: Delete a custom field
operationId: deleteApiOrganizationsOrganization_idCustomFieldsCustomFieldDefinition_id
description: Deletes the field definition together with every value stored for it. Requires a plan that includes custom fields.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
- in: path
name: customFieldDefinition_id
required: true
description: The customFieldDefinition's ID.
schema:
type: integer
responses:
'204':
description: No content
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
x-infranest-scope: monitoring.write
x-infranest-token-writable: true
x-infranest-module: tags
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- write_disabled
- organization_suspended
- not_found
- rate_limited
/api/organizations/{organization_id}/custom-field-values:
get:
summary: List custom field values for a record
operationId: getApiOrganizationsOrganization_idCustomFieldValues
description: The custom field values set on one record. `entity_type` and `entity_id` are required; returns 404 when the record is not in this organization.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
example:
- id: 1
custom_field_definition_id: 1
value: Platform
- id: 2
custom_field_definition_id: 2
value: Web platform
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entity_type:
type: string
description: ''
example: architecto
entity_id:
type: integer
description: ''
example: 16
required:
- entity_type
- entity_id
x-infranest-scope: monitoring.read
x-infranest-token-writable: false
x-infranest-module: tags
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- not_found
- rate_limited
put:
summary: Set a custom field value
operationId: putApiOrganizationsOrganization_idCustomFieldValues
description: Sets the `value` of one field (`definition_id`) on one record (`entity_type`, `entity_id`), checked against the field’s type and options. A null value clears it and returns 204. Requires a plan that includes custom fields.
parameters:
- in: path
name: organization_id
required: true
description: Your organization's ID.
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
example:
id: 1
custom_field_definition_id: 1
value: Platform
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'404':
$ref: '#/components/responses/Error404'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
tags:
- Custom Fields
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
entity_type:
type: string
description: ''
example: architecto
entity_id:
type: integer
description: ''
example: 16
definition_id:
type: integer
description: ''
example: 16
value:
type: string
description: ''
required:
- entity_type
- entity_id
- definition_id
example:
entity_type: server
entity_id: 1
definition_id: 1
value: Platform
x-infranest-scope: monitoring.write
x-infranest-token-writable: true
x-infranest-module: tags
x-infranest-errors:
- unauthenticated
- scope_missing
- wrong_organization
- test_token_required
- test_token_sandbox_only
- permission_denied
- write_disabled
- organization_suspended
- not_found
- validation_failed
- rate_limited
components:
responses:
Error409:
description: 'A conflict: the same request is still being handled, or the current state does not allow it. The body is an Error; its `code` says which.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error401:
description: The token is missing, wrong, expired or revoked. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error422:
description: The request was understood but cannot be done as sent. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error404:
description: Nothing exists at this address, or you cannot see it. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error429:
description: 'Too many requests: wait the seconds in Retry-After. The body is an Error; its `code` says which.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error403:
description: The token or your role may not do this here. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
required:
- code
- message
- hint
- retryable
properties:
code:
type: string
enum:
- unauthenticated
- scope_missing
- session_only
- not_token_writable
- write_disabled
- wrong_organization
- token_ip_not_allowed
- test_token_required
- test_token_sandbox_only
- api_token_required
- sandbox_personal
- sandbox_needs_organization
- organization_offline
- permission_denied
- forbidden
- organization_suspended
- read_only_session
- sso_required
- two_factor_setup_required
- password_reset_required
- email_verification_required
- plan_limit
- not_found
- method_not_allowed
- conflict
- validation_failed
- unprocessable
- range_too_large
- rate_limited
- idempotency_key_reused
- idempotency_in_progress
- provider_refused
- provider_rate_limited
- provider_unavailable
- maintenance
- server_error
description: 'What kind of error this is. Stable: codes are added, never renamed or removed.'
message:
type: string
description: A sentence for people. May be reworded.
hint:
type: string
description: What to do about it.
retryable:
type: boolean
description: Whether the same request can succeed later unchanged.
docs_url:
type: string
format: uri
reference:
type: string
description: The request ID; also the X-Request-Id header.
retry_after:
type: integer
description: Seconds to wait before retrying.
required:
type: string
description: The missing token scope (scope_missing).
required_permission:
type: string
description: The missing role permission (permission_denied).
errors:
type: object
additionalProperties:
type: array
items:
type: string
securitySchemes:
default:
type: http
scheme: bearer
description: Create a token in the app under My account → Developer. Tokens are managed in the app only, never through the API.
externalDocs:
description: 'InfraNest: domains, DNS, cloud servers, certificates and uptime monitoring in one place'
url: https://infranest.io