use serde_json::{json, Value};
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let key = env::var("SPACEPOST_API_KEY")?;
let res = reqwest::Client::new()
.post("https://api.spacepost.dev/emails")
.header("Idempotency-Key", "welcome-user-42")
"from": "Acme <hello@acme.com>",
"to": ["delivered@test.spacepost.dev"],
"subject": "Hello from Rust",
"html": "<p>It works.</p>"
let status = res.status();
let body: Value = res.json().await?;
if !status.is_success() {
// { "statusCode": 422, "name": "validation_error", "message": "..." }
return Err(format!("{}: {}", body["name"], body["message"]).into());
println!("sent {}", body["id"]);