Create an email-native payment challenge
Changed onIssue an x402 payment challenge over a real email thread (the payee side). Unlike createChallenge (which mints a synthetic challenge id), this sends the challenge as an email from from to to and binds the payment to that DKIM-authenticated thread. The pay_to address and the token asset are resolved server-side from your registered default payout address for the network, never from the request. The response carries the thread's interaction_id plus the challenge (the payment_requirements, the nonce_binding, and expires_at) the payer needs to sign; the payer replies with a signed payment interaction step. Amounts are in token base units (USDC has 6 decimals, so "10000" is 0.01 USDC).
Request
- Base URL: https://api.primitive.dev/v1
- URL: https://api.primitive.dev/v1/x402/email-challenges
- Auth: HTTP bearer
Headers
Optional idempotency key. Retrying a request with the same key returns the original result instead of repeating the side effect (for createEmailChallenge, re-sending the email).
Request body
Response
Idempotent replay: a request with a previously-used idempotency key returns the original issued challenge without sending a second email.
Example response
{
"data": {
"challenge": {
"payment_requirements": {
"scheme": "exact"
}
}
}
}Changes
- info
removed the
invalid_signup_codeenum value from the/response property for the response status - info
removed the
invalid_signup_codeenum value from the/response property for the response status - info
removed the
invalid_signup_codeenum value from the/response property for the response status - info
removed the
invalid_signup_codeenum value from the/response property for the response status - info
removed the
invalid_signup_codeenum value from the/response property for the response status - info
removed the
invalid_signup_codeenum value from the/response property for the response status
- info
- warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
not_a_repeating_sendenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_idle_requires_internal_recipientenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_recipient_externalenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_stop_not_allowedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status - warning
added the new
repeat_unsupportedenum value to the/response property for the response status
- warning