Confirm a membership request submitted on your behalf (link from the e-mail)
const url = 'https://api.vimine.network/v1/enroll/confirm';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"token":"example","identification":{"dob":"2026-04-15","birthplace":"example","birth_country":"example","codicefiscale":"example","codicefiscale_confirmed":true},"address":{"kind":"residence","line":"example","postal_code":"example","city":"example","province":"example","country":"IT"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vimine.network/v1/enroll/confirm \ --header 'Content-Type: application/json' \ --data '{ "token": "example", "identification": { "dob": "2026-04-15", "birthplace": "example", "birth_country": "example", "codicefiscale": "example", "codicefiscale_confirmed": true }, "address": { "kind": "residence", "line": "example", "postal_code": "example", "city": "example", "province": "example", "country": "IT" } }'Consumes the token carried by the confirmation link and creates the pending membership request. Replay-idempotent: using the link twice just reports the current status.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Only after a 409 identification_required: what the account still lacks — a fiscal code, or date, place and country of birth. Completes the EMPTY fields of the profile, never over what is there
object
Only after a 409 address_required: the association asks every member for an address (member_address: required on its public profile). Optional where it declared optional; ignored where it collects none
object
Street and number
Italian addresses only (two letters); dropped abroad
ISO 3166-1 alpha-2
Responses
Section titled “Responses”The membership request in the association
object
The person already had a membership request or membership here
Why the membership is still pending, in order: the association’s approval first (when it admits by decision of its board), then the fee. Empty when active
May the fee be paid yet? False while the approval is pending: approval opens payment
When the card becomes usable, for an active membership inside the association’s usability delay; null otherwise
object
Only for a link sent by the association’s hosted enrolment page when that page was opened from one of its public events: what became of the place the person asked for together with the request. null for every other link
object
object
0 = free
confirmed: the place is theirs. reserved: held, see waiting. held: the membership request itself still waits for the address to be confirmed, and no place was asked for. unavailable: no place, see reasons
What a reserved place waits for: the membership to become active (it is then confirmed by itself when free), the contribution, or both
Why the place is unavailable: the reasons of GET /v1/events/{slug}/eligibility
How to pay a contribution that is owed, in the association’s words
The person held this place before the link was used
Example
{ "status": "pending", "pending_reasons": [ "approval" ], "event": { "state": "confirmed", "waiting": [ "membership" ] }}The link is invalid or has expired (invalid_token)
Not found
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}The statuto changed since the link was sent (statuto_outdated); the account is not identified yet (identification_required, errors[] names what is missing): post the token again with identification; or the association asks every member for an address (address_required): post the token again with address
The identification block does not hold (validation_failed)
Rate limited
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Internal error
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}