500 error on all POST requests to `constituent/v1/constituents`

I am getting a 500 error when adding constituents. Before the weekend the response was OK, now an error. Is this being looked into?

This is using Visual Studio 2022, C#, adapting the copperplate from SKI api. I am able to UPDATE other fields but this endpoint https://api.sky.blackbaud.com/constituent/v1/constituents is returning the 500 code (see below)

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Cache-Control: no-cache
Pragma: no-cache
Strict-Transport-Security: max-age=31536000;includeSubDomains
Content-Security-Policy: frame-ancestors 'self' https://host.nxt.blackbaud.com
X-Content-Type-Options: nosniff
section-io-id: 3a4bf2df38285ef25525318539bdc81b
Date: Mon, 08 Jun 2026 16:27:10 GMT
Content-Length: 36
Content-Type: application/json; charset=utf-8
Expires: -1
}, Trailing Headers:
{
}}

Answers

  • Hi @Pete H - checking in to see if you are still seeing this error? I'm also tagging @Erik Leaver in for awareness. Thanks!

  • Erik Leaver
    Erik Leaver Blackbaud Employee
    Tenth Anniversary Kudos 5 First Reply Name Dropper

    Hi @Pete H

    A 500 Internal Server Error from the SKY API /constituent/v1/constituents endpoint almost always indicates something went wrong on the server side—but in practice, it’s often triggered by a specific request condition.

    Assuming the call hasn't changed at all check:

    Pagination Issues: This endpoint enforces paging rules.

    • limit too large (over allowed max, typically 5000 or lower depending on context)
    • offset beyond dataset range

    Throttling / Rate Limits: While typically a 429, in edge cases:

    • High-volume calls can degrade into 500 responses
    • Check your api usage

    Data-Specific Edge Cases:

    • Corrupt or incomplete records in the database
    • Constituents with unusual data relationships
    • Fields returning null where backend doesn’t expect it

    You’ll often see:

    • Works for most queries
    • Fails only when hitting specific records

    Debug Steps

    1. Retry the same call
      • If intermittent it's potentially a backend timeout
    2. Strip down the request
      • Remove all filters
      • GET /constituents?limit=1
      • If this works issue is likely in parameters/limits
    3. Test in Postman vs. app
      1. Helps isolate whether it’s request construction vs. backend


    If it continues, please log a case with support. Please include:

    • Full request (headers + URL)
    • Timestamp (with timezone)
    • Correlation ID (from response headers)
    • Whether it’s reproducible

Categories