# Använd GenderAPI.io V2 med JavaScript och Node.js

> Anropa GenderAPI.io V2 från Node.js med det inbyggda fetch. Ladda ned en ES-modul för enskilda förfrågningar och blandade batchar, för att läsa svaren data/meta och för att hantera fel som rör krediter.

Canonical HTML: https://www.genderapi.io/sv/integrations/javascript

Last reviewed: 2026-09-28

## Körmiljö och exempel att ladda ned

Node.js 22+. HTTP-integrationsexempel att ladda ned; inget separat publicerat SDK.

- [Ladda ned exemplet](https://www.genderapi.io/examples/v2/genderapi-v2.mjs)

## Håll integrationen på en Node.js-server

Den här guiden anropar GenderAPI.io V2-slutpunkten https://api.genderapi.io/api/v2/gender med API-nyckeln i Bearer-rubriken. Använd Node.js 22 eller senare och ladda ned genderapi-v2.mjs till ditt projekt. ES-modulen använder de inbyggda fetch och AbortSignal.timeout; den kräver inget npm-paket. Tack vare filändelsen .mjs kan du importera den från en annan ES-modul utan att ändra package.json.

Sätt GENDERAPI_API_KEY i servermiljön. Lägg den inte i JavaScript-kod för React, Vue eller annan kod som körs i webbläsaren. Låt din egen server autentisera applikationens användare och anropa GenderAPI.io. YOUR_API_KEY i exemplet nedan är ingen giltig nyckel; att importera modulen eller köra den utan uttryckligt körningsalternativ skickar ingen förfrågan.

**Konfigurera Node.js-miljön**

```bash
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"
```

- [Ladda ned genderapi-v2.mjs](https://www.genderapi.io/examples/v2/genderapi-v2.mjs)
- [Kontrollera nyckeln med den kostnadsfria slutpunkten för användning](https://www.genderapi.io/sv/docs/v2/authentication#environment-setup)

## Skicka en POST-förfrågan med JSON och en uttrycklig AI-policy

Spara koden som single.mjs bredvid den nedladdade modulen och kör sedan node single.mjs. Den skickar V2-fälten type och value tillsammans med options.ai_mode: off. Prediktionen läser du i response.data och uppgifterna om förfrågan och debiteringen i response.meta.

En slutförd sökning kostar 1 kredit, även när gender är null; exempelnamnet garanterar inget bestämt resultat.

Hjälpmodulen kräver ett uttryckligt AI-läge och en hexadecimal nyckel med 24 tecken och kontrollerar sedan att meta.access.mode har värdet api_key. Ett lyckat svar från provperioden utlöser ett fel om avvikande åtkomstläge i stället för att tyst fortsätta. Servern kan redan ha förbrukat en provkredit innan modulen upptäcker avvikelsen.

**Enskild sökning i Node.js**

```javascript
import { predict, GenderAPIError } from "./genderapi-v2.mjs";

try {
  const response = await predict({
    type: "name", value: "Alice", options: { ai_mode: "off" },
  });
  const result = response.data;
  console.log(result.result_status, result.gender);
  console.log(result.confidence, result.confidence_kind);
  console.log(response.meta.usage);
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // Do not log error.body: it can include the submitted value.
  console.error("Request failed:", error.code, error.requestId);
  process.exitCode = 1;
}
```

- [Alla fält i enskilda förfrågningar](https://www.genderapi.io/sv/docs/v2/request-parameters)

## Spara resultatet tillsammans med underlaget

En härledd koppling är inte det kön som en person själv uppger. Spara ursprungliga indata, det returnerade underlaget och det personen själv har angett separat. Ett okänt resultat är ett giltigt resultat och bör inte bli en gissad kategori i din applikation.

| Fält | Användning |
| --- | --- |
| `data.gender / data.result_status` | Använd male eller female bara vid identified. Behåll det inbyggda JSON-värdet null vid ett okänt resultat. |
| `data.name / data.match` | Granska det returnerade namnet och den valda kandidaten. En träff på en delsträng visar inte att indata tillhör en person med det förnamnet. |
| `data.confidence / data.confidence_kind` | Konfidensen ligger på en skala från 0 till 1 eller är null. observed_frequency bygger på lagrade frekvenser; model_reported är ett AI-värde. Utvärdera tröskelvärden separat för varje typ. |
| `data.source / data.sample_count` | Skilj mellan dataset, ai och none. AI-resultat har ingen lagrad urvalsstorlek. En urvalsstorlek är inget uppmätt noggrannhetsvärde. |
| `meta.access.mode` | Kontrollera att api_key rapporteras i en kontointegration. Nycklar som saknas eller inte känns igen kan i stället använda den delade IP-provperioden. |
| `meta.usage` | Läs charged_credits och billing_status. Ett lyckat okänt resultat debiteras. Ett förlorat svar visar inte att förfrågan var kostnadsfri. |

- [Svarsfält och okända resultat](https://www.genderapi.io/sv/docs/v2/responses)
- [Noggrannhet och konfidens förklarade](https://www.genderapi.io/sv/accuracy-methodology)
- [Datakällor och den daterade databasprofilen](https://www.genderapi.io/sv/data-provenance)

## Bearbeta en blandad batch och behåll varje rads id

GenderAPI.io V2 bearbetar blandade batchar via POST https://api.genderapi.io/api/v2/gender/batch: upp till 50 poster med en kontonyckel eller 10 med IP-provperioden. De här exemplen kräver en kontonyckel. Ge varje post ett stabilt, unikt id och ett uttryckligt AI-läge. En batch kan kombinera namn, e-postadresser och användarnamn, och varje post kan ha en valfri kontext i country.

Läs varje post i data och sammanfattningen meta.summary. Ett svar med HTTP 200 kan innehålla fel i enskilda poster; en batch där alla poster misslyckades kan ge ett problemsvar på toppnivå med resultaten. Lyckade okända resultat räknas i succeeded. Med index och id kopplar du varje resultat till rätt källrad.

Dela upp indata i stora jobb i grupper om högst 50 poster och skicka dem till att börja med en i taget. Spara varje svar och dess användning innan du går vidare till nästa grupp. Stoppa vid ett transportfel, ett fel i kontoåtkomsten eller en obekräftad debitering och klarlägg läget för den aktuella gruppen. Inför parallella sändningar först när du har kontrollerat ditt kontos gränser; den största batchstorleken garanterar ingen genomströmning.

**Batchsökning i Node.js**

```javascript
import { predictBatch, GenderAPIError } from "./genderapi-v2.mjs";

const items = [
  { id: "row-1", type: "name", value: "Alice", options: { ai_mode: "off" } },
  { id: "row-2", type: "email", value: "alex@example.com", options: { ai_mode: "off" } },
  { id: "row-3", type: "username", value: "sample_handle", options: { ai_mode: "off" } },
];
try {
  const response = await predictBatch(items);
  for (const item of response.data) {
    if (item.error) {
      console.log(item.id, "failed", item.error.code);
    } else {
      console.log(item.id, item.data.result_status, item.data.gender);
    }
  }
  console.log(response.meta.summary, response.meta.usage);
  if (response.meta.summary.failed > 0) process.exitCode = 2;
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // error.body can retain an all-failed batch and billing details.
  console.error("Batch needs review:", error.code, error.requestId);
  process.exitCode = 1;
}
```

- [Indata, resultat och debitering för batchar](https://www.genderapi.io/sv/docs/v2/batch)

## Bestäm när AI ska användas

forceToGenderize är valfritt för namn, e-postadresser och användarnamn. När det är aktiverat utelämnar du ai_mode eller använder fallback; off och always kan inte kombineras med det och ger 422. Ett positivt startsaldo räcker för att starta en förfrågan, även om den slutliga debiteringen gör saldot negativt.

Smeknamnsläget kan returnera ett kön tillsammans med name: null. Det kan också ge ett okänt resultat. Varken vanlig AI-reserv eller tolkning av smeknamn garanterar ett korrekt svar eller ett värde som inte är null.

Hjälpmodulen för JavaScript kräver alltid options.ai_mode. För tolkning av smeknamn skickar du forceToGenderize: true tillsammans med options: { ai_mode: 'fallback' }.

| Alternativ i förfrågan | Beteende | Krediter för en lyckad sökning |
| --- | --- | --- |
| options.ai_mode: off | Använd bara datamängden. | 1, även för ett okänt resultat |
| options.ai_mode: fallback | Kontrollera datamängden först och använd sedan vanlig AI om inget kön returneras. Detta är standard för enskilda förfrågningar. | Totalt 1, inklusive AI-reserv |
| options.ai_mode: always | Använd AI direkt. | 2 |
| forceToGenderize: true | Kontrollera datamängden först och låt sedan AI tolka ett personligt smeknamn eller alias, även utan ett riktigt förnamn. | 1 för ett resultat som fastställs i datamängden; totalt 2 om AI används |

- [AI-alternativ och tolkning av smeknamn](https://www.genderapi.io/sv/docs/v2/ai-options)
- [Krediter och användning](https://www.genderapi.io/sv/docs/v2/credits-and-usage)

## Bestäm vad som händer efter ett fel

Exemplen skickar varje åtgärd bara en gång. De upprepar den aldrig automatiskt: att skicka igen är en ny åtgärd som debiteras. En överskriden tidsgräns eller ett anslutningsfel betyder att klienten inte fick något fullständigt svar; det visar varken att servern avbröt bearbetningen eller att inga krediter drogs.

Spara det returnerade request_id och debiteringsstatusen tillsammans med posten för ditt jobb. Felobjektet behåller svaret för en kontrollerad analys men kan innehålla de ursprungliga indata: skriv varken hela objektet, svaret eller API-nyckeln till vanliga loggar.

| Situation | Applikationens beslut |
| --- | --- |
| Lyckat okänt resultat | Behåll null, reason och usage. Det är ett avslutat resultat som debiteras och ingen misslyckad rad för ett automatiskt nytt försök. |
| Valideringsfel 422 | Rätta de indata som anges i fälten i Problem Details innan du skickar en ny förfrågan. |
| 401 / 403 | Kontrollera kontoåtkomsten eller det tillgängliga saldot. Att skicka samma förfrågan igen åtgärdar inte orsaken. |
| 429 | Respektera rubriken Retry-After om den finns. Kontrollera felet och debiteringsstatusen och planera sedan nästa försök medvetet. |
| Nätverksfel, överskriden tidsgräns eller oläsbart svar | Registrera att resultatet och debiteringen är obekräftade. Klarlägg läget innan du skickar igen; klienten kan inte ångra en bearbetning som redan har slutförts på servern. |
| billing_status: unconfirmed | charged_credits och remaining_credits kan vara null. Kontakta supporten med request_id innan du gör ett nytt försök; ersätt inte null med noll krediter. |
| Fel i vissa poster i en batch | Spara de slutförda posterna först. Granska de misslyckade posterna och deras debitering; skicka bara om de felen, inte hela batchen. |

- [Problem Details och beslut om nya försök](https://www.genderapi.io/sv/docs/v2/errors-and-retries)
- [Krediter och bekräftad debitering](https://www.genderapi.io/sv/docs/v2/credits-and-usage)

## Känn till tidsgränsen för fetch och kontrollerna av svaret

Standardtidsgränsen är 10 000 millisekunder via AbortSignal.timeout, inklusive läsningen av svarets innehåll. Ett avbrott på klientsidan visar inte att bearbetningen eller debiteringen på servern stoppades. Modulen stänger av omdirigeringar, skiljer HTTP-fel från oläsbara svar och gör aldrig om förfrågningar automatiskt.

Tester med simulerad transport täcker lyckade svar, okända resultat, delvis lyckade batchar, inloggningsuppgifter som används som ersättning och fel. De kräver varken riktiga prediktioner eller åtgärder med krediter; de mäter varken tillgänglighet eller noggrannhet i produktion. Varje uttryckligt demokommando nedan skickar en egen förfrågan som debiteras.

**Valfria uttryckliga demor i Node.js**

```bash
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batch
```

- [Node.js-dokumentation om fetch](https://nodejs.org/api/globals.html#fetch)
- [Node.js-dokumentation om AbortSignal.timeout](https://nodejs.org/api/globals.html#static-method-abortsignaltimeoutdelay)

## Kan jag lägga in den här koden i JavaScript som körs i webbläsaren?

Behåll den på din server. Applikationskod som körs i webbläsaren exponerar API-nyckeln för användarna. Anropa din egen autentiserade backend från webbläsaren och låt den skicka förfrågan till GenderAPI.io.

## Förbrukar ett okänt resultat krediter?

Ja. En lyckad vanlig sökning kostar 1 kredit, även när gender är null. Den vanliga AI-reserven ingår i den krediten. Läget always kostar 2 krediter; forceToGenderize kostar 1 kredit om datamängden ger resultatet, eller 2 om AI används.

## Gör exemplet om en misslyckad förfrågan?

Nej. Varje ny förfrågan är en egen åtgärd. Granska felet, resultaten för de enskilda posterna och debiteringsstatusen innan du bestämmer dig för att skicka igen. Ett uteblivet svar visar inte att det tidigare försöket var kostnadsfritt.

## Måste jag installera ett paket?

Nej. Ladda ned exemplet direkt från den här guiden hos GenderAPI.io. Det har inga körberoenden till externa paket och är inget separat SDK som publiceras i pip eller npm. Granska det och anpassa det till din applikation; för API-kontraktet gäller dokumentationen för GenderAPI.io V2.

## Referensdokumentation

- [Autentisering i GenderAPI.io V2](https://www.genderapi.io/sv/docs/v2/authentication)
- [Svarsfält i V2](https://www.genderapi.io/sv/docs/v2/responses)
- [Batchresultat och gränser](https://www.genderapi.io/sv/docs/v2/batch)
- [Dokumentation om fel och nya försök](https://www.genderapi.io/sv/docs/v2/errors-and-retries)
