400 model_capability_not_supported
The model you named isn’t an embedding model. Pick one whereGET /v1/models
shows supports_embeddings: true.
400 unprocessable_entity with model “auto”
Embeddings doesn’t support Auto Routing.model: "auto" returns
400 unprocessable_entity; name a specific embedding model.
422 model missing or invalid field
modelis required unless your key has a default model configured.dimensionsonly works on models that support truncation — sending it to a model that doesn’t will be rejected.input_type,instructions, andsparse_embeddingare provider-specific (e.g. asymmetric models, BytePlus), and a model that doesn’t support them may reject the request.sparse_embeddingis an object ({"type": "enabled"}), not a boolean.truefails validation.
Results seem mismatched to my inputs
When you pass an array of strings, the returneddata array is in the same
order as your input. Match by index, and don’t assume the API reorders or
dedupes — it doesn’t.
Input too long
Each model has acontext_length. Inputs longer than that are rejected — check
the model’s context_length via GET /v1/models and chunk long text before
embedding. (Behavior inferred from the documented context_length field.)
Garbled vectors / wrong format
encoding_format controls the output: "float" returns a numeric array,
"base64" returns a packed string you must decode. If your vectors look like
gibberish, you’re probably reading base64 output as floats.