Contact form
Any Tagos account can publish a form. Draw the fields on your own site and POST one binary packet. The letter lands in that account's inbox. The caller does not choose the account or the mailbox.
Listing, reading, and sending the rest of the mailbox stays inside Tagos Mail. This page is the public embed.
What is public
- The form id can sit in HTML. It is not a send secret. Someone who copies it can only append a letter to that one inbox, and only from an origin you listed.
- Submit does not send a session token and does not send Authorization.
- Each form accepts 30 new letters per hour.
1. Create the form
Sign in, then open Developer Console → Contact forms. The form binds to your mailbox. You name the site and list the exact origins that may submit, for example https://example.com and http://localhost:3000.
- Name: 1–80 characters, no line breaks.
- Origins: 1–8. Each one is http or https, a host, and an optional port. No path, no user, no query. https://Example.com/ is stored as https://example.com.
2. POST the packet
POST https://tagos.one/api/v1/tbp
Content-Type: application/octet-stream
The body is a 29-byte TBP header plus a protobuf SubmitContactFormRequest. Header, big-endian:
54 47 magic 03 version 3 08 category MailApi 1C command SUBMIT_CONTACT_FORM req_id uint32 length uint32, payload size account_id 16 zero bytes
Protobuf fields:
1 form_id string uuid from the console 2 visitor_name string 1–120 characters 3 visitor_email string the address they typed 4 body_text string 1–8000 characters 5 idempotency_key string 8–80 letters, digits, or hyphens
Generate one idempotency key per send and reuse it if that request is retried. The same key returns the first letter and does not insert a second one. There are no attachments in this version.
3. Read the response
A success is HTTP 200 and the same header shape around SubmitContactFormResponse.
1 success bool 2 message_id string 3 already_received bool true when the key was replayed 4 error string empty when success is true
HTTP 400 means nothing was stored. Other failures are HTTP 200 with success=false and one of:
unknown_form origin_denied missing_origin rate_limited quota_exceeded bad_email empty_body body_too_long empty_visitor_name visitor_name_too_long bad_idempotency_key bad_form_id
What arrives
- Folder: inbox of the account that created the form.
- From: the visitor address they typed. Tagos does not verify that they own it. Reply in Mail uses that address.
- Subject: [site name] visitor name.
- The body is the text they wrote.