List project integrations
Lists the project's integrations and how each reaches the project.
GET/
A provider is listed only when the project can use it, decided by the same rule that admits its use, so an integration listed here is never refused for availability at its entry point. The project comes from the x-project-id header, or from the API key's own project.
Requires an API key with the projects.read action.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Project integrations-
data·object· requiredThe project's integrations, grouped by family in a fixed order. A family this deployment does not run, or with no provider the project can use, is omitted. Each integration's
stateisnot_configured(the project can set it up, in the listedmodes),provided(SDP supplies it and the project sets nothing up), orconnected(the project's own setup is active;modesays whether it runs on the deployment's provider account,managed, or the project's own,byok).-
projectId·string· required -
environment·string· required · one ofsandbox,production -
families·object[]· requiredOne of:
-
family: "custody"
-
family·string· required · alwayscustody -
integrations·object[]· required · min items 1-
provider·string· required -
category·string· required · one ofserver,institutional -
state·object· requiredOne of:
-
status: "not_configured"
-
status·string· required · alwaysnot_configured -
modes·string[]· required · min items 1 · each one ofmanaged,byok
-
-
status: "provided"
-
status·string· required · alwaysprovided -
modes·string[]· required · each one ofmanaged,byok
-
-
status: "connected"
-
status·string· required · alwaysconnected -
mode·string· required · one ofmanaged,byok
-
-
-
-
-
family: "rpc"
-
family·string· required · alwaysrpc -
integrations·object[]· required · min items 1-
provider·string· required · one ofalchemy,helius,nodit,quicknode,triton,validationcloud -
state·object· requiredOne of:
-
status: "not_configured"
-
status·string· required · alwaysnot_configured -
modes·string[]· required · min items 1 · each one ofmanaged,byok
-
-
status: "provided"
-
status·string· required · alwaysprovided -
modes·string[]· required · each one ofmanaged,byok
-
-
status: "connected"
-
status·string· required · alwaysconnected -
mode·string· required · one ofmanaged,byok
-
-
-
-
-
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires theprojects.readaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
404Not FoundSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.
Example request
curl 'https://api.solana.com/v1/integrations' \
-H "Authorization: Bearer $SDP_API_KEY"Example responses
{
"data": {
"projectId": "prj_sandbox01",
"environment": "sandbox",
"families": [
{
"family": "custody",
"integrations": [
{
"provider": "privy",
"category": "server",
"state": {
"status": "connected",
"mode": "byok"
}
}
]
}
]
},
"meta": {
"requestId": "req_example",
"timestamp": "2025-01-01T00:00:00.000Z"
}
}Error responses use the standard error shape.