Back to reference

API Reference

Update a campaign schedule

Atomically replaces the campaign's business and message schedules and can update the maximum LinkedIn workflow runs per day. Message days must be included in business days, message hours must fit within business hours, and both schedules must use the same IANA timezone. maxRunsPerDay applies when the workflow contains a LinkedIn action and cannot exceed the connected account's tier limit. The response returns the complete effective campaign configuration.

PATCH/v1/accounts/{accountGroupId}/campaigns/{campaignId}/schedule

Integration notes

Required API permission

campaigns:write.

Prerequisites

integration_api_key, account_group_access.

Idempotency

not supported; check the current resource state before retrying this request.

Parameters

accountGroupIdPath

Type: string

Account group ID that scopes the request.

Required

campaignIdPath

Type: string

Campaign ID that identifies the campaign to read or mutate.

Required

Request body

Required

Optional

Content types

application/json

Schema

UpdateCampaignScheduleBody

Fields

businessHours

Type: object

Request field for business hours.

Required

messageHours

Type: object

Request field for message hours.

Required

maxRunsPerDay

Type: integer

Request field for max runs per day.

Optional

Responses

200

Campaign schedule and optional daily LinkedIn run limit updated

Schema: CampaignSuccessResponse

400

Request validation failed

Schema: ValidationErrorResponse

401

Invalid or missing API key

Schema: ErrorResponse

403

Missing required permission

Schema: ErrorResponse

404

Resource not found

Schema: ErrorResponse

422

Request validation failed

Schema: ValidationErrorResponse

429

Rate limit exceeded

Schema: ErrorResponse

500

Internal server error

Schema: ErrorResponse

502

Upstream service error

Schema: ErrorResponse

Response examples

200 Example JSONCampaignSuccessResponse
{
    "success": true,
    "data": {
        "id": "507f1f77bcf86cd799439011",
        "name": "Avery Stone",
        "description": "string",
        "status": "draft",
        "selectedLeadCount": 25,
        "includeConversationHistory": true,
        "autoCancelOnMessageReceived": true,
        "outreachLanguage": "en",
        "businessHours": {
            "window": {
                "start": "string",
                "end": "string"
            },
            "days": [
                "Mon"
            ],
            "timezone": "string"
        },
        "messageHours": {
            "window": {
                "start": "string",
                "end": "string"
            },
            "days": [
                "Mon"
            ],
            "timezone": "string"
        },
        "maxRunsPerDay": 25,
        "createdAt": "string",
        "updatedAt": "string",
        "startedAt": "string",
        "rateLimitedUntil": "string"
    },
    "error": null,
    "traceId": "507f1f77bcf86cd799439011"
}
400 Example JSONValidationErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
401 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
403 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
404 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
422 Example JSONValidationErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
429 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
500 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}
502 Example JSONErrorResponse
{
    "success": false,
    "data": null,
    "error": {
        "code": "string",
        "message": "Thanks for the context. I can send over details this afternoon.",
        "details": "string"
    },
    "traceId": "507f1f77bcf86cd799439011"
}