# Πρόβλεψη φύλου από ονόματα χρήστη και ψευδώνυμα

> Αναλύστε ονόματα χρήστη και ψευδώνυμα με τη V2: forceToGenderize, AI ανά στοιχείο, άγνωστα αποτελέσματα και κόστος των επαναλαμβανόμενων αιτημάτων.

Canonical HTML: https://www.genderapi.io/el/blog/problepsi-fylou-apo-psevdonyma-kai-onomata-christi

Last reviewed: 2026-09-29

## Στοιχεία δημοσίευσης

Πρώτη δημοσίευση: 2025-06-04T13:00:00.000Z

Τελευταίος έλεγχος: 2026-09-29T00:00:00.000Z

## Μπορεί να προσδιοριστεί το φύλο από ένα όνομα χρήστη;

Το GenderAPI μπορεί να αναλύσει τις ονοματικές ενδείξεις σε ένα όνομα χρήστη, ένα ψευδώνυμο ή ένα εμφανιζόμενο όνομα όταν λείπει το πραγματικό όνομα. Χρησιμοποιήστε το API για μεμονωμένα αιτήματα ή αιτήματα παρτίδας ή τη ροή Excel/CSV και αντιμετωπίστε το αποτέλεσμα ως πρόβλεψη και όχι ως επαληθευμένη ταυτότητα.

## Ένα ψευδώνυμο δεν είναι επαλήθευση ταυτότητας

Το @alice_smith μπορεί να αντιστοιχεί σε ονοματικό στοιχείο. Για το prenses με forceToGenderize μπορεί να επιστραφεί πρόβλεψη ακόμη κι αν το όνομα παραμείνει null. Το user47291μπορεί να παραμείνει άγνωστο. Πρόκειται για ενδεικτικές εισόδους και δεν τους αποδίδουμε εκ των προτέρων κανένα αποτέλεσμα φύλου.

## Πώς λειτουργεί η πρόβλεψη φύλου από όνομα χρήστη;

Το σύστημα αναζητά αναγνωρίσιμα ονοματικά στοιχεία και άλλες γλωσσικές ενδείξεις στο όνομα χρήστη ή στο εμφανιζόμενο όνομα. Η κανονική εφεδρική χρήση AI αναζητά ένα αξιοποιήσιμο πραγματικό όνομα. Με το forceToGenderize το AI μπορεί να ερμηνεύσει ένα ψευδώνυμο χωρίς πραγματικό όνομα. Το αποτέλεσμα επιστρέφεται μαζί με τα πεδία πλαισίου. Μια τυχαία ή ανεπαρκής είσοδος δεν πρέπει να εξαναγκάζεται σε αποτέλεσμα.

- Όνομα χρήστη: Ψευδώνυμο ή εμφανιζόμενο όνομα
- Ανάλυση ενδείξεων: Όνομα και πλαίσιο
- Πρόβλεψη: Φύλο και βαθμός βεβαιότητας

## Επιλέξτε τη μέθοδο που ταιριάζει στα δεδομένα σας

