# Εξαγωγή ονόματος και ένδειξης φύλου από διεύθυνση email

> Εξαγάγετε ένα υποψήφιο όνομα από μια διεύθυνση email και συμπληρώστε τη ροή σας στο Excel, στο Google Sheets ή στο API με την πρόβλεψη και τα σχετικά πεδία προέλευσης, χωρίς να αντικαθιστάτε τα στοιχεία που έχει δώσει το ίδιο το άτομο.

Canonical HTML: https://www.genderapi.io/el/blog/exagogi-onomaton-apo-diefthynseis-email

Last reviewed: 2026-09-29

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

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

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

## Μπορεί το GenderAPI να εξαγάγει όνομα από διεύθυνση email;

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

- [Ζωντανή επίδειξη της V2 και των επιλογών της](https://www.genderapi.io/el/blog/exagogi-onomaton-apo-diefthynseis-email#demo)

## Ανάλυση διεύθυνσης email

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

Πάντα AI (προεπιλογή): 2 πιστώσεις, ακόμη και όταν το αποτέλεσμα είναι άγνωστο. Εφεδρική: 1 πίστωση, μαζί με την εφεδρική χρήση AI και τα άγνωστα αποτελέσματα. Ανενεργή, μόνο σύνολο δεδομένων (χωρίς AI): 1 πίστωση ανά ολοκληρωμένο αίτημα, ακόμη και όταν το αποτέλεσμα είναι άγνωστο. Με ανάλυση ψευδωνύμων: 1 πίστωση αν το αποτέλεσμα προέρχεται από το σύνολο δεδομένων ή 2 συνολικά αν χρησιμοποιηθεί AI, ακόμη και όταν το αποτέλεσμα είναι άγνωστο.

Η τιμή που στέλνετε (ολόκληρη η διεύθυνση email) διαβιβάζεται στο GenderAPI.io και προωθείται στη ρυθμισμένη υπηρεσία AI στη λειτουργία Πάντα AI (προεπιλογή) ή όταν χρειάζεται η εφεδρική χρήση AI, όχι όμως στη λειτουργία Ανενεργή. [Περισσότερα για την επεξεργασία των δεδομένων](https://www.genderapi.io/el/data-provenance).

Αυτή η πραγματική απόκριση καταγράφηκε την 1η Οκτωβρίου 2026. Αντικαταστάθηκε μόνο το υπόλοιπο του λογαριασμού. Οι τιμές σε πραγματικό χρόνο μπορεί να διαφέρουν. Μια πρόβλεψη δεν είναι επιβεβαιωμένη ταυτότητα.

**Πραγματική απόκριση V2, καταγράφηκε την 1η Οκτωβρίου 2026**

```json
{
  "data": {
    "input": {
      "type": "email",
      "value": "giorgos.papadopoulos@example.com",
      "country": null
    },
    "name": "giorgos",
    "gender": "male",
    "country": "GR",
    "confidence": 0.98,
    "confidence_kind": "model_reported",
    "sample_count": null,
    "source": "ai",
    "result_status": "identified",
    "reason": null,
    "country_source": "ai_association",
    "match": {
      "name": null,
      "method": "model_inference",
      "scope": null,
      "country": null
    }
  },
  "meta": {
    "request_id": "f62bca07-5b25-4329-a126-824e7d0fadd5",
    "duration_ms": 393,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 2,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}
```

- [δημιουργήστε λογαριασμό](https://app.genderapi.io/user/register)

## Από τη διεύθυνση email στα δομημένα δεδομένα

- Είσοδος: emilyblack@email.com
- Εξαγωγή: Emily
- Εμπλουτισμός: Φύλο + βαθμός βεβαιότητας

## Επιλέξτε πού θα επεξεργαστείτε τα δεδομένα email

- [Microsoft Excel Εγκατάσταση του πρόσθετου →](https://appsource.microsoft.com/en-us/product/office/WA200008555)
- [Google Sheets Άνοιγμα του Marketplace →](https://workspace.google.com/marketplace/app/gender_api_determines_gender_of_name_or/712811575775)
- [Shopify Προβολή της εφαρμογής →](https://apps.shopify.com/gender-api)
- [Excel / CSV σε παρτίδες Άνοιγμα του εργαλείου →](https://app.genderapi.io/csv)
- [Airtable Προβολή της επέκτασης →](https://airtable.com/marketplace/blkqCasjQIqmmBrmb/gender-api-io-determine-gender)
- [REST API Προβολή του endpoint →](https://www.genderapi.io/el/docs/v2/gender-from-email)

## Επεξεργαστείτε στήλες διευθύνσεων με το πρόσθετο για Excel

Επιλέξτε τη μέθοδο για διευθύνσεις email και έπειτα συνδέστε τη στήλη προέλευσης και τα πεδία των αποτελεσμάτων. Χρησιμοποιήστε το GENDER.FROM_EMAIL για δυναμικές αναζητήσεις σε κελιά ή το πλαϊνό πλαίσιο για μόνιμα αποτελέσματα.

- [Δείτε το εκπαιδευτικό βίντεο για το Excel](https://youtu.be/6j4w-3oMZnA)
- [Πρόσθετο GenderAPI για Excel](https://www.genderapi.io/el/blog/genderize-excel-names-using-genderapi-excel-add-in)
- [Τύποι GENDER στο Excel](https://www.genderapi.io/el/blog/gender-formoula-gia-microsoft-excel)

## Αναλύστε διευθύνσεις email με το πρόσθετο ή με τύπο

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

- [Οδηγός για το πρόσθετο](https://www.genderapi.io/el/blog/pos-na-kathoriste-to-fylo-sto-google-sheets-me-to-gender-api-add-on)
- [Ο τύπος GENDER στο Google Sheets](https://www.genderapi.io/el/blog/typos-gene-google-sheets-prosdiorismos-gene-apo-onomata)

## Ενσωματώστε την ανάλυση διευθύνσεων email στο backend σας

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

Στιγμιότυπο αποτελεσμάτων από παλαιότερη ενσωμάτωση. Δεν δείχνει την τρέχουσα σύμβαση απόκρισης της V2.

- [Μεμονωμένο αίτημα για μία διεύθυνση email](https://www.genderapi.io/el/docs/v2/gender-from-email)
- [Αίτημα για πολλές διευθύνσεις email](https://www.genderapi.io/el/docs/v2/batch)

## Μην επιβάλλετε αποτέλεσμα όταν η διεύθυνση δεν περιέχει όνομα

Λειτουργικές διευθύνσεις, τυχαία αναγνωριστικά και κοινόχρηστα γραμματοκιβώτια μπορεί να μη δίνουν αξιόπιστη ένδειξη. Διατηρήστε τα data.result_status, data.reason και data.confidence και διαχειριστείτε χωριστά τα αβέβαια αποτελέσματα.

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

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

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

Η αναζήτηση στο σύνολο δεδομένων αναλύει το τμήμα πριν από το @, αφαιρεί ένα επίθεμα που ξεκινά με + και αξιολογεί τα υποψήφια ονόματα. Ένα κανονικό αίτημα μπορεί επιπλέον να προσθέσει περιορισμένο αριθμό υποψηφίων βάσει προθέματος και επιθέματος στα σύνθετα τμήματα. Αν ταιριάζουν περισσότερες εγγραφές, επιλέγεται εκείνη με τον μεγαλύτερο αριθμό καταγεγραμμένων εμφανίσεων. Ο υποψήφιος αυτός δεν είναι απαραίτητα το πραγματικό όνομα του ατόμου. Αν στείλετε χώρα, για κάθε υποψήφιο προτιμάται η εγγραφή της χώρας. Αν δεν υπάρχει, μπορεί να χρησιμοποιηθεί μια παγκόσμια εγγραφή. Ελέγξτε τα data.match.scope και country_source.

| Εγγραφή | Πεδίο | Ερμηνεία |
| --- | --- | --- |
| Αρχική εγγραφή | contact_id / original_email | Διατηρήστε τα αρχικά δεδομένα στο δικό σας σύστημα και μην αντικαθιστάτε με την πρόβλεψη ένα όνομα που έχει δηλώσει το ίδιο το άτομο. Αυτά δεν είναι πεδία της απόκρισης του API. |
| Υποψήφιο όνομα | data.name / data.match | Το όνομα που επιλέχθηκε μπορεί να είναι null. Δεν υπάρχει πεδίο για επαληθευμένο επώνυμο και μια αντιστοίχιση δεν αποδεικνύει ποιος είναι ο κάτοχος του γραμματοκιβωτίου. |
| Πρόβλεψη | data.gender / data.result_status / data.reason | Αποθηκεύστε ένα άγνωστο αποτέλεσμα ως εγγενή τιμή JSON null. Μια ισόπαλη εγγραφή του συνόλου δεδομένων μπορεί να περιέχει υποψήφιο όνομα χωρίς φύλο. |
| Τεκμήρια | data.source / data.confidence_kind / data.confidence / data.sample_count | Το confidence κυμαίνεται από 0 έως 1. Η συχνότητα στο σύνολο δεδομένων και μια βαθμολογία του AI είναι διαφορετικά μέτρα. Για το AI το sample_count είναι null. |
| Καταγραφή λειτουργίας | meta.request_id / meta.usage | Διατηρήστε το id και την κατάσταση χρέωσης. Μια απόκριση που χάθηκε δεν σημαίνει ούτε ότι η λειτουργία ήταν δωρεάν ούτε ότι απέτυχε. |

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

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

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

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

### Δοκιμάστε πρώτα ένα αίτημα email μόνο με το σύνολο δεδομένων

Οι ενδεικτικές είσοδοι δεν εγγυώνται μια συγκεκριμένη πρόβλεψη. Ορίστε το 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 πριν δοκιμάσετε ξανά.

**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' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
}'
```

**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 = {
  "type": "email",
  "value": "alice.smith@example.com",
  "options": {
    "ai_mode": "off"
  }
};

const response = await fetch("https://api.genderapi.io/api/v2/gender", {
  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("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}")

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",
    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('{"type":"email","value":"alice.smith@example.com","options":{"ai_mode":"off"}}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
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 = "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}";
        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"))
            .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");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
request.Content = new StringContent("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}", 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 := "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"options\":{\"ai_mode\":\"off\"}}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", 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. Συμβουλευτείτε τον ενημερωμένο οδηγό της αντίστοιχης ενσωμάτωσης.

## Όνομα και φύλο από διευθύνσεις email

### Μπορεί να εξαχθεί όνομα από μια διεύθυνση email;

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

### Επιστρέφει όνομα κάθε διεύθυνση;

Όχι. Λειτουργικές διευθύνσεις, τυχαία αναγνωριστικά και τοπικά τμήματα χωρίς πραγματικό όνομα μπορεί να μη δίνουν αξιόπιστη ένδειξη. Ελέγξτε τα data.result_status, data.reason, data.confidence και data.confidence_kind στην απόκριση της V2.

### Αποθηκεύονται τα αιτήματα email;

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

### Μπορώ να χρησιμοποιήσω τη λειτουργία στο Excel και στο Google Sheets;

Ναι. Οι στήλες διευθύνσεων μπορούν να επεξεργαστούν με το πρόσθετο για Excel, με το πρόσθετο για Google Sheets ή με το εργαλείο εισαγωγής αρχείων Excel και CSV. Αυτές οι ενσωματώσεις έχουν δική τους μορφή αποτελεσμάτων, διαφορετική από το JSON της V2.

### Ποια πεδία επιστρέφει το API;

Η V2 επιστρέφει τα data.name, data.gender, data.match και τα πεδία προέλευσης και βαθμού βεβαιότητας, ενώ στο meta επιστρέφει επίσης το id της λειτουργίας και την κατανάλωση πιστώσεων. Το υποψήφιο όνομα ή το φύλο μπορεί να είναι null. Δεν υπάρχει πεδίο για επαληθευμένο επώνυμο.

### Πότε χρησιμοποιείται AI;

Σε ένα μεμονωμένο αίτημα της V2 η κανονική εφεδρική χρήση AI είναι ενεργή από προεπιλογή. Σε αυτή την επίδειξη μπορείτε να χρησιμοποιήσετε κανονικό αίτημα ή forceToGenderize. Τα off και always ορίζονται στο αίτημα API. Η κανονική εφεδρική χρήση AI κοστίζει 1 πίστωση συνολικά και το always 2. Με το forceToGenderize χρεώνεται 1 πίστωση αν το σύνολο δεδομένων επιλύσει το αίτημα ή 2 συνολικά αν χρησιμοποιηθεί AI. Το αποτέλεσμα μπορεί να παραμείνει unknown.

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

Οι λογαριασμοί περιλαμβάνουν 200 δωρεάν πιστώσεις την ημέρα και η κοινόχρηστη δοκιμαστική πρόσβαση IP προσφέρει 10 πιστώσεις ανά δημόσια διεύθυνση IP μέσα σε 24 ώρες. Ένα κλειδί που λείπει ή δεν αναγνωρίζεται μπορεί να οδηγήσει στη δοκιμαστική πρόσβαση IP. Ελέγξτε το πεδίο meta.access.mode στην απόκριση. Πρόκειται για πιστώσεις και όχι για αριθμό αιτημάτων.
