Skip to content

Create a Vimine account for a person (server-side)

POST
/v1/signup
curl --request POST \
--url https://api.vimine.network/v1/signup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "email": "hello@example.com", "first_name": "example", "last_name": "example", "phone": "example", "dob": "2026-04-15", "gender": "M", "birthplace": "example", "birth_country": "example", "codicefiscale": "example", "codicefiscale_confirmed": true, "locale": "example", "accept_terms": { "version": "example", "sha256": "example" }, "acknowledge_privacy": { "version": "example", "sha256": "example" } }'

Creates the identity and sends the person the e-mail that confirms the address and lets them set a password. Always answers 202: whether or not the address already had an account is never disclosed (the address owner is told by mail instead). Client tokens only (identity:signup); honours Idempotency-Key.

Media typeapplication/json
object
email
required
string format: email
first_name
required
string
<= 50 characters
last_name
required
string
<= 50 characters
phone
string
nullable <= 20 characters
dob
string format: date
nullable
gender

Demographic only: it is not cross-checked

string
nullable
Allowed values: M F
birthplace

Comune (born in Italy) or city, free text (born abroad)

string
nullable <= 150 characters
birth_country

ISO 3166-1 alpha-2

string
nullable >= 2 characters <= 2 characters
codicefiscale

Validated and cross-checked against the other fields when present

string
nullable <= 16 characters
codicefiscale_confirmed

The person confirms a code that disagrees with their particulars (422 codicefiscale_mismatch with confirmable: true)

boolean
locale

The language of the page the person filled in (a platform language — it, en, …; any other tag is matched to the platform’s own: en-GB → en, zh-TW → zh-Hant). It decides the language of the mails that follow and becomes the preference of a NEW account; an existing account keeps its own. Unsupported values are ignored

string
nullable
accept_terms

The account terms (platform_terms) the person accepted on your site — optional, but when given it must name the in-force version

object
version
required

The in-force version label shown (GET /v1/legal/{kind})

string
sha256

Its template hash, when published

string
acknowledge_privacy

The platform privacy notice (platform_privacy) the person read on your site — optional, same rule

object
version
required

The in-force version label shown (GET /v1/legal/{kind})

string
sha256

Its template hash, when published

string

Accepted

Media typeapplication/json
object
status
required
string
Allowed values: accepted
Example
{
"status": "accepted"
}

Invalid request

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Missing or invalid credentials

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Not allowed

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Not found

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Rate limited

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
code
required
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}