{
  "SuccessCode": "SUCCESS",
  "Protocol": "AIXE",
  "Endpoint": "/aixe/searches/create-search",
  "Method": "POST",
  "ContentType": "application/json",
  "Title": "Create A Search",
  "Description": "Save a new request with status Waiting For Research and deduct the configured Search.CreditCost from available credits. Insufficient credits returns INSUFFICIENT_CREDITS without saving a request. Reuse the same optional SearchRequestKey when retrying a submission to avoid duplicate requests and charges. Research runs separately.",
  "Authentication": "PersonAuthenticationToken from account login in the JSON body; 15-minute sliding expiration.",
  "InputFields": [
    {
      "Name": "PersonAuthenticationToken",
      "Type": "string",
      "Required": true,
      "Description": "Opaque token returned by login. Do not use PersonKey or numeric IDs."
    },
    {
      "Name": "SearchRequestKey",
      "Type": "guid",
      "Required": false,
      "Description": "A new public GUID for this submission. Reuse it only when retrying the same submission; an existing key must belong to you. Omit to create a distinct request."
    },
    {
      "Name": "SearchRequestCompanyName",
      "Type": "string",
      "Required": true,
      "Description": "Company name, up to 300 characters."
    },
    {
      "Name": "SearchRequestCompanyAddress",
      "Type": "string",
      "Required": true,
      "Description": "Company address, up to 2,000 characters."
    },
    {
      "Name": "SearchRequestContent",
      "Type": "string",
      "Required": true,
      "Description": "Freeform instructions, up to 50,000 characters."
    }
  ],
  "Output": "Data: SearchRequestKey, SearchRequestStatus, PersonAvailableCredits.",
  "Success": "Only SuccessCode = SUCCESS indicates success. Data holds the result. Authenticated calls also return PersonAuthenticationTokenExpiration.",
  "Errors": [
    "VALIDATION_FAILED",
    "AUTHENTICATION_REQUIRED",
    "AUTHENTICATION_FAILED",
    "NOT_FOUND",
    "ACCESS_DENIED",
    "ACCOUNT_EXISTS",
    "CONFLICT",
    "NOT_SUPPORTED",
    "REJECTED",
    "RATE_LIMITED",
    "INSUFFICIENT_CREDITS",
    "CONFIGURATION_REQUIRED",
    "FAILED"
  ]
}