- [Μεμονωμένο αίτημα Αναλύστε ένα όνομα χρήστη μέσω REST API. Δείτε τον οδηγό API →](https://www.genderapi.io/el/docs/v2/gender-from-username)
- [Αίτημα παρτίδας Στείλτε πολλά στοιχεία σε ένα δομημένο αίτημα. Δείτε τον οδηγό για τις παρτίδες →](https://www.genderapi.io/el/docs/v2/batch)
- [Ροή Excel/CSV Επεξεργαστείτε ένα αρχείο χωρίς να αναπτύξετε ενσωμάτωση. Άνοιγμα του εργαλείου →](https://app.genderapi.io/csv)

## Αναλύστε τα ονόματα χρήστη ενός αρχείου Excel ή CSV σε τέσσερα βήματα

### Ανοίξτε το εργαλείο Excel/CSV

Ανοίξτε το εργαλείο εισαγωγής του GenderAPI και ανεβάστε το αρχείο που θέλετε να επεξεργαστείτε.

### Επιλέξτε τη στήλη προέλευσης

Συνδέστε τη στήλη που περιέχει ονόματα χρήστη, ψευδώνυμα ή εμφανιζόμενα ονόματα.

### Ενεργοποιήστε την ερμηνεία ψευδωνύμων

Ενεργοποιήστε την επιλογή που ερμηνεύει ψευδώνυμα και ονόματα που χρησιμοποιούνται στα μέσα κοινωνικής δικτύωσης.

### Ελέγξτε ένα δείγμα και έπειτα εξαγάγετε

Εξετάστε πρώτα ένα αντιπροσωπευτικό δείγμα εγγραφών, έπειτα επεξεργαστείτε ολόκληρο το αρχείο και κατεβάστε τα εμπλουτισμένα δεδομένα.

Οι νέοι λογαριασμοί περιλαμβάνουν 200 δωρεάν πιστώσεις API την ημέρα, ώστε να μπορείτε να δοκιμάσετε τη ροή σε ένα δείγμα πριν επεξεργαστείτε ολόκληρο το αρχείο.

Τα αρχεία Excel και CSV που ανεβάζετε αφαιρούνται από τα ενεργά συστήματα εντός πέντε ημερών και, μετά την εξαγωγή των αποτελεσμάτων, μπορείτε να ζητήσετε νωρίτερη αφαίρεσή τους. Τα αντίγραφα ασφαλείας που αντικαθίστανται περιοδικά και έχουν περιορισμένη πρόσβαση μπορεί να τα περιέχουν για έως 15 ακόμη ημέρες. Περισσότερες πληροφορίες θα βρείτε στην [πολιτική απορρήτου](https://www.genderapi.io/el/privacy-policy).

## Χρησιμοποιήστε το ως συμπληρωματική ένδειξη όταν λείπει το πραγματικό όνομα

Η ανάλυση ονομάτων χρήστη μπορεί να είναι χρήσιμη για δεδομένα από μέσα κοινωνικής δικτύωσης, κοινότητες, παιχνίδια και προφίλ που δημιουργούν οι ίδιοι οι χρήστες, όταν το πεδίο του ονόματος είναι κενό. Αν διαθέτετε μια πιο άμεση και επιτρεπόμενη πηγή, όπως ένα πραγματικό όνομα ή μια διεύθυνση email, χρησιμοποιήστε το αντίστοιχο endpoint.

- [Εξαγωγή ονόματος και ένδειξης φύλου από διεύθυνση email](https://www.genderapi.io/el/blog/exagogi-onomaton-apo-diefthynseis-email)
- [Επεξεργασία αρχείων Excel και CSV σε παρτίδες](https://www.genderapi.io/el/blog/determining-gender-of-names-in-excel-csv-with-gender-api)

## Μην αντιμετωπίζετε το αποτέλεσμα ως επαληθευμένη ταυτότητα

Δεν περιέχει κάθε ψευδώνυμο πραγματικό όνομα, οι πολιτισμικοί συσχετισμοί διαφέρουν και η ίδια έκφραση μπορεί να έχει διαφορετική σημασία σε διαφορετικές γλώσσες. Αν η ένδειξη είναι ανεπαρκής, αποδεχτείτε ένα κενό αποτέλεσμα αντί να μετατρέψετε αδύναμα δεδομένα σε οριστικό συμπέρασμα.

Αποθηκεύστε μαζί τα πεδία βαθμού βεβαιότητας και προέλευσης της V2, μετρήστε την απόδοση με τα δικά σας δεδομένα και μη βασίζετε σε αυτή την ένδειξη καμία απόφαση με σημαντικές συνέπειες για ένα άτομο, για παράδειγμα σε θέματα εργασίας, δανεισμού ή υγείας.

## Αποθηκεύστε χωριστά τα αρχικά δεδομένα και την πρόβλεψη

Διατηρήστε το αρχικό αναγνωριστικό της εγγραφής. Το API δεν ανοίγει κανένα προφίλ, δεν επαληθεύει ποιος είναι ο κάτοχος ενός λογαριασμού και δεν επιβεβαιώνει καμία ταυτότητα. Στείλτε πλαίσιο χώρας μόνο όταν διαθέτετε αξιόπιστο στοιχείο. Μην το συμπεραίνετε από το domain ή από τη γλώσσα του ιστότοπου.

Στείλτε το όνομα χρήστη με type: username και όχι το URL ενός προφίλ. Η αναζήτηση στο σύνολο δεδομένων αφαιρεί ένα αρχικό @, κανονικοποιεί το κείμενο και σχηματίζει υποψηφίους με βάση διαχωριστικά και ψηφία. Ένα κανονικό αίτημα μπορεί να προσθέσει περιορισμένο αριθμό αντιστοιχίσεων βάσει προθέματος και επιθέματος. Το forceToGenderize δεν χρησιμοποιεί αυτά τα πρόσθετα τμήματα. Αν ταιριάζουν περισσότερες εγγραφές, επιλέγεται εκείνη με τον μεγαλύτερο αριθμό καταγεγραμμένων εμφανίσεων. Χρησιμοποιήστε type: email για διευθύνσεις email και type: name για πραγματικά ονόματα.

| Ενδεικτική είσοδος | Πεδίο ή επιλογή | Ερμηνεία |
| --- | --- | --- |
| @alice_smith | data.name / data.match | Διατηρήστε το αρχικό όνομα χρήστη. Μην αντιμετωπίζετε το τμήμα που εντοπίστηκε ως επαληθευμένο όνομα. |
| prenses | forceToGenderize: true | Επιτρέπει την ερμηνεία ενός ψευδωνύμου χωρίς πραγματικό μικρό όνομα. Μπορεί να επιστραφεί φύλο με data.name ίσο με null. Μην επινοείτε όνομα για το άτομο. |
| user47291 | data.result_status: unknown | Μια αμφίσημη ή ανεπαρκής είσοδος μπορεί να παραμείνει άγνωστη. Αυτό δεν αποτελεί λόγο για αυτόματη επανάληψη του αιτήματος. |

### Επιλέξτε τον τρόπο επεξεργασίας και το κόστος σε πιστώσεις

Για ένα μεμονωμένο αίτημα η προεπιλογή είναι fallback, ενώ για τα στοιχεία μιας παρτίδας είναι off. Το forceToGenderize είναι προαιρετικό για ονόματα, διευθύνσεις email και ονόματα χρήστη. Σε αυτή την περίπτωση παραλείψτε το ai_mode ή χρησιμοποιήστε fallback, επειδή η επιλογή δεν συνδυάζεται με τα off και always. Χρεώνονται και τα επιτυχή αποτελέσματα unknown. Για να ξεκινήσει ένα αίτημα αρκεί θετικό αρχικό υπόλοιπο. Μετά την ολοκλήρωση της λειτουργίας το υπόλοιπο μπορεί να γίνει αρνητικό.

| Επιλογή | Επεξεργασία | Κόστος ανά επιτυχές στοιχείο |
| --- | --- | --- |
| options.ai_mode: off | Μόνο το σύνολο δεδομένων | 1 πίστωση |
| options.ai_mode: fallback | Πρώτα το σύνολο δεδομένων και, αν δεν προσδιοριστεί φύλο, κανονική εφεδρική χρήση AI | 1 πίστωση συνολικά, μαζί με το AI |
| options.ai_mode: always | Απευθείας στο AI | 2 πιστώσεις |
| forceToGenderize: true | Πρώτα το σύνολο δεδομένων και έπειτα ερμηνεία του ψευδωνύμου χωρίς να απαιτείται πραγματικό όνομα | 1 αν αρκεί το σύνολο δεδομένων, 2 συνολικά αν χρησιμοποιηθεί AI |

### Ορίστε δικές τους επιλογές για κάθε στοιχείο μιας παρτίδας

Οι ενδεικτικές είσοδοι δεν εγγυώνται μια συγκεκριμένη πρόβλεψη. Ορίστε το GENDERAPI_API_KEY στο περιβάλλον του διακομιστή και μην τοποθετείτε το κλειδί σε δημόσιο κώδικα στην πλευρά του πελάτη. Οι V1 και V2 χρησιμοποιούν το ίδιο κλειδί λογαριασμού και το ίδιο υπόλοιπο. Επαληθεύστε το κλειδί με το /api/v2/usage και ελέγξτε ότι το meta.access.mode έχει την τιμή api_key.

Επιλέξτε γλώσσα προγραμματισμού. [Ρυθμίστε το κλειδί API σας](https://www.genderapi.io/el/docs/v2/authentication#environment-setup), και έπειτα εκτελέστε το παράδειγμα στον διακομιστή σας.

Κάθε αίτημα πρόβλεψης είναι μια νέα χρεώσιμη λειτουργία, ακόμη και όταν πρόκειται για νέα προσπάθεια. Αυτά τα παραδείγματα δεν επαναλαμβάνουν αυτόματα το αίτημα. Ελέγξτε την κατάσταση χρέωσης πριν στείλετε άλλο αίτημα.

### Πριν από την εκτέλεση: πρόσβαση και χειρισμός σφαλμάτων

Εκτελέστε αυτά τα παραδείγματα στον διακομιστή σας. Ορίστε στο περιβάλλον της διεργασίας το GENDERAPI_API_KEY με το υπάρχον κλειδί API σας. Ελέγξτε ότι το meta.access.mode έχει την τιμή api_key, επειδή ένα κλειδί που δεν αναγνωρίζεται μπορεί να οδηγήσει στη δοκιμαστική πρόσβαση IP.

Στις αποκρίσεις JSON με HTTP 4xx και 5xx διατηρείται το σώμα του σφάλματος και το παράδειγμα τερματίζει με μη μηδενικό κωδικό εξόδου. Ελέγξτε τα code, action και meta.usage.billing_status πριν δοκιμάσετε ξανά. Στις αποκρίσεις παρτίδας με HTTP 200 ελέγξτε επίσης το data ή το error κάθε στοιχείου.

**cURL**

cURL 7.76+ σε κέλυφος POSIX. Εκτελέστε το στο τερματικό. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://curl.se/docs/manpage.html)

```bash
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender/batch' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "items": [
    {
      "id": "profile-001",
      "type": "username",
      "value": "@alice_smith",
      "options": {
        "ai_mode": "off"
      }
    },
    {
      "id": "profile-002",
      "type": "username",
      "value": "alexriver",
      "options": {
        "ai_mode": "fallback"
      }
    },
    {
      "id": "profile-003",
      "type": "username",
      "value": "prenses",
      "country": "TR",
      "forceToGenderize": true
    }
  ]
}'
```

**JavaScript / Node.js**

Node.js 22+ με ενσωματωμένο fetch. Αποθηκεύστε ως example.mjs και εκτελέστε node example.mjs. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://nodejs.org/api/globals.html#fetch)

```javascript
// Server-side Node.js. Save as example.mjs.
const apiKey = process.env.GENDERAPI_API_KEY;
if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");
const body = {
  "items": [
    {
      "id": "profile-001",
      "type": "username",
      "value": "@alice_smith",
      "options": {
        "ai_mode": "off"
      }
    },
    {
      "id": "profile-002",
      "type": "username",
      "value": "alexriver",
      "options": {
        "ai_mode": "fallback"
      }
    },
    {
      "id": "profile-003",
      "type": "username",
      "value": "prenses",
      "country": "TR",
      "forceToGenderize": true
    }
  ]
};

const response = await fetch("https://api.genderapi.io/api/v2/gender/batch", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(30_000),
  redirect: "error",
});
const raw = await response.text();
if (!(response.headers.get("content-type") ?? "").includes("json")) {
  throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);
}
const result = JSON.parse(raw); // Also accepts application/problem+json.
if (!response.ok) {
  console.error(`HTTP ${response.status}`, result);
  process.exitCode = 1; // A retry is a new operation; inspect billing first.
} else {
  console.log(JSON.stringify(result, null, 2));
  // For batches, inspect every item: HTTP 200 may contain item errors.
}
```

**Python**

Python 3.10+ με την τυπική βιβλιοθήκη. Αποθηκεύστε ως example.py και εκτελέστε python3 example.py. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://docs.python.org/3/library/urllib.request.html)

```python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = urllib.request.Request(
    "https://api.genderapi.io/api/v2/gender/batch",
    method="POST",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + api_key,
        "Content-Type": "application/json",
    },
)
opener = urllib.request.build_opener(NoRedirect())
try:
    response = opener.open(request, timeout=30)
except urllib.error.HTTPError as error:
    response = error  # Keep the Problem Details body on non-2xx responses.
with response:
    status = response.status
    raw = response.read().decode("utf-8")
    if "json" not in response.headers.get("Content-Type", ""):
        raise RuntimeError(f"HTTP {status}: expected a JSON response")
    result = json.loads(raw)
print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)
if not 200 <= status < 300:
    sys.exit(1)  # Inspect code, action and billing before retrying.
# For batches, inspect every item even when HTTP status is 200.
```

**PHP**

PHP 8+ με την επέκταση cURL. Αποθηκεύστε ως example.php και εκτελέστε php example.php. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://www.php.net/manual/en/book.curl.php)

```php
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"items":[{"id":"profile-001","type":"username","value":"@alice_smith","options":{"ai_mode":"off"}},{"id":"profile-002","type":"username","value":"alexriver","options":{"ai_mode":"fallback"}},{"id":"profile-003","type":"username","value":"prenses","country":"TR","forceToGenderize":true}]}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender/batch');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.
```

**Java**

Java 17+ με τον τυπικό πελάτη HTTP. Αποθηκεύστε ως GenderApiExample.java και εκτελέστε java GenderApiExample.java. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://docs.oracle.com/en/java/javase/17/docs/api/java.net.http/java/net/http/HttpClient.html)

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class GenderApiExample {
    private static String requiredEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name);
        return value;
    }

    public static void main(String[] args) throws Exception {
        String apiKey = requiredEnv("GENDERAPI_API_KEY");
        String body = "{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}";
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .followRedirects(HttpClient.Redirect.NEVER)
            .build();
        HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender/batch"))
            .timeout(Duration.ofSeconds(30))
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
            .build();
        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
        if (!response.headers().firstValue("content-type").orElse("").contains("json")) {
            throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON");
        }
        // JSON text; parse with your application's JSON library when integrating.
        if (response.statusCode() < 200 || response.statusCode() >= 300) {
            System.err.println(response.body()); // Includes Problem Details.
            System.exit(1);
        }
        System.out.println(response.body());
        // For batches, inspect each item's data or error, including on HTTP 200.
    }
}
```

**C# / .NET**

Εφαρμογή κονσόλας .NET 8+. Χρησιμοποιήστε το ως Program.cs σε ένα έργο κονσόλας και έπειτα εκτελέστε dotnet run. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/http/httpclient)

```csharp
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

string RequiredEnv(string name) =>
    !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name))
        ? Environment.GetEnvironmentVariable(name)!
        : throw new InvalidOperationException($"Set {name}");

var apiKey = RequiredEnv("GENDERAPI_API_KEY");
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender/batch");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}", Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
var raw = await response.Content.ReadAsStringAsync();
if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false))
    throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");
using var result = JsonDocument.Parse(raw);
if (!response.IsSuccessStatusCode)
{
    Console.Error.WriteLine(result.RootElement); // Preserve Problem Details.
    Environment.ExitCode = 1;
}
else
{
    Console.WriteLine(result.RootElement);
    // For batches, inspect every item even on HTTP 200.
}
```

**Go**

Go 1.22+ με την τυπική βιβλιοθήκη. Αποθηκεύστε ως main.go και εκτελέστε go run main.go. [Τεκμηρίωση του περιβάλλοντος εκτέλεσης](https://pkg.go.dev/net/http)

```go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)

