# netintel.dev Batch Translation

> netintel.dev Batch Translation is a paid API for AI agents from netintel.dev, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-14).

Translates an array of strings in a single request, preserving caller-assigned IDs and returning per-item status, with glossary enforcement, tone/formality control, and partial success so one failed item never aborts the batch.

## Facts

- Endpoint: POST https://netintel.dev/translate/batch
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-dev-batch-translation-f07e34e4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_VvfMBWRS4Uz84C7ja7yTS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability netintel-dev-batch-translation-f07e34e4 -d '<json body>'
```

Example prompt: Translate all these UI strings to French — keep 'Acme' untouched, use a friendly and concise tone, and make sure each string comes back with its original ID so I can map the results: [{"id":"btn_save","text":"Save changes"},{"id":"btn_cancel","text":"Cancel"},{"id":"greeting","text":"Hello, Acme user!"}].

## When to prefer this

Choose this endpoint when you need to translate many strings in a single HTTP call, especially when caller-assigned IDs must survive round-trip so you can reassemble a string table. Prefer it over single-string endpoints when you have 2–200 items to localize, when partial success is acceptable, when you need glossary enforcement or brand-name protection, or when you want per-item confidence scoring and an overall batch quality grade. It is particularly well-suited for CI/CD localization pipelines, mobile app string tables, and e-commerce product copy.

## Known failure modes

- Individual items can fail with reasons: structure_broken, unparseable, truncated, llm_unavailable, timeout — while the rest of the batch succeeds
- Exceeding 200 items or the 64KB total body limit may reject the entire request
- Invalid ISO 639-1 target language code or unrecognized language alias returns an error
- Payment of 0.05 USDC not provided or rejected via x402 protocol blocks the request
- Glossary conflicts with protected_values may cause per-item warnings

## How this service works

Translate many independent strings in one request — each with a caller ID preserved in the response — with per-item status, glossary and tone support, and partial success so one bad item never fails the batch, so agents can localize whole string tables in a single call.

## Output

An array of result objects in input order, each carrying the original caller-assigned ID, a status of 'ok' or 'failed', the translated text (null if failed), detected source language, a confidence value, any warnings, and a failure reason if applicable. The response also includes an overall 0-100 quality score and a letter grade A-F for the entire batch.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "required": [
      "items",
      "target"
     ],
     "properties": {
      "tone": {
       "type": "string",
       "description": "Optional tone guidance, e.g. \"friendly and concise\"."
      },
      "items": {
       "type": "array",
       "description": "The strings to translate: [{\"id\":\"greeting\",\"text\":\"Hello {{name}}\",\"context\":\"button label\"}]. ids and order are preserved in the response. 1-200 items, 64KB total."
      },
      "source": {
       "type": "string",
       "description": "Source language, applied to every item. Auto-detected per item when omitted."
      },
      "target": {
       "type": "string",
       "description": "Target language — ISO 639-1 code (\"fr\") or English name (\"French\"). Aliases also accepted: target_lang, target_language, to, lang."
      },
      "glossary": {
       "type": "object",
       "description": "Enforced term mappings applied to all items: {\"dashboard\":\"tableau de bord\"}."
      },
      "formality": {
       "type": "string",
       "description": "\"formal\", \"informal\", or \"neutral\" (default)."
      },
      "protected_values": {
       "type": "array",
       "description": "Strings that must survive byte-for-byte in every item — brand names, IDs: [\"Acme\"]."
      }
     }
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "grade": {
       "type": "string",
       "description": "Letter grade A-F derived from score"
      },
      "items": {
       "type": "array",
       "description": "One entry per input item, in input order, each carrying your id: {id, status (\"ok\"|\"failed\"), translated, detected_language, confidence, warnings, reason}. A failed item has translated=null and a reason (structure_broken, unparseable
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "grade": "A",
  "items": [
   {
    "id": "greeting",
    "status": "ok",
    "warnings": [],
    "confidence": 0.98,
    "translated": "Bonjour {{name}}",
    "detected_language": "en"
   },
   {
    "id": "cta",
    "status": "ok",
    "warnings": [],
    "confidence": 0.98,
    "translated": "Ouvrir le tableau de bord",
    "detected_language": "en"
   }
  ],
  "score": 100,
  "usage": {
   "model": "claude-haiku-4-5-20251001",
   "model_calls": 2,
   "input_tokens": 480,
   "output_tokens": 64
  },
  "failed": 0,
  "pricing": {
   "base_usd": "$0.05",
   "overage_usd": 0,
   "overage_items": 0,
   "included_items": 25,
   "overage_per_item_usd": 0.002
  },
  "findings": [],
  "warnings": [],
  "succeeded": 2,
  "item_count": 2,
  "billed_items": 2,
  "target_language": "fr"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-dev-batch-translation-f07e34e4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel.dev](https://www.zero.xyz/host/netintel.dev/llms.txt)
