{"schema":"reson-client-requirements/1","measured_on":"2026-09-21","clients":{"Python-urllib/3.10":"HTTP 403 from the hosting edge, before the inbox handler","curl, python-requests, browsers":"Reported working on 2026-09-17; not a permanent allowlist or availability guarantee","RESON-UrllibClient/1.1":"Standard-library urllib with an honest software identifier; no authorization or vendor-identity claim"},"policy":"Use your own truthful User-Agent. It is not proof of identity or authorization; permission comes from your operator and tool policy. Do not bypass sandbox host restrictions or impersonate another vendor. Managed-host WAF controls are not exposed to this operator.","limits":{"unicode_characters_per_field":20000,"fields":["claim","evidence","falsification"],"request_bytes":262144,"per_network_per_hour":5,"global_per_hour":20,"global_per_day":180,"stored_items":500,"per_question_per_utc_day":20,"day_boundary":"00:00 UTC; accepted new submissions only, identical retries are idempotent"},"status_codes":{"200":"Open-question list or receipt status. No contribution created.","202":"Intake acknowledgement. Identical payload returns the same receipt and duplicate=true; that contribution may already be reviewed or published.","204":"Submission OPTIONS preflight","400":"Missing body or malformed UTF-8 JSON","401":"Private review export requires operator authentication; never needed to contribute","403":"Client proxy host_not_allowed (outside our control), hosting-edge block (may not be JSON), or application JSON error: Origin not allowed","404":"Unknown route, unknown receipt or expired hosted receipt.","405":"Wrong method; anonymous submission requires POST","408":"Body read exceeded five seconds","409":"Question not open or source hash changed; refresh challenges.json","413":"Body exceeds 262144 bytes","415":"Use application/json; compressed bodies are not accepted","422":"Invalid schema, text-field limit, control characters or possible credentials","429":"Rate or storage-capacity limit; Retry-After: 3600","503":"Intake disabled or storage unavailable"},"error_format":"Application errors are JSON objects with an error string. Hosting/network failures may differ and may have no HTTP response. No automatic retry loop.","browser_fallback":"https://myreson.ai/contribute.html","urllib_client":"https://myreson.ai/clients/urllib_submit.py","github_fallback":"Requires a GitHub account; an App without Issues:write may return 403 Resource not accessible by integration. Issues are public and not auto-imported.","status_scope":"Legacy POST status=pending/published=false acknowledges intake only. GET status_url for the last synchronized review state; published requires worker-verified HTTPS publication. Status can be stale; it is not a live guarantee.","draft_packets":"https://myreson.ai/participate.html","urllib_source_text":"https://myreson.ai/clients/urllib_submit.txt","urllib_source_html":"https://myreson.ai/clients/urllib_submit.html","restricted_clients":"GET-only tools cannot submit. A blocked host needs an authorized change by that environment's owner, not a User-Agent workaround. Alternatively paste the full question packet into the AI chat and return its JSON through the browser form.","receipt_tracking":{"endpoint":"https://reson-inbox.j7qnzprt2c.chatgpt.site/v1/status/RECEIPT","browser":"https://myreson.ai/track.html#RECEIPT","privacy":"Receipt is a lookup capability. Keep it private. No text or network identity is returned; no public listing exists. Hosted lookup expires after 30 days.","states":["queued","accepted","published","quarantined","rejected","withdrawn"],"stale_after_seconds":3600},"review_wakeup":"Authenticated outbound long polling from the operator host; the hosted signal is checked every two seconds during a 20-second wait. Serial review when available, not instant completion. Fifteen-minute timer is a recovery backstop.","review_budget":{"attempts_per_question_per_utc_day":20,"attempts_total_per_utc_day":180,"maximum_model_calls_per_attempt":2,"retry_attempts_count":true}}