# Παράμετροι αιτήματος API v2

> Αναφορά για τα πεδία type, value, country, forceToGenderize και ai_mode του GenderAPI V2 και τις διαφορές μεταξύ παραμέτρων GET και σώματος JSON σε αιτήματα POST.

Canonical HTML: https://www.genderapi.io/el/docs/v2/request-parameters

Last reviewed: 2026-09-25

## Μεμονωμένες παράμετροι πρόβλεψης

Τα προαιρετικά πεδία θα πρέπει να παραλείπονται όταν δεν χρησιμοποιούνται. Μην στέλνετε null ή κενές συμβολοσειρές στη θέση των country ή options. Τα booleans JSON πρέπει να είναι true ή false, όχι συμβολοσειρές. Το κείμενο UTF-8 υποστηρίζεται. τα ονόματα δεν χρειάζεται να μεταγραφούν σε ASCII.

Το GET χρησιμοποιεί type, value, country, forceToGenderize και ai_mode απευθείας στη συμβολοσειρά ερωτήματος, συν το προαιρετικό key. Κωδικοποιήστε τιμές με τον κωδικοποιητή παραμέτρων URL του πελάτη σας HTTP. για παράδειγμα το @ γίνεται %40. Για GET booleans, στείλτε true ή false. Τα άγνωστα πεδία και οι μη έγκυρες τιμές απορρίπτονται.

| Πεδίο JSON | Τύπος | Κανόνας |
| --- | --- | --- |
| type | string | Απαιτείται για POST: name, email ή username. Το GET έχει οριστεί από προεπιλογή σε name. |
| value | string | Απαιτείται. 1–254 χαρακτήρες; μη κενό, χωρίς χαρακτήρες ελέγχου. Οι τιμές email πρέπει να είναι έγκυρη σύνταξη email. |
| country | string | Προαιρετικός κωδικός ISO 3166-1 alpha-2 με κεφαλαία, για παράδειγμα TR ή US. Η αναζήτηση για συγκεκριμένη χώρα μπορεί να επανέλθει στο παγκόσμιο σύνολο δεδομένων. |
| forceToGenderize | boolean | Προαιρετικό. η προεπιλογή είναι false. Αρχικά, αναζητήστε το σύνολο δεδομένων. Εάν δεν μπορεί να προσδιοριστεί κανένα φύλο, χρησιμοποιήστε τεχνητή νοημοσύνη για να ερμηνεύσετε το ψευδώνυμο. Υποστηρίζεται και για τους τρεις τύπους εισόδου. |
| options.ai_mode | string | off, fallback ή always. Προεπιλογή σε fallback για μεμονωμένα αιτήματα και off για είδη παρτίδας. |
| id | string | Προαιρετικό αναγνωριστικό με 1–64 χαρακτήρες στο σώμα POST JSON. Πρέπει να είναι μοναδικό σε μια παρτίδα και να επιστρέφεται με το αποτέλεσμα της παρτίδας του. Μεμονωμένα αιτήματα αποδέχονται αυτό το αναγνωριστικό αλλά δεν το περιλαμβάνουν στην απάντηση. Τα ερωτήματα GET δεν το υποστηρίζουν. |

## Πριν στείλετε το αίτημα

Στείλτε το JSON στο POST https://api.genderapi.io/api/v2/gender. Χρησιμοποιήστε το υπάρχον κλειδί API στα Authorization: Bearer YOUR_API_KEY και Content-Type: application/json. Κάθε αίτημα επεξεργάζεται ανεξάρτητα.

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

- [Έλεγχος ταυτότητας και δοκιμαστική πρόσβαση](https://www.genderapi.io/el/docs/v2/authentication)
- [Όλες οι παράμετροι αιτήματος](https://www.genderapi.io/el/docs/v2/request-parameters)

## Ζητήστε παραδείγματα ανά γλώσσα

Αυτό το παράδειγμα χρησιμοποιεί τα κοινόχρηστα πεδία αιτήματος για αναζήτηση ονόματος. Αλλάξτε τα type και value για email ή όνομα χρήστη ή ορίστε τα options.ai_mode και forceToGenderize όπως περιγράφεται παραπάνω.

Εκτελέστε αυτά τα παραδείγματα στον διακομιστή σας. Ρυθμίστε το GENDERAPI_API_KEY στο περιβάλλον διεργασίας στο υπάρχον κλειδί API. Επιβεβαιώστε ότι το meta.access.mode είναι api_key: ένα μη αναγνωρισμένο κλειδί μπορεί να επιστρέψει στη δοκιμή IP.

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

Οι αποκρίσεις HTTP 4xx και 5xx JSON διατηρούν το σώμα σφάλματος και επιστρέφουν μια κατάσταση εξόδου μη μηδενική. Ελέγξτε τα code, action και meta.usage.billing_status πριν δοκιμάσετε ξανά.

**cURL**

cURL 7,76+ σε κέλυφος POSIX. Εκτελέστε στο τερματικό σας.

```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": "name",
  "value": "Onur",
  "country": "TR"
}'
```

**JavaScript / Node.js**

Node.js 22+; ενσωματωμένη ανάκτηση. Αποθηκεύστε ως example.mjs και εκτελέστε το node example.mjs.

```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": "name",
  "value": "Onur",
  "country": "TR"
};

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.

```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\":\"name\",\"value\":\"Onur\",\"country\":\"TR\"}")

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.

```php
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"name","value":"Onur","country":"TR"}', 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.

```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\":\"name\",\"value\":\"Onur\",\"country\":\"TR\"}";
        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.

```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\":\"name\",\"value\":\"Onur\",\"country\":\"TR\"}", 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.

```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\":\"name\",\"value\":\"Onur\",\"country\":\"TR\"}"
    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)
    }
}
```

## Σχετικοί οδηγοί

- [λειτουργίες AI και forceToGenderize](https://www.genderapi.io/el/docs/v2/ai-options)
- [Προβλέψεις παρτίδας](https://www.genderapi.io/el/docs/v2/batch)
- [Πιστώσεις και χρήση](https://www.genderapi.io/el/docs/v2/credits-and-usage)
- [Σφάλματα και επαναλήψεις](https://www.genderapi.io/el/docs/v2/errors-and-retries)
