Skip to content

Propose value maps for picklists and lookups

POST
/ai/value-map
curl --request POST \
--url https://api.sloose.com/ai/value-map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "fields": [ { "module": "example", "apiName": "example", "mapType": "picklist", "values": [ "example" ], "counts": { "additionalProperty": 1 }, "targets": [ { "label": "example", "value": "example" } ] } ], "columns": [], "sampleRows": [], "enabledModules": [ "example" ] }'

Maps the values in a file onto the values a destination field accepts — the step the free matcher cannot do, because no amount of string distance gets from “Aus” to “Australia”.

Every option it names is checked against the field’s own before you see it: picklist options from the org’s schema, and lookup targets only from the records the caller sent, since the API has no CRM connection here. A name that two of those records share resolves to neither.

Certainty decides what happens next. An answer that is both confident and clearly ahead of its runner-up is applied; anything else comes back as candidates, best first, and nothing is written until a person picks one. A confident wrong answer is the expensive kind — it is the one nobody reads.

Fields the org has annotated as personal data are masked before any sample leaves the server, and an org whose AI sample policy is deny sends no rows at all.

Media typeapplication/json
object
fields
required
Array<object>
>= 1 items <= 12 items
object
module
required
string
>= 1 characters <= 80 characters
apiName
required
string
>= 1 characters <= 120 characters
mapType
required
string
Allowed values: picklist lookup
values
required
Array<string>
>= 1 items <= 150 items
counts
object
key
additional properties
number
targets
Array<object>
<= 400 items
object
label
required
string
<= 300 characters
value
required
string
<= 120 characters
columns
Array<string>
default: <= 500 items
sampleRows
Array<object>
default:
object
key
additional properties
string
enabledModules
Array<string>

Proposals. Applied and offered are separated, so a client never has to guess which is which.

Media typeapplication/json

Per field: the mappings confident enough to apply, and candidates for the rest.

object
requestId
required

This call’s id. It is also the ledger’s idempotency key.

string
credits
required

Credits settled for this call.

number
usage
required

Token counts, including cache reads and writes.

object
key
additional properties
model
required

The model that answered.

string
key
additional properties
Examplegenerated
{
"requestId": "example",
"credits": 1,
"usage": {
"additionalProperty": "example"
},
"model": "example"
}

The body did not match the schema (BAD_INPUT, with issues), or a named module or field does not exist.

Media typeapplication/json
object
error
required
string
code
required
string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

No bearer, or one that is expired, revoked or no longer resolves to a member.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

Not enough AI credits, or the org is suspended. balance shows what is left.

Media typeapplication/json
object
error
required
string
code
required
string
balance
required

AI credits. Included credits reset each period; purchased ones do not.

object
included
required
number
purchased
required
number
reserved
required
number
available
required

Included + purchased − reserved

number
periodStart
required
string
periodEnd
required
string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example",
"balance": {
"included": 1,
"purchased": 1,
"reserved": 1,
"available": 1,
"periodStart": "example",
"periodEnd": "example"
}
}

No such org.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed values: ORG_NOT_FOUND
key
additional properties
Example
{
"code": "ORG_NOT_FOUND"
}

The org has no module registry yet — run discovery and enable some modules first.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed values: ORG_NOT_CONFIGURED
key
additional properties
Example
{
"code": "ORG_NOT_CONFIGURED"
}

The model declined. category says why.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed values: AI_REFUSED
category
required
string
key
additional properties
Example
{
"code": "AI_REFUSED"
}

The model’s answer could not be used.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed values: AI_BAD_OUTPUT
key
additional properties
Example
{
"code": "AI_BAD_OUTPUT"
}

AI is not configured on this deployment. Unconfigured paths say so rather than failing.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed values: AI_NOT_CONFIGURED
key
additional properties
Example
{
"code": "AI_NOT_CONFIGURED"
}