func requiredEnv(name string) string {
    value := os.Getenv(name)
    if value == "" { panic("Set " + name) }
    return value
}

func run() error {
    apiKey := requiredEnv("GENDERAPI_API_KEY")
    body := "{\"items\":[{\"id\":\"profile-001\",\"type\":\"username\",\"value\":\"@alice_smith\",\"options\":{\"ai_mode\":\"off\"}},{\"id\":\"profile-002\",\"type\":\"username\",\"value\":\"alexriver\",\"options\":{\"ai_mode\":\"fallback\"}},{\"id\":\"profile-003\",\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}]}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender/batch", strings.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + apiKey)
    request.Header.Set("Content-Type", "application/json")
    client := &http.Client{
        Timeout: 30 * time.Second,
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    raw, err := io.ReadAll(response.Body)
    if err != nil { return err }
    if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) {
        return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode)
    }
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw)
    }
    fmt.Println(string(raw))
    // For batches, inspect every item even on HTTP 200.
    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling.
        os.Exit(1)
    }
}
```

- [Οδηγός για σφάλματα και νέες προσπάθειες →](https://www.genderapi.io/el/docs/v2/errors-and-retries)

### Διαχειριστείτε τα αποτελέσματα λιστών και τα επαναλαμβανόμενα αιτήματα

Το POST /api/v2/gender/batch δέχεται έως 50 στοιχεία με κλειδί API και 10 με τη δοκιμαστική πρόσβαση IP. Ορίστε για κάθε στοιχείο δικές του τιμές type, value και options. Αν θέλετε να χρησιμοποιήσετε την κανονική εφεδρική χρήση AI, δηλώστε ρητά fallback σε κάθε στοιχείο. Το id πρέπει να είναι μοναδικό μέσα στην παρτίδα. Το index ξεκινά από το μηδέν μέσα στην παρτίδα που στάλθηκε. Αποθηκεύστε χωριστά τα δικά σας αναγνωριστικά εργασίας και γραμμής προέλευσης.

Το HTTP 200 δεν σημαίνει ότι όλα τα στοιχεία ήταν επιτυχή. Διαχειριστείτε χωριστά τα αποτελέσματα identified, unknown και error. Το meta.summary.succeeded μετρά τόσο τα identified όσο και τα unknown. Αξιολογήστε μαζί τα data.gender, source, confidence_kind, confidence, match και reason. Μην αντιμετωπίζετε ως ισοδύναμα μια βαθμολογία του AI και μια συχνότητα στο σύνολο δεδομένων.

Αν το meta.usage.billing_status έχει την τιμή confirmed, επαναλάβετε μόνο τα λειτουργικά σφάλματα που επιτρέπουν νέο αίτημα. Αν η κατάσταση είναι unconfirmed ή η απόκριση χάθηκε, σταματήστε και ελέγξτε τη χρέωση. Η εκ νέου αποστολή του ίδιου στοιχείου, ακόμη και ενός επιτυχούς αποτελέσματος unknown, δημιουργεί νέα χρεώσιμη λειτουργία. Μην ξαναστέλνετε ποτέ ολόκληρη τη λίστα χωρίς έλεγχο.

[Σύμβαση αιτημάτων παρτίδας](https://www.genderapi.io/el/docs/v2/batch) · [Πεδία απόκρισης](https://www.genderapi.io/el/docs/v2/responses) · [Επιλογές AI](https://www.genderapi.io/el/docs/v2/ai-options) · [Αξιολόγηση ακρίβειας και βαθμού βεβαιότητας](https://www.genderapi.io/el/accuracy-methodology) · [Πολιτική απορρήτου](https://www.genderapi.io/el/privacy-policy)

Τα πρόσθετα για Excel και Google Sheets και οι άλλες έτοιμες ενσωματώσεις μπορεί να χρησιμοποιούν δική τους σύνδεση και δική τους μορφή αποτελεσμάτων. Μην υποθέτετε ότι η έξοδός τους ακολουθεί αυτό το σχήμα JSON της V2. Συμβουλευτείτε τον ενημερωμένο οδηγό της αντίστοιχης ενσωμάτωσης.

## Το φύλο από ένα όνομα χρήστη ή ένα ψευδώνυμο

### Μπορεί να προσδιοριστεί το φύλο από ένα όνομα χρήστη;

Αν ενεργοποιήσετε το forceToGenderize στη V2, ελέγχεται πρώτα το σύνολο δεδομένων. Αν δεν προσδιοριστεί φύλο, το AI μπορεί να ερμηνεύσει το ψευδώνυμο χωρίς να χρειάζεται πραγματικό όνομα. Το αποτέλεσμα μπορεί να παραμείνει unknown και δεν αποτελεί επαληθευμένη ταυτότητα. Η κανονική εφεδρική χρήση AI απαιτεί αντίθετα ένα αξιοποιήσιμο πραγματικό όνομα.

### Ποια ονόματα χρήστη δίνουν τα πιο χρήσιμα αποτελέσματα;

Πιο χρήσιμη ένδειξη μπορεί να προκύψει από τιμές που περιέχουν πραγματικό όνομα, αναγνωρίσιμη μορφή ψευδωνύμου ή σαφές ονοματικό στοιχείο. Τυχαίες ακολουθίες χαρακτήρων και ονόματα εμπορικών σημάτων μπορεί να μη δώσουν κανένα αποτέλεσμα.

### Μπορώ να αναλύσω ένα μεμονωμένο όνομα χρήστη μέσω API;

Ναι. Το endpoint για μεμονωμένα αιτήματα αναλύει ένα στοιχείο. Για περισσότερα στοιχεία υπάρχει ειδικό endpoint για αιτήματα παρτίδας.

### Μπορώ να εισαγάγω αρχείο Excel ή CSV;

Ναι. Στο εργαλείο αρχείων μπορείτε να επιλέξετε τη στήλη με τα ονόματα χρήστη ή τα εμφανιζόμενα ονόματα και να ενεργοποιήσετε την ερμηνεία ψευδωνύμων.

### Γιατί πρέπει να αποθηκεύω μαζί τα πεδία βαθμού βεβαιότητας και προέλευσης της V2;

Στη V2 το data.confidence κυμαίνεται από 0 έως 1. Αξιολογήστε την τιμή μαζί με τα source και confidence_kind, επειδή μια βαθμολογία του AI και μια συχνότητα στο σύνολο δεδομένων είναι διαφορετικά μέτρα. Διατηρήστε τα αποτελέσματα unknown και το πεδίο reason.

### Είναι το αποτέλεσμα κατάλληλο για τμηματοποίηση;

Μπορεί να χρησιμεύσει ως συμπληρωματική ένδειξη σε συγκεντρωτικές αναλύσεις και στον εμπλουτισμό δεδομένων, αλλά δεν πρέπει να καθορίζει μόνο του ζητήματα με σημαντικές συνέπειες για ένα άτομο ούτε να προσδιορίζει την ταυτότητά του.

### Μπορώ να δοκιμάσω την υπηρεσία δωρεάν;

Οι νέοι λογαριασμοί GenderAPI περιλαμβάνουν 200 δωρεάν πιστώσεις API την ημέρα, τις οποίες μπορείτε να χρησιμοποιήσετε για να δοκιμάσετε αντιπροσωπευτικά δείγματα μέσω API ή αρχείου.
