verify-signup-request
dci verify-signup-request <signupRequestId> [body]
Confirms ownership of the admin email by entering the 6-digit code that was emailed when the request was created (or resent). Success records consent and starts provisioning; the request moves to consented and then completed. Five wrong codes lock the current code; request a new one with resendSignupVerification.
signupRequestId— Public signup request id (sr_ prefix).
Pass the request body as name: value arguments or pipe JSON on stdin — see Command structure.
Entering the code confirms ownership of the admin email, records consent and starts provisioning.
The activationToken is returned once, by the call that performed the verification. Five wrong
codes lock the current code (429, verification_locked); request a new one with
dci resend-signup-verification. An expired or wrong code returns 400
(verification_code_expired, verification_code_invalid), and a request that is not awaiting
verification returns 409. No authentication is needed.
Examples
# Verify the request with the 6-digit code that was emailed to the admin.
dci verify-signup-request <signup-request-id> code: "123456"
The request moves to `consented` and then `completed`. The response carries the one-time `activationToken` for `dci create-signup-session`.
# Capture the activation token for the next step.
dci verify-signup-request <signup-request-id> code: "123456" --output json | jq -r .activationToken
Request
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | The 6-digit code from the verification email. |
Raw JSON schema
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 6,
"maxLength": 6,
"pattern": "^[0-9]{6}$",
"description": "The 6-digit code from the verification email."
}
}
}
Output
OK - the request is consented; resultToken authorizes subsequent polling. The code is consumed once.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
| Field | Type | Description |
|---|---|---|
id | string | Public request id (sr_ prefix); an unguessable capability. |
status | string | One of: "pending_consent", "consented", "provisioning", "completed", "rejected", "expired", "failed". |
channel | string | One of: "agent", "console", "web". |
companyName | string | Company name supplied at signup; shown on the console verification and completion pages. |
consentUrl | string (uri) | Page where the organization's admin verifies the request (pending_consent only). |
activationToken | string | Returned once, by the verifySignupRequest call that performed the verification. Redeem it with createSignupSession after the request is completed. |
resultToken | string | Returned only by successful verifySignupRequest. Send as Signup-Result-Token when polling this request to read its result. Valid for one hour; never returned by create, replay, resend or GET. |
verification | object | Present while the request awaits the emailed code. |
verification.required | boolean | |
verification.expiresAt | string (date-time) | |
verification.resendAfterSeconds | integer | |
verification.sendsRemaining | integer | |
expiresAt | string (date-time) | When an unverified request expires (pending_consent only). |
pollAfterSeconds | integer | Suggested polling interval while the request is not terminal. |
customerId | string | The provisioned tenant (completed only). |
consoleUrl | string (uri) | |
signInUrl | string (uri) | Page where the admin signs into the new tenant (completed only). |
tier | string | Trial tier name (trial). |
trialEndDate | string (date-time) | |
nextSteps | array of string | |
reason | object | Why a terminal request did not complete. |
reason.code | string | |
reason.detail | string | |
reason.retryable | boolean |
Raw JSON schema
{
"type": "object",
"description": "Redacted public view of a signup request. Never includes the admin email, the verification code or the idempotency key.",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "Public request id (sr_ prefix); an unguessable capability."
},
"status": {
"type": "string",
"enum": [
"pending_consent",
"consented",
"provisioning",
"completed",
"rejected",
"expired",
"failed"
]
},
"channel": {
"type": "string",
"enum": [
"agent",
"console",
"web"
]
},
"companyName": {
"type": "string",
"description": "Company name supplied at signup; shown on the console verification and completion pages."
},
"consentUrl": {
"type": "string",
"format": "uri",
"description": "Page where the organization's admin verifies the request (pending_consent only)."
},
"activationToken": {
"type": "string",
"description": "Returned once, by the verifySignupRequest call that performed the verification. Redeem it with createSignupSession after the request is completed."
},
"resultToken": {
"type": "string",
"description": "Returned only by successful verifySignupRequest. Send as Signup-Result-Token when polling this request to read its result. Valid for one hour; never returned by create, replay, resend or GET."
},
"verification": {
"type": "object",
"description": "Present while the request awaits the emailed code.",
"properties": {
"required": {
"type": "boolean"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"resendAfterSeconds": {
"type": "integer"
},
"sendsRemaining": {
"type": "integer"
}
}
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "When an unverified request expires (pending_consent only)."
},
"pollAfterSeconds": {
"type": "integer",
"description": "Suggested polling interval while the request is not terminal."
},
"customerId": {
"type": "string",
"description": "The provisioned tenant (completed only)."
},
"consoleUrl": {
"type": "string",
"format": "uri"
},
"signInUrl": {
"type": "string",
"format": "uri",
"description": "Page where the admin signs into the new tenant (completed only)."
},
"tier": {
"type": "string",
"description": "Trial tier name (trial)."
},
"trialEndDate": {
"type": "string",
"format": "date-time"
},
"nextSteps": {
"type": "array",
"items": {
"type": "string"
}
},
"reason": {
"type": "object",
"description": "Why a terminal request did not complete.",
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string"
},
"retryable": {
"type": "boolean"
}
}
}
}
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
HTTP status to exit code mapping
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 404 | 20 | RESOURCE_NOT_FOUND | The requested resource does not exist. Check the identifier argument. |
| 409 | 21 | RESOURCE_CONFLICT | The operation conflicts with the resource's current state. |
| 429 | 50 | RATE_LIMITED | Too many requests. Retryable — the CLI reports the server-provided delay. |
Related
- create-signup-request — Create a signup request
- resend-signup-verification — Resend the verification code
- get-signup-request — Get a signup request
- create-signup-session — Sign the verified prospect in
- API reference: POST /signup/v1/requests/{signupRequestId}/verify
Aliases: verifysignuprequest