Base URL. All API requests go to the Adlyfy production API: https://<adlyfy-api-host>/api/v1Every endpoint path in this documentation is relative to this base URL.
📹 Watch how: [PASTE SCRIBE LINK — "How to register an account on the Adlyfy portal"]
📹 Watch how: [PASTE SCRIBE LINK — "How to register an app"]
x-api-key) authenticates your integration with Adlyfy. It is shown only once — store it securely.📹 Watch how: [PASTE SCRIBE LINK — "How to get an API key"]
x-api-key) that identifies your tenant.externalUserId is any stable identifier your integration uses for the end user (a plain string).{
"success": true,
"data": {
"accessToken": "eyJhbGciOi...",
"refreshToken": "eyJhbGciOi..."
}
}accessToken for your API calls and the refreshToken to obtain a new access token when it expires (see Authentication).{
"success": true,
"data": {
"data": [
{
"id": "120000000001",
"name": "Lead Gen - March",
"status": "ACTIVE",
"objective": "OUTCOME_LEADS"
}
],
"paging": {
"before": "QVFI...",
"after": "QVFI..."
}
}
}{
"success": true,
"data": { }
}{
"success": false,
"error": {
"code": "BAD_REQUEST",
"message": "Validation failed",
"details": ["adAccountId is required"]
},
"statusCode": 400,
"path": "/api/v1/meta/campaigns",
"timestamp": "2026-06-30T12:00:00.000Z"
}success first. On errors, error.code is stable for programmatic handling, while error.message / error.details are for humans. See Errors & Status Codes for the full list.https://<adlyfy-api-host>/apihttps://<adlyfy-api-host>/api-jsonNote: the Swagger UI lives at /api(not/api/v1/api) — the docs are mounted outside the version prefix.