---
updatedAt: 2026-05-22T15:57:54.000Z
agentTools:
  projectIndex: https://docs.ometria.com/llms.txt
---

# List Custom Fields

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "version": "1.1.0",
    "title": "Ometria data API",
    "description": "Welcome to the Ometria API reference.\n\n\nThe Ometria API is organized around the [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) methodology, and it uses resource-oriented URLs, and common HTTP response codes to indicate API errors. All requests are authenticated using an API key which can be obtained from your account settings.\n\n### HTTPS\n\nAll requests to the Ometria API MUST be carried out via HTTPS. API servers do not listen on unsecured HTTP ports to avoid the possibility of insecure information exchange.\n\n### Message encoding\n\nThe V2 Ometria API uses JSON encoding for all data exchanges and assumes UTF-8 character encoding throughout.\n\n### Rate limits\n\nThe Ometria API has a default rate limit of 4 requests per second per Ometria account. The /push/ endpoint allows 8 requests per second per Ometria account. If you expect to exceed this limit, please contact us.\n\nIn the case of your application being rate limited, the HTTP code 429 (too many requests) will be returned. In this case your application should reduce the number of requests it is trying to send.",
    "contact": {
      "name": "Ometria",
      "email": "support@ometria.com",
      "url": "https://ometria.com"
    }
  },
  "x-explorer-enabled": false,
  "paths": {
    "/custom_fields": {
      "get": {
        "tags": [
          "Custom Fields"
        ],
        "summary": "List Custom Fields",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "nullable": true,
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CustomFieldCategory"
                }
              ],
              "description": "Filter for custom fields in the given category.",
              "title": "Category"
            },
            "description": "Filter for custom fields in the given category."
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "nullable": true,
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CustomFieldType"
                }
              ],
              "description": "Filter for custom fields of the given type.",
              "title": "Type"
            },
            "description": "Filter for custom fields of the given type."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "nullable": true,
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CustomFieldStatus"
                }
              ],
              "description": "Filter for custom fields with the given status.",
              "title": "Status"
            },
            "description": "Filter for custom fields with the given status."
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "nullable": true,
              "anyOf": [
                {
                  "type": "string"
                }
              ],
              "description": "Search for custom fields with the given label or id.",
              "title": "Search"
            },
            "description": "Search for custom fields with the given label or id."
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "schema": {
              "nullable": true,
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CustomFieldSortBy"
                }
              ],
              "description": "Sort custom fields by the given field.",
              "title": "Sort By"
            },
            "description": "Sort custom fields by the given field."
          }
        ],
        "responses": {
          "200": {
            "description": "The list of custom fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Invalid request."
                },
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server error.",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Internal Server error."
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "apikey": []
    }
  ],
  "servers": [
    {
      "url": "https://api.ometria.com/v2"
    }
  ],
  "components": {
    "securitySchemes": {
      "apikey": {
        "type": "apiKey",
        "name": "X-Ometria-Auth",
        "in": "header",
        "description": "Ometria API key which can be obtained from your Ometria account administrator"
      }
    },
    "schemas": {
      "CustomFieldCategory": {
        "type": "string",
        "enum": [
          "contact",
          "order"
        ],
        "title": "CustomFieldCategory"
      },
      "CustomFieldResponse": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^\\S+$",
            "title": "Id",
            "description": "The identifier of the custom field",
            "example": "country_of_origin"
          },
          "category": {
            "$ref": "#/components/schemas/CustomFieldCategory",
            "description": "The category of the custom field",
            "example": "contact"
          },
          "type": {
            "$ref": "#/components/schemas/CustomFieldType",
            "description": "The type of the custom field. The 'date' type can only be used with the 'contact' category.",
            "example": "string"
          },
          "title": {
            "type": "string",
            "maxLength": 64,
            "title": "Title",
            "description": "The title of the custom field",
            "example": "Custom Field"
          },
          "status": {
            "$ref": "#/components/schemas/CustomFieldStatus",
            "description": "The status of the custom field",
            "example": "active"
          },
          "date_created": {
            "nullable": true,
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "Date Created",
            "description": "The date the custom field was created",
            "example": "2024-07-15T11:45:13+00:00"
          },
          "created_by": {
            "nullable": true,
            "anyOf": [
              {
                "type": "integer"
              }
            ],
            "title": "Created By",
            "description": "The user who created the custom field",
            "example": 1
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "category",
          "type",
          "title",
          "status",
          "date_created",
          "created_by"
        ],
        "title": "CustomFieldResponse"
      },
      "CustomFieldStatus": {
        "type": "string",
        "enum": [
          "active",
          "archived"
        ],
        "title": "CustomFieldStatus"
      },
      "CustomFieldType": {
        "type": "string",
        "enum": [
          "string",
          "integer",
          "decimal",
          "date",
          "blob",
          "list of string",
          "list of product ids"
        ],
        "title": "CustomFieldType"
      },
      "CustomFieldListResponse": {
        "properties": {
          "fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFieldResponse"
            },
            "type": "array",
            "title": "Fields",
            "description": "The list of paginated objects."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "title": "Offset",
            "description": "The offset value applied for pagination.",
            "example": 0
          },
          "page_size": {
            "type": "integer",
            "minimum": 0,
            "title": "Page Size",
            "description": "The actual number of objects in the current page.",
            "example": 1
          },
          "total_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Total Count",
            "description": "The total number of objects for the account.",
            "example": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "title": "Limit",
            "description": "The limit number of custom fields allowed",
            "example": 50
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "fields",
          "offset",
          "page_size",
          "total_count",
          "limit"
        ],
        "title": "CustomFieldListResponse"
      },
      "CustomFieldSortBy": {
        "type": "string",
        "enum": [
          "created_by",
          "-created_by",
          "date_created",
          "-date_created",
          "category",
          "-category",
          "type",
          "-type",
          "status",
          "-status",
          "id",
          "-id",
          "title",
          "-title"
        ],
        "title": "CustomFieldSortBy"
      },
      "ValidationErrorResponse": {
        "properties": {
          "detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "items": {
                  "$ref": "#/components/schemas/ValidationErrorDetailItem"
                },
                "type": "array"
              }
            ],
            "title": "Detail",
            "description": "The detail(s) giving more context why the request failed."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "detail"
        ],
        "title": "ValidationErrorResponse"
      },
      "ValidationErrorDetailItem": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type",
            "description": "The type of validation error."
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Loc",
            "description": "The location of the field that caused the validation error."
          },
          "msg": {
            "type": "string",
            "title": "Msg",
            "description": "The error message."
          },
          "input": {
            "nullable": true,
            "anyOf": [
              {
                "type": "string"
              }
            ],
            "title": "Input",
            "description": "The input in the request that caused the validation error."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "type",
          "loc",
          "msg"
        ],
        "title": "ValidationErrorDetailItem"
      },
      "ErrorResponse": {
        "properties": {
          "detail": {
            "type": "string",
            "title": "Detail",
            "description": "The detail giving more context why the request failed."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "detail"
        ],
        "title": "ErrorResponse"
      }
    }
  },
  "x-readme": {
    "proxy-enabled": true,
    "samples-enabled": true
  }
}
```