behavioral-fingerprint
3 operations. Shapes are sketches of the declared schemas, bounded in depth — the authoritative document is linked from the index.
POST/orgs/{orgSlug}/behavioral-fingerprint/evaluate
Requires bearerAuth
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
Request body (required) · application/json
{
sampleLimit?: integer
sampleSeed?: string
maxExecutions?: integer
maxCostMicros?: integer
costPerExecutionMicros?: integer
embeddingModel?: string
useCache?: boolean
spend?: {
agentId: string
onBehalfOfUserId?: string | null
incidentId?: string | null
}
}Response 200
{
evaluationId: string
report: {
version: string
orgId: string
projectIds: string[]
embeddingModel: string | null
decidedPairs: integer
sampledPairs: integer
comparablePairs: integer
comparableConfirmed: integer
comparableRejected: integer
notComparable: {
reason: "NO_MINIMIZED_REPRO" | "EXECUTOR_INCONCLUSIVE" | "BUDGET_EXHAUSTED" | "ISSUE_MISSING" | "SELF_PAIR"
count: integer
}[]
coverage: number | null
repro: {
truePositives: integer
falsePositives: integer
trueNegatives: integer
falseNegatives: integer
precision: number | null
precisionLowerBound: number
recall: number | null
accuracy: number | null
}
embedding: {
curve: object[]
matchedRecallPoint: object | null
atDefaultThreshold: object | null
}
precisionDelta: number | null
pairedTest: {
reproOnlyCorrect: integer
embeddingOnlyCorrect: integer
discordant: integer
pValue: number
significant: boolean
method: "MCNEMAR_EXACT_BINOMIAL"
} | null
verdict: "INSUFFICIENT_DATA" | "NO_MEASURABLE_DIFFERENCE" | "REPRO_EQUIVALENCE_BETTER" | "EMBEDDING_BETTER"
disclosures: string[]
blockedBecause: string[]
cost: {
executions: integer
cacheHits: integer
costMicros: integer
costPerComparisonMicros: integer | null
projectedFullCorpusCostMicros: integer | null
executorProvider: string
}
sample: {
seed: string
limit: integer
deterministic: true
}
measuredAt: string
}
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 401 · `unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 403 · `forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl -X POST https://api.bucker.io/orgs/{orgSlug}/behavioral-fingerprint/evaluate \
-H 'authorization: Bearer $BUCKER_TOKEN' \
-H 'content-type: application/json' \
-d '{ … }'GET/orgs/{orgSlug}/behavioral-fingerprint/evaluations
Requires bearerAuth
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
limit | query | integer | default 20, min 1, max 100 |
Response 200
{
data: {
id: string
verdict: string
decidedPairs: integer
sampledPairs: integer
comparablePairs: integer
executions: integer
cacheHits: integer
costMicros: integer
createdAt: string
}[]
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 401 · `unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 403 · `forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/orgs/{orgSlug}/behavioral-fingerprint/evaluations \
-H 'authorization: Bearer $BUCKER_TOKEN'GET/orgs/{orgSlug}/behavioral-fingerprint/evaluations/{evaluationId}
Requires bearerAuth
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
orgSlugrequired | path | string | min length 1 |
evaluationIdrequired | path | string | min length 1 |
Response 200
{
id: string
createdAt: string
report: {
version: string
orgId: string
projectIds: string[]
embeddingModel: string | null
decidedPairs: integer
sampledPairs: integer
comparablePairs: integer
comparableConfirmed: integer
comparableRejected: integer
notComparable: {
reason: "NO_MINIMIZED_REPRO" | "EXECUTOR_INCONCLUSIVE" | "BUDGET_EXHAUSTED" | "ISSUE_MISSING" | "SELF_PAIR"
count: integer
}[]
coverage: number | null
repro: {
truePositives: integer
falsePositives: integer
trueNegatives: integer
falseNegatives: integer
precision: number | null
precisionLowerBound: number
recall: number | null
accuracy: number | null
}
embedding: {
curve: object[]
matchedRecallPoint: object | null
atDefaultThreshold: object | null
}
precisionDelta: number | null
pairedTest: {
reproOnlyCorrect: integer
embeddingOnlyCorrect: integer
discordant: integer
pValue: number
significant: boolean
method: "MCNEMAR_EXACT_BINOMIAL"
} | null
verdict: "INSUFFICIENT_DATA" | "NO_MEASURABLE_DIFFERENCE" | "REPRO_EQUIVALENCE_BETTER" | "EMBEDDING_BETTER"
disclosures: string[]
blockedBecause: string[]
cost: {
executions: integer
cacheHits: integer
costMicros: integer
costPerComparisonMicros: integer | null
projectedFullCorpusCostMicros: integer | null
executorProvider: string
}
sample: {
seed: string
limit: integer
deterministic: true
}
measuredAt: string
}
}Response 400 · `bad_request` — the path, query or body failed validation. `details` carries the Zod issues, one per offending field.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 401 · `unauthorized` — no credential, or one that is expired, revoked or not valid for this resource. `mfa_required` when the credential is good but a second factor is owed.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 403 · `forbidden` — the credential is valid and its scopes or this principal’s membership do not reach this resource. Scopes are re-intersected with live memberships on every request, so this can appear for a token that worked yesterday.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 404 · `not_found` — no such resource, OR one this principal cannot see. The two are deliberately one answer: a 403 would confirm the existence of something whose identifier is guessable.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 429 · `rate_limited` or `quota_exceeded` — over a ceiling. `Retry-After` says when to come back, and `x-ratelimit-limit` / `-remaining` / `-reset` describe the bucket.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Response 500 · `internal_error` — an unhandled failure on this side. The message is always generic; `requestId` is the part worth quoting.
{
error: {
code: "bad_request" | "conflict" | "forbidden" | "internal_error" | "mfa_required" | "not_found" | "payload_too_large" | "quota_exceeded" | … 6 more
message: string
details?: unknown
requestId?: string
}
}Request
curl https://api.bucker.io/orgs/{orgSlug}/behavioral-fingerprint/evaluations/{evaluationId} \
-H 'authorization: Bearer $BUCKER_TOKEN'