Create a tournament
Creates a tournament as a DRAFT with approval status NOT_SUBMITTED. Nothing is public yet: call submit-for-approval, then open registration once staff approve.
HOST AUTHORITY. hostType and hostId are yours to choose, but not to invent - you must actually hold the authority you name, or the request is refused. user requires hostId to be your own user id (otherwise 403 error_forbidden); org requires an active OWNER or ADMIN membership of that organization (otherwise 403 error_not_org_admin); league requires an active league ADMIN or OWNER membership (otherwise 403 error_league_admin_required). You must also be eligible to host at all - a paid plan, or an account at least 30 days old, and not competitively banned - or the request is 403 error_not_eligible_to_host.
BILLING. Creation is billed to YOU, the key owner, because there is no tournament yet to resolve a host from. From this point on the billing flips: every organizer request against the tournament is billed to the HOST - the organization owner or the league owner - including requests made by tournament staff you add later. Choosing a host is therefore the act that binds that person's developer plan, which is exactly why the authority check above is strict.
Unlike the rest of the tournament family this endpoint takes no identifier, so it is caller-billed and requires only the tournaments lifecycle capability on the key plus the tournamentOrganizerApi feature on your own plan.
Supply an optional Idempotency-Key request header to make retries safe: an identical key and body replays the original tournament id and slug without creating a second tournament, while the same key with a different body returns 409 error_idempotency_key_conflict. Without the header a retried request creates a SECOND tournament, because a tournament has no natural key to collapse on.
Request body
Response
The draft tournament was created.