REST action reference

Verify browser automation evidence and create an observation

Verify browser automation evidence and create an observation. REST and MCP call the same domain service, so a successful invocation returns the same canonical result.

Request schema

Unknown fields are rejected. Path parameters merge with the JSON body or query input before validation.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "schema_version": {
      "type": "number",
      "const": 2
    },
    "signals": {
      "type": "object",
      "properties": {
        "version": {
          "type": "number",
          "const": 2
        },
        "attributes": {
          "type": "object",
          "properties": {
            "browser": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "user_agent": {
                          "type": "string",
                          "maxLength": 512
                        },
                        "platform": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "vendor": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "brands": {
                          "maxItems": 20,
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "brand": {
                                "type": "string",
                                "maxLength": 256
                              },
                              "version": {
                                "type": "string",
                                "maxLength": 256
                              }
                            },
                            "required": [
                              "brand",
                              "version"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "mobile": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "user_agent",
                        "platform",
                        "vendor"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "platform": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "os": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "architecture": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "model": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "platform_version": {
                          "type": "string",
                          "maxLength": 256
                        }
                      },
                      "required": [
                        "os"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "screen": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "width": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65536
                        },
                        "height": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65536
                        },
                        "available_width": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65536
                        },
                        "available_height": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65536
                        },
                        "pixel_ratio": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 32
                        },
                        "color_depth": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 128
                        }
                      },
                      "required": [
                        "width",
                        "height",
                        "available_width",
                        "available_height",
                        "pixel_ratio",
                        "color_depth"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "hardware": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "concurrency": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 4096
                        },
                        "memory": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 65536
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "graphics": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "vendor": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "renderer": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "version": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "shading_language": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "max_texture_size": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1048576
                        }
                      },
                      "required": [
                        "vendor",
                        "renderer",
                        "version",
                        "shading_language",
                        "max_texture_size"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "locale": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "timezone": {
                          "type": "string",
                          "maxLength": 256
                        },
                        "languages": {
                          "maxItems": 20,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "maxLength": 64
                          }
                        }
                      },
                      "required": [
                        "timezone",
                        "languages"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "input": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "touch_points": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 256
                        },
                        "coarse_pointer": {
                          "type": "boolean"
                        },
                        "hover": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "touch_points",
                        "coarse_pointer",
                        "hover"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "storage": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "local": {
                          "type": "boolean"
                        },
                        "session": {
                          "type": "boolean"
                        },
                        "indexed_db": {
                          "type": "boolean"
                        },
                        "cookies": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "local",
                        "session",
                        "indexed_db",
                        "cookies"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "rendering": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "canvas": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{64}$"
                        },
                        "audio": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{64}$"
                        },
                        "fonts": {
                          "type": "string",
                          "pattern": "^[a-f0-9]{64}$"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "detectors": {
          "type": "object",
          "properties": {
            "botd": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "detected": {
                          "type": "boolean"
                        },
                        "kind": {
                          "type": "string",
                          "maxLength": 256
                        }
                      },
                      "required": [
                        "detected"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "checks": {
              "type": "object",
              "properties": {
                "platform": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "const": "available"
                        },
                        "value": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "status",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "unsupported",
                            "unavailable",
                            "failed"
                          ]
                        }
                      },
                      "required": [
                        "status"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "worker": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "const": "available"
                        },
                        "value": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "status",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "unsupported",
                            "unavailable",
                            "failed"
                          ]
                        }
                      },
                      "required": [
                        "status"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "rendering": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "const": "available"
                        },
                        "value": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "status",
                        "value"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "unsupported",
                            "unavailable",
                            "failed"
                          ]
                        }
                      },
                      "required": [
                        "status"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "required": [
                "platform",
                "worker",
                "rendering"
              ],
              "additionalProperties": false
            },
            "consistency": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "const": "available"
                    },
                    "value": {
                      "type": "object",
                      "properties": {
                        "families": {
                          "maxItems": 3,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "platform",
                              "worker",
                              "rendering"
                            ]
                          }
                        }
                      },
                      "required": [
                        "families"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "status",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "unsupported",
                        "unavailable",
                        "failed"
                      ]
                    }
                  },
                  "required": [
                    "status"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "additionalProperties": false
        }
      },
      "required": [
        "version",
        "attributes",
        "detectors"
      ],
      "additionalProperties": false
    },
    "claim_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[\\x21-\\x7e]+$"
    },
    "fingerprint": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$"
    },
    "browser": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "algorithm": {
      "type": "string",
      "maxLength": 32,
      "pattern": "^5\\."
    },
    "nonce": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "recaptcha_token": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8192
    },
    "test_scenario": {
      "type": "string",
      "enum": [
        "human",
        "automation",
        "unknown",
        "unavailable"
      ]
    }
  },
  "required": [
    "schema_version",
    "signals",
    "claim_id",
    "browser",
    "algorithm",
    "nonce"
  ],
  "additionalProperties": false
}

Example request

{
  "schema_version": 2,
  "signals": {
    "version": 2,
    "attributes": {},
    "detectors": {}
  },
  "claim_id": "claim_customer_123",
  "fingerprint": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "browser": "00000000-0000-4000-8000-000000000001",
  "algorithm": "5.0",
  "nonce": "00000000-0000-4000-8000-000000000001",
  "test_scenario": "human"
}

Response schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "expires_in": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "token",
    "expires_in"
  ],
  "additionalProperties": false
}

Example success response

REST returns JSON. MCP returns the same object in structuredContent plus a transport request ID.

{
  "token": "signed-browser-observation",
  "expires_in": 300
}

Errors and recovery

Common statuses: 422 invalid input, 403 missing scope or organization access, 404 not found, 409 revision or idempotency conflict, 429 rate limit, 504 deadline exceeded.Include the request ID from the error envelope when you contact support.

Idempotency and deadlines

Send a stable Idempotency-Key and reuse it only for an exact retry of this mutation.Server deadline: 5s. Retry only when error.retryable is true.

cURL

curl -X POST https://abusezero.com/v1/observations/bot \
  -H "Authorization: Bearer $ABUSEZERO_SECRET_KEY" \
  -H "AbuseZero-Organization: $ABUSEZERO_ORGANIZATION" \
  -H "Idempotency-Key: operation_123" \
  -H "Content-Type: application/json" \
  --data '{"schema_version":2,"signals":{"version":2,"attributes":{},"detectors":{}},"claim_id":"claim_customer_123","fingerprint":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","browser":"00000000-0000-4000-8000-000000000001","algorithm":"5.0","nonce":"00000000-0000-4000-8000-000000000001","test_scenario":"human"}'

Node SDK

const result = await abusezero.call("/v1/observations/bot", {
  method: "POST",
  input: {"schema_version":2,"signals":{"version":2,"attributes":{},"detectors":{}},"claim_id":"claim_customer_123","fingerprint":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","browser":"00000000-0000-4000-8000-000000000001","algorithm":"5.0","nonce":"00000000-0000-4000-8000-000000000001","test_scenario":"human"},
  idempotencyKey: "operation_123",
});

MCP

No MCP equivalent. Browser-origin evidence must come from the browser SDK.