Create a handle for the API key owner
Creates a handle immediately without email confirmation. The handle's destination is set to the API key owner's email.
curl -X POST "https://mail.haltman.io/api/handle/create" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"handle": "example_string"
}'
import requests
import json
url = "https://mail.haltman.io/api/handle/create"
headers = {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
data = {
"handle": "example_string"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://mail.haltman.io/api/handle/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
},
body: JSON.stringify({
"handle": "example_string"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"handle": "example_string"
}`)
req, err := http.NewRequest("POST", "https://mail.haltman.io/api/handle/create", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://mail.haltman.io/api/handle/create')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = 'YOUR_API_KEY'
request.body = '{
"handle": "example_string"
}'
response = http.request(request)
puts response.body
{
"ok": true,
"created": true,
"handle": "example_string",
"goto": "user@example.com"
}
{
"error": "example_string",
"field": "example_string",
"reason": "example_string",
"hint": "example_string",
"constraints": {}
}
{
"error": "example_string"
}
{
"error": "Unauthorized",
"message": "Authentication required. Please provide a valid API token",
"code": 401
}
{
"error": "example_string",
"ban": {},
"type": "example_string",
"value": "example_string"
}
{
"error": "Conflict",
"message": "The request conflicts with the current state of the resource",
"code": 409,
"details": "Resource already exists"
}
{
"error": "example_string",
"where": "example_string",
"reason": "example_string"
}
{
"error": "Internal Server Error",
"message": "An unexpected error occurred on the server",
"code": 500,
"requestId": "req_1234567890"
}
POST
/api/handle/create
POST
API Key (header: X-API-Key)
X-API-Keystring
Required64-character lowercase hexadecimal API key.
64-character lowercase hexadecimal API key.
Content-Typestring
RequiredThe media type of the request body
Options: application/json
handlestring
RequiredThe local-part to claim.
Request Preview
Response
Response will appear here after sending the request
Authentication
header
X-API-Keystring
RequiredAPI Key for authentication. 64-character lowercase hexadecimal API key.
Body
application/json
handlestring
RequiredThe local-part to claim.
Responses
okboolean
Requiredcreatedboolean
Requiredhandlestring
Requiredgotostring
Requirederrorstring
Requiredfieldstring
reasonstring
hintstring
constraintsobject
errorstring
Requirederrorstring
Requirederrorstring
Requiredbanobject
typestring
valuestring
errorstring
Requirederrorstring
Requiredwherestring
reasonstring
errorstring
RequiredWas this page helpful?
Last updated Apr 9, 2026
Built with Documentation.AI