Projects

On this page, we'll dive into the different projects endpoints you can use to fetch projects programmatically, and to update a project's profile and its answers to the community's project form.

POST/api/Project/GetByCommunity

List projects

This endpoint allows you to retrieve a paginated list of all your community's projects, together with the permission flags that describe what the calling user may do with them and the filter facets you can build a project browser from.

Request body attributes

  • Name
    communityId
    Type
    integer
    Description

    Required. The ID of the community whose projects you want to list. The caller must be an approved member of that community.

  • Name
    skip
    Type
    integer
    Description

    The number of projects to skip. Defaults to 0. Pending projects are only returned when skip is 0.

  • Name
    take
    Type
    integer
    Description

    The maximum number of projects to return. 0 — the default — returns every match. The filter also accepts pageSize as an alias, which is only applied when take is absent or 0.

  • Name
    concept
    Type
    string
    Description

    Free-text search across the project name and intro text. When it is set, full-text ranking replaces orderBy.

  • Name
    orderBy
    Type
    integer
    Description

    Sort order, sent as an integer: 0 name A→Z, 1 most recently created, 2 most viewed, 3 most commented, 4 most members, 5 most recently updated. Ignored when concept is set.

  • Name
    countryFilter
    Type
    object
    Description

    Restricts the list by country. Described under countryFilter object below.

  • Name
    sdgFilter
    Type
    object
    Description

    Restricts the list by UN Sustainable Development Goal. Same shape as countryFilter, with values holding goal IDs.

  • Name
    industryFilter
    Type
    object
    Description

    Restricts the list by industry category. Same shape as countryFilter, with values holding category IDs.

  • Name
    programFilter
    Type
    object
    Description

    Restricts the list by program (methodology). Same shape as countryFilter, with values holding program IDs.

  • Name
    developmentStageFilter
    Type
    object
    Description

    Restricts the list by development stage. Same shape as countryFilter, except values is an array of stage key strings.

  • Name
    tagFilter
    Type
    object
    Description

    Restricts the list by project tag. Same shape as countryFilter, except values is an array of tag names.

  • Name
    filters
    Type
    array
    Description

    Restricts the list by the answers projects gave on the community's project form. Described under filters array items below.

countryFilter object

The same two fields back countryFilter, sdgFilter, industryFilter, programFilter, developmentStageFilter and tagFilter. Each filter is ignored when its values array is absent or empty.

  • Name
    filterType
    Type
    integer
    Description

    How to apply values, sent as an integer: 0 keeps projects matching any of the values, 1 excludes projects matching any of them.

  • Name
    values
    Type
    array of integer
    Description

    The IDs to match. developmentStageFilter and tagFilter take an array of strings here instead — stage keys and tag names respectively.

filters array items

  • Name
    filterType
    Type
    integer
    Description

    0 keeps projects whose answer is any of answers, 1 excludes them.

  • Name
    question
    Type
    string
    Description

    The exact question text from the community's project form, as returned in projectFilters.filters[].question.

  • Name
    answers
    Type
    array of string
    Description

    The answer values to match, as returned in projectFilters.filters[].answers.

Response attributes

  • Name
    canCreateProjects
    Type
    boolean
    Description

    Whether the calling user may create a project in this community. true for an approved community member whose community circle grants the create-project permission.

  • Name
    canInviteToProjects
    Type
    boolean
    Description

    Whether the calling user may invite other people to projects in this community.

  • Name
    canApproveParagraph
    Type
    boolean
    Description

    Whether the calling user may approve project paragraphs submitted for review in this community.

  • Name
    isCreateProjectsLocked
    Type
    boolean
    Description

    Whether project creation is currently locked at community level. When true, nobody can create a project even if canCreateProjects is true.

  • Name
    canAccessToOverviewProject
    Type
    boolean
    Description

    Whether the calling user may open the community's project-overview (tracking) screens.

  • Name
    pendingProjects
    Type
    array
    Description

    Projects awaiting approval into this community. Only returned to community administrators, and only on the first page — a skip of 0. An empty array otherwise. Described under pendingProjects array items below.

  • Name
    projects
    Type
    object
    Description

    The paginated result set of approved projects. Described under projects object below.

  • Name
    projectFilters
    Type
    object
    Description

    The filter facets available for this community's project list, derived from every project that matched the request rather than from the current page. Described under projectFilters object below.

pendingProjects array items

The elements of pendingProjects and of projects.list share this shape.

  • Name
    isFollowing
    Type
    boolean
    Description

    Whether the calling user follows this project — that is, holds an approved project membership in any circle.

  • Name
    canEditProjectInfo
    Type
    boolean
    Description

    Whether the calling user may edit this project's information. Equivalent to being an approved member of the project's Team circle.

  • Name
    projectTags
    Type
    array of string
    Description

    The project's tag names, de-duplicated. Empty when the project has no tags.

  • Name
    projectSustainableDevelopmentGoals
    Type
    array
    Description

    The UN Sustainable Development Goals linked to the project. Described under projectSustainableDevelopmentGoals array items below. Always empty for pendingProjects.

  • Name
    isProjectTeamMember
    Type
    boolean
    Description

    Whether the calling user is an approved member of the project's Team circle. Always mirrors canEditProjectInfo.

  • Name
    id
    Type
    integer
    Description

    The ID of the project.

  • Name
    name
    Type
    string
    Description

    The project name.

  • Name
    description
    Type
    string
    Description

    The project's short description.

  • Name
    logoImage
    Type
    string
    Description

    Server-relative path to the project logo image.

  • Name
    isVideo
    Type
    boolean
    Description

    Whether mainImageOrVideo points at a video rather than an image.

  • Name
    websiteUrl
    Type
    string
    Description

    The project's external website, or an empty string when none is set.

  • Name
    mainImageOrVideo
    Type
    string
    Description

    Server-relative path to the project's hero image, or the video URL when isVideo is true. An empty string when none is set.

  • Name
    countryName
    Type
    string
    Description

    The name of the project's country.

  • Name
    city
    Type
    string
    Description

    The project's city.

  • Name
    latitude
    Type
    number | null
    Description

    The project's latitude in decimal degrees. null when the project has no map position.

  • Name
    longitude
    Type
    number | null
    Description

    The project's longitude in decimal degrees. null when the project has no map position.

  • Name
    categoryName
    Type
    string
    Description

    The name of the project's industry category.

  • Name
    developmentStage
    Type
    string
    Description

    The project's development-stage key, for example default_development_stage_idea. An empty string when the project has no stage set. Translate it through your locale files for display.

  • Name
    unGoalName
    Type
    string | null
    Description

    The name of the project's legacy UN goal. Always null on this endpoint.

  • Name
    viewCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    commentCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    loveCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    canInviteMembersAndMentorsFromOutside
    Type
    boolean
    Description

    Whether the project may invite members and mentors from outside the community.

projectSustainableDevelopmentGoals array items

  • Name
    projectId
    Type
    integer
    Description

    The ID of the project the goal is linked to. Always matches the enclosing element's id.

  • Name
    sustainableDevelopmentGoalId
    Type
    integer
    Description

    The ID of the UN Sustainable Development Goal. Resolve its name through projectFilters.sustainableDevelopmentGoals.

projects object

  • Name
    count
    Type
    integer
    Description

    The total number of projects matching the filter, before skip and take are applied. Use it to drive pagination.

  • Name
    list
    Type
    array
    Description

    The current page of projects. Same shape as the pendingProjects array items above.

  • Name
    filters
    Type
    null
    Description

    Always null on this endpoint. The available filter facets are returned in projectFilters instead.

projectFilters object

  • Name
    countries
    Type
    array
    Description

    The distinct countries of the matched projects, sorted by name. Described under projectFilters.countries array items below.

  • Name
    sustainableDevelopmentGoals
    Type
    array
    Description

    The distinct UN Sustainable Development Goals of the matched projects, sorted by name. Described under projectFilters.sustainableDevelopmentGoals array items below.

  • Name
    developmentStages
    Type
    array of string
    Description

    The distinct development-stage keys of the matched projects, sorted alphabetically. An empty string appears when some projects have no stage set.

  • Name
    industries
    Type
    array
    Description

    The distinct industry categories of the matched projects, sorted by name. Described under projectFilters.industries array items below.

  • Name
    tags
    Type
    array of string
    Description

    The distinct tag names across the matched projects, sorted alphabetically.

  • Name
    filters
    Type
    array
    Description

    The community's filterable project-form questions and the answers currently in use. Described under projectFilters.filters array items below. Empty when the community has no project form, or when no question is marked filterable.

  • Name
    programs
    Type
    array
    Description

    The programs (methodologies) the matched projects run in this community, sorted by name. Only returned when the community has more than one program; an empty array otherwise. Described under projectFilters.programs array items below.

projectFilters.countries array items

  • Name
    name
    Type
    string
    Description

    The country name.

  • Name
    code
    Type
    string
    Description

    The ISO 3166-1 alpha-2 country code.

  • Name
    timezone
    Type
    string
    Description

    The country's default IANA time-zone name.

  • Name
    id
    Type
    integer
    Description

    The ID of the country. This is what you send in countryFilter.values.

projectFilters.sustainableDevelopmentGoals array items

  • Name
    name
    Type
    string
    Description

    The goal's name.

  • Name
    iconName
    Type
    string
    Description

    The base file name of the goal's official icon asset.

  • Name
    id
    Type
    integer
    Description

    The ID of the goal. It matches projectSustainableDevelopmentGoals[].sustainableDevelopmentGoalId and is what you send in sdgFilter.values.

projectFilters.industries array items

  • Name
    name
    Type
    string
    Description

    The industry name.

  • Name
    isAddedByUser
    Type
    boolean
    Description

    Whether the industry was created by a user rather than shipped as a platform default.

  • Name
    id
    Type
    integer
    Description

    The ID of the industry. This is what you send in industryFilter.values.

projectFilters.filters array items

  • Name
    question
    Type
    string
    Description

    The text of a filterable question on the community's project form.

  • Name
    answers
    Type
    array of string
    Description

    The distinct answer values available for that question. For choice questions these are the options at least one project selected, for country questions it is the full country list, and otherwise it is the distinct free-text answers.

projectFilters.programs array items

  • Name
    id
    Type
    integer
    Description

    The ID of the program (methodology). This is what you send in programFilter.values.

  • Name
    name
    Type
    string
    Description

    The program name.

Possible errors

  • Name
    401 Unauthorized
    Description

    The request is not authenticated.

  • Name
    500 Internal Server Error
    Description

    The caller may not access the requested community, or the bearer token no longer resolves to a user. The body carries an error discriminator — CannotAccessToCommunityException or UserOauthExpiredException — alongside errorCode and message.

Request

POST
/api/Project/GetByCommunity
curl -X POST https://api.babele.co/api/Project/GetByCommunity \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"communityId": 999,
"skip": 0,
"take": 50,
"concept": "water",
"orderBy": 5,
"countryFilter": { "filterType": 0, "values": [173, 196] },
"sdgFilter": { "filterType": 0, "values": [6, 7] },
"industryFilter": { "filterType": 1, "values": [1365] },
"programFilter": { "filterType": 0, "values": [542] },
"developmentStageFilter": { "filterType": 0, "values": ["default_development_stage_idea"] },
"tagFilter": { "filterType": 0, "values": ["cohort2021"] },
"filters": [
{
  "filterType": 0,
  "question": "Which stage is your venture in?",
  "answers": ["Idea", "Prototype"]
}
]
}'

Response

{
"canCreateProjects": true,
"canInviteToProjects": true,
"canApproveParagraph": true,
"isCreateProjectsLocked": false,
"canAccessToOverviewProject": true,
"pendingProjects": [
    {
        "isFollowing": false,
        "canEditProjectInfo": false,
        "projectTags": [
            "water",
            "cohort2026"
        ],
        "projectSustainableDevelopmentGoals": [],
        "isProjectTeamMember": false,
        "id": 8340,
        "name": "Rainwater Harvesting Co-op",
        "description": "Community-managed rainwater capture for smallholder farms.",
        "logoImage": "/Images/Uploads/businessplan_logo/logo_202402091139399770_256x256.png",
        "isVideo": false,
        "websiteUrl": "",
        "mainImageOrVideo": "",
        "countryName": "Romania",
        "city": "Cluj-Napoca",
        "latitude": 46.7712,
        "longitude": 23.6236,
        "categoryName": "Environment",
        "developmentStage": "default_development_stage_idea",
        "unGoalName": null,
        "viewCount": 0,
        "commentCount": 0,
        "loveCount": 0,
        "canInviteMembersAndMentorsFromOutside": true
    }
],
"projects": {
    "count": 168,
    "list": [
        {
            "isFollowing": false,
            "canEditProjectInfo": false,
            "projectTags": [],
            "projectSustainableDevelopmentGoals": [],
            "isProjectTeamMember": false,
            "id": 8464,
            "name": "Applied Startup",
            "description": "Applied Startup",
            "logoImage": "/Images/Uploads/businessplan_logo/croppedlogo_202503260943413072_256x256.png",
            "isVideo": false,
            "websiteUrl": "",
            "mainImageOrVideo": "/Images/Uploads/businessplan_logo/istockphotox_202409160831118642_1024x1024.jpg",
            "countryName": "United States",
            "city": "Austin",
            "latitude": 30.2672,
            "longitude": -97.7431,
            "categoryName": "Ad Tech",
            "developmentStage": "default_development_stage_idea",
            "unGoalName": null,
            "viewCount": 0,
            "commentCount": 0,
            "loveCount": 0,
            "canInviteMembersAndMentorsFromOutside": true
        },
        {
            "isFollowing": false,
            "canEditProjectInfo": false,
            "projectTags": [],
            "projectSustainableDevelopmentGoals": [
                {
                    "projectId": 8087,
                    "sustainableDevelopmentGoalId": 7
                }
            ],
            "isProjectTeamMember": false,
            "id": 8087,
            "name": "Solar Pump Pilot",
            "description": "Testing solar-driven pumps on three village wells.",
            "logoImage": "/Images/Uploads/businessplan_logo/croppedlogo_202502171548010668_256x256.png",
            "isVideo": false,
            "websiteUrl": "",
            "mainImageOrVideo": "/Images/Uploads/businessplan_logo/croppedimage_202502171547466637_1024x1024.jpg",
            "countryName": "Romania",
            "city": "Iasi",
            "latitude": null,
            "longitude": null,
            "categoryName": "Environment",
            "developmentStage": "",
            "unGoalName": null,
            "viewCount": 0,
            "commentCount": 0,
            "loveCount": 0,
            "canInviteMembersAndMentorsFromOutside": true
        },
        {
            "isFollowing": false,
            "canEditProjectInfo": false,
            "projectTags": [
                "appendTag1",
                "appendTag2",
                "cohort2021",
                "old_17"
            ],
            "projectSustainableDevelopmentGoals": [
                {
                    "projectId": 7898,
                    "sustainableDevelopmentGoalId": 6
                },
                {
                    "projectId": 7898,
                    "sustainableDevelopmentGoalId": 7
                }
            ],
            "isProjectTeamMember": false,
            "id": 7898,
            "name": "Village Water Kiosks",
            "description": "Pay-as-you-go safe water kiosks run by local operators.",
            "logoImage": "/Images/Uploads/businessplan_logo/croppedlogo_202412110951571948_256x256.png",
            "isVideo": false,
            "websiteUrl": "https://waterkiosks.example.org",
            "mainImageOrVideo": "/Images/Uploads/businessplan_logo/croppedimage_202412101338193888_1024x1024.jpg",
            "countryName": "Romania",
            "city": "Bucharest",
            "latitude": 44.4268,
            "longitude": 26.1025,
            "categoryName": "Environment",
            "developmentStage": "default_development_stage_scaling",
            "unGoalName": null,
            "viewCount": 0,
            "commentCount": 0,
            "loveCount": 0,
            "canInviteMembersAndMentorsFromOutside": true
        }
    ],
    "filters": null
},
"projectFilters": {
    "countries": [
        {
            "name": "Romania",
            "code": "RO",
            "timezone": "Europe/Bucharest",
            "id": 173
        },
        {
            "name": "United States",
            "code": "US",
            "timezone": "America/New_York",
            "id": 196
        }
    ],
    "sustainableDevelopmentGoals": [
        {
            "name": "Affordable And Clean Energy",
            "iconName": "goals_icons-individual-rgb-07",
            "id": 7
        },
        {
            "name": "Clean Water and Sanitation",
            "iconName": "goals_icons-individual-rgb-06",
            "id": 6
        }
    ],
    "developmentStages": [
        "",
        "default_development_stage_idea",
        "default_development_stage_prototype",
        "default_development_stage_scaling",
        "default_development_stage_start_up"
    ],
    "industries": [
        {
            "name": "Ad Tech",
            "isAddedByUser": false,
            "id": 1365
        },
        {
            "name": "Environment",
            "isAddedByUser": false,
            "id": 1402
        }
    ],
    "tags": [
        "appendTag1",
        "appendTag2",
        "cohort2021",
        "old_17",
        "water"
    ],
    "filters": [
        {
            "question": "Which stage is your venture in?",
            "answers": [
                "Idea",
                "Prototype",
                "Scaling"
            ]
        }
    ],
    "programs": [
        {
            "id": 542,
            "name": "Impact Accelerator 2026"
        },
        {
            "id": 611,
            "name": "Water Innovators Track"
        }
    ]
}
}

GET/api/ProjectTracking/SearchOverview?communityId={communityId}

Get projects overview

This endpoint allows you to get an overview of a project's progress, details and team members. It returns a JSON array with one element per project in the community, ordered by creation date, newest first.

Required query parameters

  • Name
    communityId
    Type
    integer
    Description

    The ID of the community whose projects you want to track.

Optional query parameters

  • Name
    concept
    Type
    string
    Description

    Free-text search over the project name.

  • Name
    countryId
    Type
    integer
    Description

    Only return projects based in this country.

  • Name
    categoryId
    Type
    integer
    Description

    Only return projects in this industry category.

  • Name
    tags
    Type
    array of string
    Description

    Only return projects carrying these tags. Repeat the parameter once per tag.

  • Name
    sustainableDevelopmentGoalsIds
    Type
    array of integer
    Description

    Only return projects linked to these UN Sustainable Development Goals. Repeat the parameter once per ID.

  • Name
    skip
    Type
    integer
    Description

    The number of projects to skip. Defaults to 0.

  • Name
    take
    Type
    integer
    Description

    The maximum number of projects to return. 0 — the default — returns every match.

Response attributes

The payload is a JSON array. Each element describes one project:

  • Name
    projectId
    Type
    integer
    Description

    The ID of the project.

  • Name
    projectName
    Type
    string
    Description

    The project name.

  • Name
    logoImage
    Type
    string
    Description

    Server-relative path to the project logo image.

  • Name
    progress
    Type
    integer
    Description

    The project's average completion across its active programs, as a whole-number percentage from 0 to 100.

  • Name
    tags
    Type
    array of string
    Description

    The project's tag names.

  • Name
    projectCircles
    Type
    array
    Description

    The project's circles in this community. Described under projectCircles array items below.

  • Name
    projectUsers
    Type
    array
    Description

    The project's members in this community, including pending invitations and applications. Described under projectUsers array items below.

  • Name
    lastUpdate
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of the most recently published paragraph across the project's programs. null when the project has published nothing yet, or has no program attached.

  • Name
    stage
    Type
    string
    Description

    The name of the program section the project most recently published into. An empty string when nothing has been published.

  • Name
    coachingSessions
    Type
    integer
    Description

    The number of mentoring requests recorded against the project.

  • Name
    kpi
    Type
    integer
    Description

    The share of the project's KPI values that are still unset — recorded as 0 — as a whole-number percentage from 0 to 100.

projectCircles array items

communityProject and project are always null on this endpoint. Exactly one of projectId and communityProjectId is set on any circle.

  • Name
    communityProjectId
    Type
    integer | null
    Description

    The ID of the community-project link the circle belongs to. null for project-scoped circles such as Team.

  • Name
    communityProject
    Type
    null
    Description

    Always null on this endpoint.

  • Name
    projectId
    Type
    integer | null
    Description

    The ID of the project the circle belongs to. null for circles scoped to a community-project link.

  • Name
    project
    Type
    null
    Description

    Always null on this endpoint.

  • Name
    communityId
    Type
    null
    Description

    Always null on this endpoint. It is a write-only helper used when creating a circle.

  • Name
    name
    Type
    string
    Description

    The circle name, for example Team, Mentors or Followers.

  • Name
    isTeamCircle
    Type
    boolean
    Description

    Read-only. true when name is Team.

  • Name
    isMentorsCircle
    Type
    boolean
    Description

    Read-only. true when name is Mentors.

  • Name
    isSpecialCircle
    Type
    boolean
    Description

    Read-only. true when name is one of the three built-in circles Team, Mentors or Followers.

  • Name
    isProjectScoped
    Type
    boolean
    Description

    Read-only. true when the circle belongs to the project itself rather than to a community-project link.

  • Name
    effectiveProjectId
    Type
    integer | null
    Description

    Read-only. The circle's project ID. Always equals projectId on this endpoint.

  • Name
    id
    Type
    integer
    Description

    The ID of the circle. It matches projectUsers[].projectCircleId.

projectUsers array items

  • Name
    projectCircleId
    Type
    integer
    Description

    The ID of the project circle the member belongs to. It matches an id in projectCircles.

  • Name
    isPendingByUser
    Type
    boolean
    Description

    true when the person asked to join the project and the team has not answered yet.

  • Name
    isPendingByTeam
    Type
    boolean
    Description

    true when the team invited the person and they have not answered yet.

  • Name
    requestedProjectCircleId
    Type
    integer | null
    Description

    The circle the person asked to be moved into, when a circle-change request is open. null otherwise.

  • Name
    id
    Type
    integer
    Description

    The ID of the user.

  • Name
    firstName
    Type
    string
    Description

    The user's first name.

  • Name
    lastName
    Type
    string
    Description

    The user's last name.

  • Name
    mail
    Type
    string
    Description

    The user's email address.

  • Name
    photo
    Type
    string
    Description

    Server-relative path to the stored profile picture.

  • Name
    occupation
    Type
    string
    Description

    The user's job title.

  • Name
    biography
    Type
    string
    Description

    The user's biography, as HTML.

  • Name
    commentCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    likeCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    followedUsersCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    activationCode
    Type
    string | null
    Description

    The pending account-activation code, when the user has not activated their account yet.

  • Name
    activationCodeSent
    Type
    boolean | null
    Description

    Whether the activation code has been emailed.

  • Name
    isProfileWizardDone
    Type
    boolean
    Description

    Whether the user finished the profile-setup wizard.

  • Name
    countryId
    Type
    integer | null
    Description

    The ID of the user's country.

  • Name
    country
    Type
    object | null
    Description

    The user's country. Described under projectUsers[].country object below. null when the user has no country set.

  • Name
    city
    Type
    string
    Description

    The user's city.

  • Name
    latitude
    Type
    number | null
    Description

    The user's latitude in decimal degrees. null when unknown.

  • Name
    longitude
    Type
    number | null
    Description

    The user's longitude in decimal degrees. null when unknown.

  • Name
    company
    Type
    string
    Description

    The user's company.

  • Name
    isBanned
    Type
    boolean
    Description

    Whether the user is banned from the platform.

  • Name
    isActive
    Type
    boolean
    Description

    Whether the user's account is active.

  • Name
    invitationUrl
    Type
    string | null
    Description

    The URL the user is redirected to after their first log-in, when they were invited.

  • Name
    language
    Type
    string
    Description

    The user's interface language tag, for example en-EN.

  • Name
    registrationDate
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of when the user registered.

  • Name
    lastLoginDate
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of the user's last log-in.

  • Name
    notificationEnabled
    Type
    boolean
    Description

    Whether the user receives notification emails.

  • Name
    primaryCommunityId
    Type
    integer | null
    Description

    The ID of the user's primary community.

  • Name
    primaryCommunityName
    Type
    string | null
    Description

    The name of the user's primary community. Always null on this endpoint.

  • Name
    hasPendingRequests
    Type
    boolean | null
    Description

    Whether the user has open mentoring requests.

  • Name
    userInterests
    Type
    array | null
    Description

    Always null on this endpoint. Interests are returned by the user-profile endpoints.

  • Name
    userSkills
    Type
    array | null
    Description

    Always null on this endpoint. Skills are returned by the user-profile endpoints.

  • Name
    userSocial
    Type
    array | null
    Description

    Always null on this endpoint. Linked social accounts are returned by the user-profile endpoints.

  • Name
    userMarketsExpertises
    Type
    array | null
    Description

    Always null on this endpoint. Market expertise is returned by the user-profile endpoints.

  • Name
    userSustainableDevelopmentsGoals
    Type
    array | null
    Description

    Always null on this endpoint.

  • Name
    tags
    Type
    array | null
    Description

    Always null on this endpoint.

  • Name
    userTags
    Type
    array of string | null
    Description

    Always null on this endpoint.

  • Name
    termsAndConditionsVersion
    Type
    integer
    Description

    The version of the terms and conditions the user accepted.

  • Name
    photoUrl
    Type
    string | null
    Description

    The profile picture to display. The same as photo when one is uploaded, and null otherwise on this endpoint.

  • Name
    facebookUrl
    Type
    string | null
    Description

    Always null on this endpoint.

  • Name
    twitterUrl
    Type
    string | null
    Description

    Always null on this endpoint.

  • Name
    googleUrl
    Type
    string | null
    Description

    Always null on this endpoint.

  • Name
    linkedInUrl
    Type
    string | null
    Description

    Always null on this endpoint.

  • Name
    isFollowedByMe
    Type
    boolean
    Description

    Always false on this endpoint.

projectUsers[].country object

  • Name
    name
    Type
    string
    Description

    The country name.

  • Name
    code
    Type
    string
    Description

    The ISO 3166-1 alpha-2 country code.

  • Name
    timezone
    Type
    string
    Description

    The country's default IANA time-zone name.

  • Name
    id
    Type
    integer
    Description

    The ID of the country. It matches the member's countryId.

Possible errors

  • Name
    401 Unauthorized
    Description

    The request is not authenticated.

  • Name
    403 Forbidden
    Description

    The caller does not belong to an approved community circle carrying the "access project overview" permission in the requested community.

Request

GET
/api/ProjectTracking/SearchOverview?communityId={communityId}
curl -X GET "https://api.babele.co/api/ProjectTracking/SearchOverview?communityId=999&concept=water&take=25" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json"

Response

[
{
    "projectId": 9309,
    "projectName": "Clean Water Initiative",
    "logoImage": "/Images/Uploads/logo.png",
    "progress": 50,
    "tags": [
        "water",
        "sanitation",
        "cohort2026"
    ],
    "projectCircles": [
        {
            "communityProjectId": null,
            "communityProject": null,
            "projectId": 9309,
            "project": null,
            "communityId": null,
            "name": "Team",
            "isTeamCircle": true,
            "isMentorsCircle": false,
            "isSpecialCircle": true,
            "isProjectScoped": true,
            "effectiveProjectId": 9309,
            "id": 20046
        },
        {
            "communityProjectId": 3312,
            "communityProject": null,
            "projectId": null,
            "project": null,
            "communityId": null,
            "name": "Mentors",
            "isTeamCircle": false,
            "isMentorsCircle": true,
            "isSpecialCircle": true,
            "isProjectScoped": false,
            "effectiveProjectId": null,
            "id": 20047
        }
    ],
    "projectUsers": [
        {
            "projectCircleId": 20046,
            "isPendingByUser": false,
            "isPendingByTeam": false,
            "requestedProjectCircleId": 20047,
            "id": 12,
            "firstName": "Jane",
            "lastName": "Doe",
            "mail": "jane.doe@babele.co",
            "photo": "/Images/Uploads/profile_picture/croppedimage_202412191310431332_256x256.jpg",
            "occupation": "Project Manager",
            "biography": "<p>Project manager.</p>",
            "commentCount": 0,
            "likeCount": 0,
            "followedUsersCount": 0,
            "activationCode": null,
            "activationCodeSent": null,
            "isProfileWizardDone": true,
            "countryId": 173,
            "country": {
                "name": "Romania",
                "code": "RO",
                "timezone": "Europe/Bucharest",
                "id": 173
            },
            "city": "Bucharest",
            "latitude": 44.4268,
            "longitude": 26.1025,
            "company": "Babele",
            "isBanned": false,
            "isActive": true,
            "invitationUrl": null,
            "language": "en-EN",
            "registrationDate": "2024-03-11T09:20:14Z",
            "lastLoginDate": "2025-01-09T10:54:35Z",
            "notificationEnabled": true,
            "primaryCommunityId": 999,
            "primaryCommunityName": null,
            "hasPendingRequests": null,
            "userInterests": null,
            "userSkills": null,
            "userSocial": null,
            "userMarketsExpertises": null,
            "userSustainableDevelopmentsGoals": null,
            "tags": null,
            "userTags": null,
            "termsAndConditionsVersion": 2,
            "photoUrl": "/Images/Uploads/profile_picture/croppedimage_202412191310431332_256x256.jpg",
            "facebookUrl": null,
            "twitterUrl": null,
            "googleUrl": null,
            "linkedInUrl": null,
            "isFollowedByMe": false
        }
    ],
    "lastUpdate": "2024-12-19T11:37:09Z",
    "stage": "Section 1",
    "coachingSessions": 23,
    "kpi": 5
}
]

GET/api/KPIReport/GetKpiChartReportsForOverview?communityId={communityId}

Get projects KPI progress

This endpoint allows you to retrieve the KPI progress of every project in your community. It returns a JSON array with one entry per project, each holding one series per KPI definition.

Required query parameters

  • Name
    communityId
    Type
    integer
    Description

    The ID of the community whose KPI progress you want to retrieve.

Response attributes

The payload is a JSON array. Each element describes one project, and the array is empty when the community has no qualifying projects.

  • Name
    projectId
    Type
    integer
    Description

    The ID of the project the KPI series belong to.

  • Name
    kpiChartReport
    Type
    array
    Description

    The KPI series for this project — one entry per KPI definition, combining the definitions inherited from the project's programs (methodologies) with the project's own definitions. Empty when the project has no KPI definitions. Described under kpiChartReport array items below.

kpiChartReport array items

  • Name
    kpiDefinitionAndProjectName
    Type
    string | null
    Description

    The KPI definition name and the project name joined with " - ", ready to use as a chart series label.

  • Name
    kpiDefinitionStartYear
    Type
    integer
    Description

    The first year the KPI is tracked from.

  • Name
    kpiDefinitionStartMonth
    Type
    integer
    Description

    The first month the KPI is tracked from, 1 to 12.

  • Name
    kpiDefinitionId
    Type
    integer
    Description

    The ID of the KPI definition this series belongs to.

  • Name
    frequency
    Type
    integer
    Description

    The reporting interval in months: 1 monthly, 3 quarterly, 6 half-yearly, 12 yearly. The reported months are derived by stepping from kpiDefinitionStartMonth in increments of this value.

  • Name
    kpiValues
    Type
    array
    Description

    The recorded values for this KPI, ordered by the ID of the underlying entry and de-duplicated so that only the most recent entry per year and month survives. Empty when nothing has been reported yet. Described under kpiChartReport[].kpiValues array items below.

  • Name
    methodologyId
    Type
    integer | null
    Description

    The ID of the program (methodology) the KPI definition belongs to, or null when the definition is scoped directly to the project instead of to a program.

  • Name
    isSurveyKPI
    Type
    boolean
    Description

    Whether the KPI is derived from a survey question. Always false on this endpoint.

kpiChartReport[].kpiValues array items

  • Name
    id
    Type
    integer
    Description

    The ID of the KPI value entry. When several entries exist for the same year and month, the one with the highest ID wins.

  • Name
    year
    Type
    integer
    Description

    The year the value was reported for.

  • Name
    month
    Type
    integer
    Description

    The month the value was reported for, 1 to 12.

  • Name
    value
    Type
    number | null
    Description

    The reported value. null when the period was opened for reporting but no figure was entered.

Possible errors

  • Name
    401 Unauthorized
    Description

    The request is not authenticated.

  • Name
    403 Forbidden
    Description

    The caller does not belong to an approved community circle carrying the "access project overview" permission in the requested community.

Request

GET
/api/KPIReport/GetKpiChartReportsForOverview?communityId={communityId}
curl -X GET https://api.babele.co/api/KPIReport/GetKpiChartReportsForOverview?communityId=999 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json"

Response

[
{
    "projectId": 1714,
    "kpiChartReport": [
        {
            "kpiDefinitionAndProjectName": "Litres of safe water delivered - Clean Water Initiative",
            "kpiDefinitionStartYear": 2025,
            "kpiDefinitionStartMonth": 1,
            "kpiDefinitionId": 274,
            "frequency": 1,
            "kpiValues": [
                {
                    "id": 1757,
                    "year": 2026,
                    "month": 4,
                    "value": 128000.0
                },
                {
                    "id": 1758,
                    "year": 2026,
                    "month": 5,
                    "value": 141500.0
                },
                {
                    "id": 1759,
                    "year": 2026,
                    "month": 6,
                    "value": null
                }
            ],
            "methodologyId": 73,
            "isSurveyKPI": false
        },
        {
            "kpiDefinitionAndProjectName": "Villages served - Clean Water Initiative",
            "kpiDefinitionStartYear": 2025,
            "kpiDefinitionStartMonth": 1,
            "kpiDefinitionId": 430,
            "frequency": 12,
            "kpiValues": [
                {
                    "id": 1801,
                    "year": 2025,
                    "month": 12,
                    "value": 18.0
                }
            ],
            "methodologyId": null,
            "isSurveyKPI": false
        }
    ]
},
{
    "projectId": 1715,
    "kpiChartReport": []
}
]

GET/api/Project/GetOverview?id={id}

Get a project overview

This endpoint returns the full overview payload for a single project — its descriptive content, media, social links, location, engagement counters, the team, pending paragraphs, tags, SDGs, KPI definitions and community-circle configuration. It also includes the calling user's permission flags (isCommunityAdmin, canEditProjectInfo, canEditProjectTeam, canEditCircles, canViewTasks) computed for that project. It backs the project overview/landing screen and the admin project view.

Required query parameters

  • Name
    id
    Type
    integer
    Description

    The ID of the project to retrieve.

Optional query parameters

  • Name
    communityId
    Type
    integer
    Description

    The ID of the community to scope the overview to. Omit it for the standalone project view, or supply it for the project as seen inside that community. See the note above for exactly which fields change.

Response attributes

  • Name
    id
    Type
    integer
    Description

    The ID of the project.

  • Name
    name
    Type
    string | null
    Description

    The project name.

  • Name
    description
    Type
    string | null
    Description

    The short project description.

  • Name
    logoImage
    Type
    string | null
    Description

    Server-relative path to the project logo.

  • Name
    isVideo
    Type
    boolean
    Description

    Whether mainImageOrVideo points at a video rather than an image.

  • Name
    websiteUrl
    Type
    string | null
    Description

    The project's own website.

  • Name
    mainImageOrVideo
    Type
    string | null
    Description

    Server-relative path to the project cover image, or the video URL when isVideo is true.

  • Name
    countryName
    Type
    string | null
    Description

    The display name of the project's country. null on the standalone path.

  • Name
    city
    Type
    string | null
    Description

    The project's city.

  • Name
    latitude
    Type
    number | null
    Description

    The project's latitude in decimal degrees.

  • Name
    longitude
    Type
    number | null
    Description

    The project's longitude in decimal degrees.

  • Name
    categoryName
    Type
    string | null
    Description

    The display name of the project's industry category.

  • Name
    developmentStage
    Type
    string | null
    Description

    The project's development stage, as free text.

  • Name
    unGoalName
    Type
    string | null
    Description

    The display name of the project's primary UN goal. null when the project has none, and on the standalone path.

  • Name
    viewCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    commentCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    loveCount
    Type
    integer
    Description

    Reserved. Always 0 on this endpoint.

  • Name
    canInviteMembersAndMentorsFromOutside
    Type
    boolean
    Description

    Whether the caller may invite people who are not yet platform users. Depends on the project setting and the caller's community membership.

  • Name
    isCommunityAdmin
    Type
    boolean
    Description

    Whether the caller administers the community the overview is scoped to. Always false when communityId is omitted.

  • Name
    canEditProjectInfo
    Type
    boolean
    Description

    Whether the caller may edit the project's descriptive content. true for project team members, and for community administrators when the project belongs to a single community.

  • Name
    canEditProjectTeam
    Type
    boolean
    Description

    Whether the caller may add or remove team members.

  • Name
    canEditCircles
    Type
    boolean
    Description

    Whether the caller may create extra project circles for privacy. Requires the caller to be a team member and at least one of the project's communities to allow it. Always false when communityId is omitted.

  • Name
    canViewTasks
    Type
    boolean
    Description

    Whether the caller may see the project's tasks.

  • Name
    isFollowing
    Type
    boolean
    Description

    Whether the caller follows the project.

  • Name
    isProjectTeamMember
    Type
    boolean
    Description

    Whether the caller is an approved member of the project.

  • Name
    isPendingByTeam
    Type
    boolean
    Description

    Whether the caller has been invited by the team and has not yet accepted.

  • Name
    isPendingByUser
    Type
    boolean
    Description

    Whether the caller has asked to join and the team has not yet accepted.

  • Name
    twitterUrl
    Type
    string | null
    Description

    The full Twitter URL, or null when no handle is set.

  • Name
    facebookUrl
    Type
    string | null
    Description

    The full Facebook URL, or null.

  • Name
    googleUrl
    Type
    string | null
    Description

    The full Google URL, or null.

  • Name
    linkedInUrl
    Type
    string | null
    Description

    The full LinkedIn URL, or null.

  • Name
    flickrUrl
    Type
    string | null
    Description

    The full Flickr URL, or null.

  • Name
    twitterUrlSuffix
    Type
    string | null
    Description

    Just the handle or path portion of twitterUrl.

  • Name
    facebookUrlSuffix
    Type
    string | null
    Description

    Just the handle or path portion of facebookUrl.

  • Name
    googleUrlSuffix
    Type
    string | null
    Description

    Just the handle or path portion of googleUrl.

  • Name
    linkedInUrlSuffix
    Type
    string | null
    Description

    Just the handle or path portion of linkedInUrl.

  • Name
    flickrUrlSuffix
    Type
    string | null
    Description

    Just the handle or path portion of flickrUrl.

  • Name
    discussionCount
    Type
    integer
    Description

    The number of discussions the caller may see in this community. 0 when communityId is omitted.

  • Name
    resourceCount
    Type
    integer
    Description

    The number of resources the caller may see in this community. 0 when communityId is omitted.

  • Name
    networkCount
    Type
    integer
    Description

    The number of people connected to the project in this community. 0 when communityId is omitted.

  • Name
    methodologyId
    Type
    integer
    Description

    Always 0 on this endpoint — use kpiDefinitions[].methodologyId or the programs endpoints instead.

  • Name
    problemSolved
    Type
    string | null
    Description

    The "problem solved" section of the project profile.

  • Name
    ourSolution
    Type
    string | null
    Description

    The "our solution" section of the project profile.

  • Name
    measureImpact
    Type
    string | null
    Description

    The "how we measure impact" section of the project profile.

  • Name
    lastUpdated
    Type
    string
    Description

    Always "0001-01-01T00:00:00Z" on this endpoint, on both paths. Never null.

  • Name
    userInvitationPolicy
    Type
    integer
    Description

    Who may invite people to the project, as the strictest policy across the communities in scope: 0 Undefined, 1 Anyone, 2 OnlyPlatformUsers, 3 OnlyCommunityUsers, 4 None (community administrators only). 4 when communityId is omitted, because no community policy applies.

  • Name
    hideParagraphsUntilDate
    Type
    boolean
    Description

    Whether program paragraphs stay hidden until their scheduled date.

  • Name
    countryId
    Type
    integer
    Description

    The ID of the project's country.

  • Name
    categoryId
    Type
    integer
    Description

    The ID of the project's industry category.

  • Name
    unGoalId
    Type
    integer | null
    Description

    The ID of the project's primary UN goal, or null.

  • Name
    projectModel
    Type
    string | null
    Description

    The project's business model, as free text.

  • Name
    pendingParagraphs
    Type
    array
    Description

    Up to three program paragraphs that still have no content, ordered by section. Empty unless the caller is a project team member, and always empty when communityId is omitted. Described under pendingParagraphs array items below.

  • Name
    team
    Type
    array
    Description

    The project's approved team members. Described under team array items below.

  • Name
    openDiscussions
    Type
    array
    Description

    Up to five active, non-archived discussions on the project, newest first. Always empty when communityId is omitted. Described under openDiscussions array items below.

  • Name
    projectTags
    Type
    array of string
    Description

    The project's tags, de-duplicated. Always [] when communityId is supplied. Only the standalone path returns them, and there it is [] when the project has none.

  • Name
    projectSustainableDevelopmentGoals
    Type
    array
    Description

    The Sustainable Development Goals the project is aligned with. Same shape as the projectSustainableDevelopmentGoals array items documented under List projects above — projectId and sustainableDevelopmentGoalId.

  • Name
    communityIds
    Type
    array of integer
    Description

    The community the overview is scoped to, as a single-element array — not every community the project belongs to. [] when communityId is omitted, and [] when the requested community project is not approved, is disabled, or is not public. Use communities for the full list.

  • Name
    mainCommunityId
    Type
    integer | null
    Description

    The community the overview is scoped to, or null when communityId is omitted, or when the community project is not approved or not public.

  • Name
    communities
    Type
    array
    Description

    Every community the project is publicly visible in. On the standalone path this is the project's full public community list; when communityId is supplied it is narrowed to the communities the caller can see — team members see all of them. Described under communities array items below.

  • Name
    form
    Type
    object | null
    Description

    The community's project form — the extra questions this community asks its projects. null when the community has no project form, and always null when communityId is omitted. Described under form object below.

  • Name
    answers
    Type
    array | null
    Description

    The project's answers to the community project form, across every round. null when communityId is omitted, and [] when the project has not answered anything. Described under answers array items below.

  • Name
    kpiDefinitions
    Type
    array | null
    Description

    The KPI definitions that apply to the project — those inherited from its programs plus its own. null when communityId is omitted. Described under kpiDefinitions array items below.

  • Name
    projectCommunityCircleList
    Type
    array | null
    Description

    Always null on this endpoint. Where populated, each element carries id, communityProjectId, communityCircleId, communityCircle and communityProject.

  • Name
    projectCommunityUserCircleTagList
    Type
    array of string
    Description

    Always [] on this endpoint. Where populated, it holds community-circle tag names.

communities array items

  • Name
    id
    Type
    integer
    Description

    The ID of the community.

  • Name
    name
    Type
    string | null
    Description

    The community name.

  • Name
    logoImageUrl
    Type
    string | null
    Description

    Server-relative path to the community logo.

pendingParagraphs array items

  • Name
    id
    Type
    integer
    Description

    The ID of the project's paragraph record.

  • Name
    name
    Type
    string | null
    Description

    The title of the program paragraph that is still empty.

  • Name
    methodologySectionId
    Type
    integer
    Description

    The ID of the program section the paragraph belongs to.

team array items

Same shape as the projectUsers array items documented under Get projects overview above, with a few differences on this endpoint. Only approved, active members of the project's Team circle are returned, so isPendingByUser and isPendingByTeam are always false and isActive is always true. country is always null here, while facebookUrl, twitterUrl, googleUrl and linkedInUrl are populated.

openDiscussions array items

  • Name
    paragraphId
    Type
    integer | null
    Description

    The program paragraph the discussion is attached to, or null for free-standing discussions.

  • Name
    discussionUserFollows
    Type
    array | null
    Description

    Always null on this endpoint. Where populated, it holds up to five followers, each with id, firstName, lastName and photo.

  • Name
    followersCount
    Type
    integer
    Description

    The total number of followers. Always 0 on this endpoint.

  • Name
    id
    Type
    integer
    Description

    The ID of the discussion.

  • Name
    name
    Type
    string | null
    Description

    The discussion title.

  • Name
    commentCount
    Type
    integer
    Description

    The number of comments on the discussion.

  • Name
    image
    Type
    string | null
    Description

    Server-relative path to the discussion's cover image.

  • Name
    postDate
    Type
    string
    Description

    ISO-8601 UTC timestamp of when the discussion was opened.

  • Name
    lastUpdated
    Type
    string
    Description

    ISO-8601 UTC timestamp of when the discussion was last edited.

  • Name
    deadlineDate
    Type
    string | null
    Description

    The computed deadline, derived from postDate and deadline. null when no deadline is set.

  • Name
    deadline
    Type
    integer | null
    Description

    The deadline window: 0 Undefined, 1 Day, 2 Week, 3 Month, 4 Year, 5 Never. null when no deadline is set.

  • Name
    daysLeft
    Type
    integer | null
    Description

    Whole days between now and deadlineDate. Negative once the deadline has passed, and null when there is no deadline.

  • Name
    isActive
    Type
    boolean
    Description

    Whether the discussion is open. Always true here — closed discussions are filtered out.

  • Name
    userId
    Type
    integer
    Description

    The ID of the user who opened the discussion.

  • Name
    authorName
    Type
    string | null
    Description

    The author's full name. Always null on this endpoint.

  • Name
    authorPhoto
    Type
    string | null
    Description

    The author's avatar path. Always null on this endpoint.

  • Name
    authorOccupation
    Type
    string | null
    Description

    The author's job title. Always null on this endpoint.

  • Name
    discussionTags
    Type
    array of string
    Description

    The discussion's tags, de-duplicated.

  • Name
    circleTags
    Type
    array of string | null
    Description

    The circles the discussion is shared with, by name. Always null on this endpoint — only the discussion-list endpoints populate it.

  • Name
    discussionSkillCategories
    Type
    array of string | null
    Description

    The skill categories the discussion asks for help in. Always null on this endpoint — only the discussion-detail endpoint populates it.

  • Name
    isArchived
    Type
    boolean
    Description

    Whether the discussion has been archived. Always false here — archived discussions are filtered out.

  • Name
    isLockedCommentDiscussions
    Type
    boolean
    Description

    Whether commenting is locked. Always false on this endpoint — only the discussion-detail endpoint sets it.

  • Name
    privacyLevel
    Type
    integer
    Description

    Who can see the discussion: 0 Undefined, 1 Public, 2 Community, 3 Team, 4 Custom, 5 TeamAndMentors, 6 SetByTeam. Always 0 (Undefined) on this endpoint.

  • Name
    isFollowedByMe
    Type
    boolean
    Description

    Whether the caller follows the discussion.

  • Name
    viewCount
    Type
    integer
    Description

    The number of times the discussion has been opened.

form object

  • Name
    id
    Type
    integer
    Description

    The ID of the form.

  • Name
    name
    Type
    string | null
    Description

    The form name.

  • Name
    description
    Type
    string | null
    Description

    The form description.

  • Name
    communityId
    Type
    integer
    Description

    The ID of the community that owns the form.

  • Name
    type
    Type
    integer
    Description

    The form family: 0 Undefined, 1 ApplicationDefinition, 2 Tab, 3 Evaluation. Always 0 for project forms.

  • Name
    creationDate
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of when the form was created.

  • Name
    lastEditionDate
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of when the form was last edited.

  • Name
    userCreatorId
    Type
    integer
    Description

    Always 0 on this endpoint.

  • Name
    questions
    Type
    array
    Description

    The form's questions. On this endpoint the list is not the raw form definition: it is the union of the community's default project form and any question from earlier rounds the project answered, with project-field questions removed, custom questions kept only when they belong to the default form or are flagged for the project profile, and per-round copies of default questions dropped. Described under form.questions array items below.

  • Name
    sections
    Type
    array
    Description

    The form's sections, ordered. Always [] on this endpoint. Where populated, each section carries id, title, description and order.

  • Name
    includeInLandingPage
    Type
    boolean
    Description

    Whether the form's answers are shown on the community landing page.

  • Name
    isDefaultCommunityProjectForm
    Type
    boolean
    Description

    Whether this is the community's default project form.

form.questions array items

  • Name
    id
    Type
    integer
    Description

    The ID of the question.

  • Name
    title
    Type
    string | null
    Description

    The question's short title.

  • Name
    description
    Type
    string | null
    Description

    Helper text shown under the question.

  • Name
    question
    Type
    string | null
    Description

    The question text itself.

  • Name
    questionOrder
    Type
    integer
    Description

    The question's position in the form.

  • Name
    mandatoryAnswer
    Type
    boolean
    Description

    Whether an answer is required.

  • Name
    editableAnswer
    Type
    boolean
    Description

    Whether the answer can be changed after it has been submitted.

  • Name
    answerType
    Type
    integer
    Description

    The input type: 0 RadioChoice, 1 CheckBoxChoice, 2 DropDownChoice, 3 MultipleChoice, 4 AccountMoney, 5 Calendar, 7 ShortText, 8 LongText, 9 File, 10 Scale, 11 Country, 12 Table, 13 Numeric. Negative values map the question onto a built-in project field and are filtered out of this endpoint's response.

  • Name
    isProjectField
    Type
    boolean
    Description

    Whether the question writes to a built-in project field instead of the answers table. Read-only, computed from answerType. Always false on this endpoint — such questions are filtered out.

  • Name
    allowMultipleAnswer
    Type
    boolean
    Description

    Whether more than one option may be selected.

  • Name
    questionLinks
    Type
    array
    Description

    Reference links shown alongside the question. Described under form.questions[].questionLinks array items below.

  • Name
    questionOptions
    Type
    array
    Description

    The selectable options, ordered by questionOptionOrder — or alphabetically by label when answerType is 11 (Country). Described under form.questions[].questionOptions array items below.

  • Name
    isFilterable
    Type
    boolean | null
    Description

    Whether answers to this question can be used as a project-list filter. Filterable questions are the ones returned in projectFilters.filters by List projects.

  • Name
    privacyLevel
    Type
    integer
    Description

    Who can see the answer: 0 Undefined, 1 Public, 2 Community, 3 Team, 4 Custom, 5 TeamAndMentors, 6 SetByTeam.

  • Name
    privacyCirclesIds
    Type
    array of integer | null
    Description

    The IDs of the community circles allowed to see the answer when privacyLevel is 4 (Custom). null when the question has no privacy-circle records.

  • Name
    conditionalLogicType
    Type
    integer
    Description

    How the entries in formQuestionConditionalLogicList combine: 0 None, 1 AnyConditional, 2 AllConditionals.

  • Name
    formQuestionConditionalLogicList
    Type
    array | null
    Description

    The conditions that must hold for this question to be shown. null when the question has no conditions. Described under form.questions[].formQuestionConditionalLogicList array items below.

  • Name
    fromApplication
    Type
    boolean
    Description

    Whether the question originated in an application form. Always false for project forms.

  • Name
    hasWeightedAverage
    Type
    boolean
    Description

    Whether the question carries an evaluation weight. Read-only, derived from weightedAverage. Always false for project forms.

  • Name
    weightedAverage
    Type
    number | null
    Description

    The evaluation weight. Always null for project forms.

  • Name
    convertToKpi
    Type
    boolean
    Description

    Whether numeric answers are turned into a KPI. Always false for project forms.

  • Name
    changePermissionPrivacyLevel
    Type
    integer
    Description

    Which circle may change the question's privacy. Always 0 (Undefined) for project forms.

  • Name
    questionType
    Type
    integer
    Description

    When the question is asked: 0 ProjectTemplate — part of the project profile — or 1 AfterProjectApproval.

  • Name
    includeInProjectProfile
    Type
    boolean
    Description

    Whether the question is shown on the project profile.

  • Name
    hasLimit
    Type
    boolean
    Description

    Whether the answer length is capped.

  • Name
    limitType
    Type
    integer | null
    Description

    The unit the cap is expressed in: 1 Characters, 2 Words. null when hasLimit is false.

  • Name
    limitValue
    Type
    integer | null
    Description

    The cap itself, in the unit given by limitType.

  • Name
    defaultProjectFormQuestionId
    Type
    integer | null
    Description

    The ID of the community default-form question this one was copied from. Always null on this endpoint — per-round copies are filtered out.

  • Name
    sectionId
    Type
    integer | null
    Description

    The ID of the form section the question belongs to, or null when it is not sectioned.

form.questions[].questionLinks array items

  • Name
    questionLink
    Type
    string | null
    Description

    A reference URL shown with the question.

form.questions[].questionOptions array items

  • Name
    id
    Type
    integer
    Description

    The ID of the option. This is what answers reference.

  • Name
    questionOption
    Type
    string | null
    Description

    The option label.

  • Name
    questionOptionOrder
    Type
    integer
    Description

    The option's position in the list.

form.questions[].formQuestionConditionalLogicList array items

  • Name
    id
    Type
    integer
    Description

    The ID of the condition.

  • Name
    conditionFormQuestionId
    Type
    integer
    Description

    The ID of the question whose answer the condition tests.

  • Name
    formQuestionOptionId
    Type
    integer | null
    Description

    The option the condition tests against, for choice questions. null when the condition uses customValue instead.

  • Name
    customValue
    Type
    string | null
    Description

    The literal value the condition tests against, for free-text and numeric questions.

  • Name
    conditionLogic
    Type
    integer
    Description

    The comparison: 1 Equal, 2 NotEqual, 3 GreaterThen, 4 LessThen, 5 Contains, 6 DoesNotContain, 7 IsEmpty, 8 NotEmpty.

answers array items

  • Name
    id
    Type
    integer
    Description

    The ID of the answer.

  • Name
    formId
    Type
    integer
    Description

    The ID of the project form the answer was submitted against. Answers from earlier rounds keep their own form ID.

  • Name
    formQuestionId
    Type
    integer
    Description

    The ID of the form question being answered.

  • Name
    userId
    Type
    integer
    Description

    The ID of the user who submitted the answer.

  • Name
    lastSubmitedTime
    Type
    string | null
    Description

    ISO-8601 UTC timestamp of when the answer was last saved.

  • Name
    applicationId
    Type
    integer
    Description

    Only used by application-form answers. Always 0 here.

  • Name
    tabEntityId
    Type
    integer
    Description

    Only used by tab-form answers. Always 0 here.

  • Name
    projectId
    Type
    integer
    Description

    Always 0 here — project form answers are keyed by community project, not by project. Use the top-level id for the project.

  • Name
    answer
    Type
    string | null
    Description

    The answer payload. Free text for text questions, the selected option's ID as a string for choice questions, and a file path for file questions.

  • Name
    optionAnswerOrder
    Type
    integer
    Description

    The position of this answer within a multi-select or table question. 0 for single answers.

  • Name
    optionRowAnswerOrder
    Type
    integer
    Description

    The row index for table questions. 0 otherwise.

kpiDefinitions array items

  • Name
    methodologyId
    Type
    integer | null
    Description

    The ID of the program the KPI definition belongs to, or null for definitions scoped directly to the project.

  • Name
    name
    Type
    string | null
    Description

    The KPI name.

  • Name
    frequency
    Type
    integer
    Description

    The reporting interval in months: 1 monthly, 3 quarterly, 6 half-yearly, 12 yearly.

  • Name
    isBiggerBetter
    Type
    boolean
    Description

    Whether a higher value is the desired direction.

  • Name
    enabled
    Type
    boolean
    Description

    Whether the KPI is currently collected.

  • Name
    startingYear
    Type
    integer
    Description

    The first year the KPI is tracked from.

  • Name
    startingMonth
    Type
    integer
    Description

    The first month the KPI is tracked from, 1 to 12.

  • Name
    isRemoved
    Type
    boolean
    Description

    Whether the definition has been soft-deleted. Always false here — removed definitions are filtered out.

  • Name
    communityProjectId
    Type
    integer | null
    Description

    The community project the definition is scoped to, or null for project-scoped and program-template definitions.

  • Name
    communityProject
    Type
    object | null
    Description

    The community project the definition is scoped to. null for project-scoped and program-template definitions. Described under kpiDefinitions[].communityProject object below.

  • Name
    projectId
    Type
    integer | null
    Description

    The project the definition is scoped to, or null for community-project-scoped and program-template definitions.

  • Name
    project
    Type
    null
    Description

    Always null here.

  • Name
    methodology
    Type
    null
    Description

    Always null here.

  • Name
    comesFromSurvey
    Type
    boolean
    Description

    Whether the definition was generated from a survey question.

  • Name
    isProjectScoped
    Type
    boolean
    Description

    Read-only. true when the definition travels with the project across every community — that is, when projectId is set and communityProjectId is not.

  • Name
    isCommunityProjectScoped
    Type
    boolean
    Description

    Read-only. true when the definition is confined to one community — that is, when communityProjectId is set and projectId is not.

  • Name
    isMethodologyTemplate
    Type
    boolean
    Description

    Read-only. true when the definition is the program's template row rather than a per-project copy — that is, when neither projectId nor communityProjectId is set.

  • Name
    id
    Type
    integer
    Description

    The ID of the KPI definition. It matches kpiChartReport[].kpiDefinitionId on Get projects KPI progress.

kpiDefinitions[].communityProject object

  • Name
    communityId
    Type
    integer
    Description

    The community side of the link.

  • Name
    community
    Type
    null
    Description

    The community record. Always null here.

  • Name
    projectId
    Type
    integer
    Description

    The project side of the link.

  • Name
    project
    Type
    null
    Description

    The project record. Always null here.

  • Name
    isApproved
    Type
    boolean
    Description

    Whether the community has approved the project.

  • Name
    isDisabled
    Type
    boolean
    Description

    Whether the link has been disabled.

  • Name
    privacyLevel
    Type
    integer
    Description

    Who may see the project inside the community: 0 Open, 1 InviteOnly, 2 Private.

  • Name
    projectForm
    Type
    null
    Description

    The community's project form. Always null here.

  • Name
    projectFormId
    Type
    integer | null
    Description

    The ID of the community's project form. It matches the top-level form.id.

  • Name
    projectMethodologies
    Type
    null
    Description

    The programs the project runs in this community. Always null here.

  • Name
    projectCommunityCircleList
    Type
    null
    Description

    The community circles wired to this community project. Always null here.

  • Name
    projectCommunityUserCircleTagList
    Type
    null
    Description

    The circle tags on this community project. Always null here.

  • Name
    surveyKPIs
    Type
    null
    Description

    The survey-derived KPIs for this community project. Always null here.

  • Name
    id
    Type
    integer
    Description

    The ID of the community-project link row.

Possible errors

  • Name
    401 Unauthorized
    Description

    The request is not authenticated.

  • Name
    500 Internal Server Error
    Description

    The project does not exist, is not in the requested community, has been disabled, or the caller may not see it — and the bearer token no longer resolving to a user lands here too. The body carries an error discriminator: ProjectNotFoundException, ProjectIsDisabledException, CannotAccessToProjectException or UserOauthExpiredException, alongside errorCode and message. Branch on error rather than on the status code.

Request

GET
/api/Project/GetOverview?id={id}
curl -X GET "https://api.babele.co/api/Project/GetOverview?id=1714&communityId=999" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json"

Response

{
"id": 1714,
"name": "Clean Water Initiative",
"description": "Bringing safe drinking water to rural communities.",
"logoImage": "/Images/Uploads/project_logo/clean-water.png",
"isVideo": false,
"websiteUrl": "https://cleanwater.example.org",
"mainImageOrVideo": "/Images/Uploads/project_main/clean-water-hero.jpg",
"countryName": "Romania",
"city": "Bucharest",
"latitude": 44.4268,
"longitude": 26.1025,
"categoryName": "Environment",
"developmentStage": "MVP",
"unGoalName": "Clean Water and Sanitation",
"viewCount": 0,
"commentCount": 0,
"loveCount": 0,
"canInviteMembersAndMentorsFromOutside": true,
"isCommunityAdmin": true,
"canEditProjectInfo": true,
"canEditProjectTeam": true,
"canEditCircles": true,
"canViewTasks": true,
"isFollowing": false,
"isProjectTeamMember": true,
"isPendingByTeam": false,
"isPendingByUser": false,
"twitterUrl": "https://twitter.com/cleanwater",
"facebookUrl": "https://facebook.com/cleanwater",
"googleUrl": null,
"linkedInUrl": "https://linkedin.com/company/cleanwater",
"flickrUrl": null,
"twitterUrlSuffix": "cleanwater",
"facebookUrlSuffix": "cleanwater",
"googleUrlSuffix": null,
"linkedInUrlSuffix": "company/cleanwater",
"flickrUrlSuffix": null,
"discussionCount": 12,
"resourceCount": 8,
"networkCount": 5,
"methodologyId": 0,
"problemSolved": "Lack of access to safe drinking water.",
"ourSolution": "Low-cost solar water purification units.",
"measureImpact": "Litres of safe water delivered per month.",
"lastUpdated": "0001-01-01T00:00:00Z",
"userInvitationPolicy": 1,
"hideParagraphsUntilDate": false,
"countryId": 173,
"categoryId": 7,
"unGoalId": 6,
"projectModel": "Non-profit",
"pendingParagraphs": [
    {
        "id": 88301,
        "name": "Impact measurement plan",
        "methodologySectionId": 412
    },
    {
        "id": 88307,
        "name": "Distribution partners",
        "methodologySectionId": 413
    }
],
"team": [
    {
        "id": 1,
        "firstName": "John",
        "lastName": "Doe",
        "mail": "john.doe@example.com",
        "photo": "/Images/Uploads/profile_picture/test.jpg",
        "occupation": "Founder",
        "biography": "Water engineer, 12 years in rural infrastructure.",
        "commentCount": 0,
        "likeCount": 0,
        "followedUsersCount": 0,
        "activationCode": null,
        "activationCodeSent": true,
        "isProfileWizardDone": true,
        "countryId": 173,
        "country": null,
        "city": "Bucharest",
        "latitude": 44.4268,
        "longitude": 26.1025,
        "company": "Clean Water Initiative",
        "isBanned": false,
        "isActive": true,
        "invitationUrl": null,
        "language": "en",
        "registrationDate": "2024-03-11T09:20:00Z",
        "lastLoginDate": "2026-06-19T07:45:00Z",
        "notificationEnabled": true,
        "primaryCommunityId": 999,
        "primaryCommunityName": null,
        "hasPendingRequests": false,
        "userInterests": null,
        "userSkills": null,
        "userSocial": null,
        "userMarketsExpertises": null,
        "userSustainableDevelopmentsGoals": null,
        "tags": null,
        "userTags": null,
        "termsAndConditionsVersion": 3,
        "photoUrl": "/Images/Uploads/profile_picture/test.jpg",
        "facebookUrl": null,
        "twitterUrl": null,
        "googleUrl": null,
        "linkedInUrl": "https://linkedin.com/in/johndoe",
        "isFollowedByMe": false,
        "projectCircleId": 1,
        "isPendingByUser": false,
        "isPendingByTeam": false,
        "requestedProjectCircleId": null
    }
],
"openDiscussions": [
    {
        "paragraphId": 88301,
        "discussionUserFollows": null,
        "followersCount": 0,
        "id": 5521,
        "name": "Which filtration membrane should we standardise on?",
        "commentCount": 7,
        "image": "/Images/Uploads/discussion/membrane.jpg",
        "postDate": "2026-06-12T08:30:00Z",
        "lastUpdated": "2026-06-19T16:10:00Z",
        "deadlineDate": "2026-07-12T08:30:00Z",
        "deadline": 3,
        "daysLeft": 15,
        "isActive": true,
        "userId": 1,
        "authorName": null,
        "authorPhoto": null,
        "authorOccupation": null,
        "discussionTags": [
            "filtration",
            "procurement"
        ],
        "circleTags": null,
        "discussionSkillCategories": null,
        "isArchived": false,
        "isLockedCommentDiscussions": false,
        "privacyLevel": 0,
        "isFollowedByMe": true,
        "viewCount": 143
    }
],
"projectTags": [],
"projectSustainableDevelopmentGoals": [
    {
        "projectId": 1714,
        "sustainableDevelopmentGoalId": 6
    }
],
"communityIds": [
    999
],
"mainCommunityId": 999,
"communities": [
    {
        "id": 999,
        "name": "Water for All",
        "logoImageUrl": "/Images/Uploads/community_logo/water-for-all.png"
    },
    {
        "id": 1042,
        "name": "Green Impact Accelerator",
        "logoImageUrl": "/Images/Uploads/community_logo/green-impact.png"
    }
],
"form": {
    "id": 640,
    "name": "Clean water project profile",
    "description": "Extra questions asked of every project in this community.",
    "communityId": 999,
    "type": 0,
    "creationDate": "2025-11-02T10:00:00Z",
    "lastEditionDate": "2026-05-14T11:22:00Z",
    "userCreatorId": 0,
    "questions": [
        {
            "id": 9101,
            "title": "Water source",
            "description": "Pick the primary source your units draw from.",
            "question": "What is the primary water source?",
            "questionOrder": 1,
            "mandatoryAnswer": true,
            "editableAnswer": true,
            "answerType": 2,
            "isProjectField": false,
            "allowMultipleAnswer": false,
            "questionLinks": [
                {
                    "questionLink": "https://cleanwater.example.org/sources"
                }
            ],
            "questionOptions": [
                {
                    "id": 4401,
                    "questionOption": "Borehole",
                    "questionOptionOrder": 1
                },
                {
                    "id": 4402,
                    "questionOption": "Surface water",
                    "questionOptionOrder": 2
                }
            ],
            "isFilterable": true,
            "privacyLevel": 2,
            "privacyCirclesIds": null,
            "conditionalLogicType": 0,
            "formQuestionConditionalLogicList": [],
            "fromApplication": false,
            "hasWeightedAverage": false,
            "weightedAverage": null,
            "convertToKpi": false,
            "changePermissionPrivacyLevel": 0,
            "questionType": 0,
            "includeInProjectProfile": true,
            "hasLimit": false,
            "limitType": null,
            "limitValue": null,
            "defaultProjectFormQuestionId": null,
            "sectionId": null
        },
        {
            "id": 9102,
            "title": "Treatment detail",
            "description": null,
            "question": "Describe the treatment steps applied to surface water.",
            "questionOrder": 2,
            "mandatoryAnswer": false,
            "editableAnswer": true,
            "answerType": 8,
            "isProjectField": false,
            "allowMultipleAnswer": false,
            "questionLinks": [],
            "questionOptions": [],
            "isFilterable": false,
            "privacyLevel": 4,
            "privacyCirclesIds": [
                21,
                22
            ],
            "conditionalLogicType": 1,
            "formQuestionConditionalLogicList": [
                {
                    "id": 771,
                    "conditionFormQuestionId": 9101,
                    "formQuestionOptionId": 4402,
                    "customValue": null,
                    "conditionLogic": 1
                }
            ],
            "fromApplication": false,
            "hasWeightedAverage": false,
            "weightedAverage": null,
            "convertToKpi": false,
            "changePermissionPrivacyLevel": 0,
            "questionType": 0,
            "includeInProjectProfile": true,
            "hasLimit": true,
            "limitType": 2,
            "limitValue": 250,
            "defaultProjectFormQuestionId": null,
            "sectionId": null
        }
    ],
    "sections": [],
    "includeInLandingPage": true,
    "isDefaultCommunityProjectForm": true
},
"answers": [
    {
        "id": 30211,
        "formId": 640,
        "formQuestionId": 9101,
        "userId": 1,
        "lastSubmitedTime": "2026-06-18T09:12:00Z",
        "applicationId": 0,
        "tabEntityId": 0,
        "projectId": 0,
        "answer": "4402",
        "optionAnswerOrder": 0,
        "optionRowAnswerOrder": 0
    },
    {
        "id": 30212,
        "formId": 640,
        "formQuestionId": 9102,
        "userId": 1,
        "lastSubmitedTime": "2026-06-18T09:14:00Z",
        "applicationId": 0,
        "tabEntityId": 0,
        "projectId": 0,
        "answer": "Sedimentation, sand filtration, then UV disinfection.",
        "optionAnswerOrder": 0,
        "optionRowAnswerOrder": 0
    }
],
"kpiDefinitions": [
    {
        "methodologyId": 73,
        "name": "Litres of safe water delivered",
        "frequency": 1,
        "isBiggerBetter": true,
        "enabled": true,
        "startingYear": 2025,
        "startingMonth": 1,
        "isRemoved": false,
        "communityProjectId": 5120,
        "communityProject": {
            "communityId": 999,
            "community": null,
            "projectId": 1714,
            "project": null,
            "isApproved": true,
            "isDisabled": false,
            "privacyLevel": 0,
            "projectForm": null,
            "projectFormId": 640,
            "projectMethodologies": null,
            "projectCommunityCircleList": null,
            "projectCommunityUserCircleTagList": null,
            "surveyKPIs": null,
            "id": 5120
        },
        "projectId": null,
        "project": null,
        "methodology": null,
        "comesFromSurvey": false,
        "isProjectScoped": false,
        "isCommunityProjectScoped": true,
        "isMethodologyTemplate": false,
        "id": 274
    },
    {
        "methodologyId": null,
        "name": "Villages served",
        "frequency": 12,
        "isBiggerBetter": true,
        "enabled": true,
        "startingYear": 2025,
        "startingMonth": 1,
        "isRemoved": false,
        "communityProjectId": null,
        "communityProject": null,
        "projectId": 1714,
        "project": null,
        "methodology": null,
        "comesFromSurvey": false,
        "isProjectScoped": true,
        "isCommunityProjectScoped": false,
        "isMethodologyTemplate": false,
        "id": 430
    }
],
"projectCommunityCircleList": null,
"projectCommunityUserCircleTagList": []
}

GET/api/Project/GetEditInfoOverview?id={id}&communityId={communityId}

Get a project for editing

This endpoint allows you to retrieve a project's editable profile fields, in the exact shape the update endpoint expects them back. Use it as the read half of a read-modify-write.

Query parameters

  • Name
    id
    Type
    integer
    Description

    Required. The ID of the project.

  • Name
    communityId
    Type
    integer
    Description

    The community to read the project in. Omit it for the standalone view.

Response attributes

  • Name
    id
    Type
    integer
    Description

    The ID of the project.

  • Name
    name
    Type
    string | null
    Description

    The project name.

  • Name
    description
    Type
    string | null
    Description

    The project's short description.

  • Name
    city
    Type
    string | null
    Description

    The project's city.

  • Name
    latitude
    Type
    number | null
    Description

    The project's latitude.

  • Name
    longitude
    Type
    number | null
    Description

    The project's longitude.

  • Name
    countryId
    Type
    integer
    Description

    The ID of the project's country.

  • Name
    categoryId
    Type
    integer
    Description

    The ID of the project's industry category.

  • Name
    unGoalId
    Type
    integer | null
    Description

    The ID of the project's primary UN goal.

  • Name
    developmentStage
    Type
    string | null
    Description

    The project's development stage.

  • Name
    projectModel
    Type
    string | null
    Description

    The project's business model.

  • Name
    logoImage
    Type
    string | null
    Description

    The URL of the project's logo.

  • Name
    mainImageOrVideo
    Type
    string | null
    Description

    The URL of the project's cover image or video.

  • Name
    websiteUrl
    Type
    string | null
    Description

    The project's website.

  • Name
    twitterUrlSuffix
    Type
    string | null
    Description

    The project's Twitter handle — the handle alone, not the full URL. facebookUrlSuffix, googleUrlSuffix, linkedInUrlSuffix and flickrUrlSuffix work the same way.

  • Name
    communityId
    Type
    integer
    Description

    Echoes the communityId you asked for.

  • Name
    projectTags
    Type
    array of string
    Description

    The project's tag names.

  • Name
    projectSustainableDevelopmentGoals
    Type
    array of integer
    Description

    The IDs of the UN Sustainable Development Goals linked to the project.

  • Name
    tags
    Type
    array of string
    Description

    The same tag names as projectTags. Read-only.

  • Name
    answers
    Type
    array
    Description

    Always empty here. See the note above.

Request

GET
/api/Project/GetEditInfoOverview?id={id}&communityId={communityId}
curl -X GET "https://api.babele.co/api/Project/GetEditInfoOverview?id=1714&communityId=999" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json"

Response

{
"id": 1714,
"name": "SolarKit",
"description": "Modular off-grid solar kits for rural clinics.",
"city": "Nairobi",
"latitude": -1.2921,
"longitude": 36.8219,
"countryId": 110,
"categoryId": 6,
"unGoalId": 7,
"logoImage": "project_files/solarkit-logo.png",
"mainImageOrVideo": "project_files/solarkit-cover.jpg",
"websiteUrl": "https://solarkit.example.com",
"twitterUrlSuffix": "solarkit",
"facebookUrlSuffix": "",
"googleUrlSuffix": "",
"linkedInUrlSuffix": "solarkit-inc",
"flickrUrlSuffix": "",
"developmentStage": "Growth",
"projectModel": "For-profit",
"communityId": 999,
"projectTags": ["energy", "healthcare"],
"projectSustainableDevelopmentGoals": [7, 13],
"tags": ["energy", "healthcare"],
"answers": []
}

POST/api/Project/SaveEditInfoOverview

Update a project

This endpoint allows you to update a project's profile and, in the same call, its answers to the community's project form. It responds with the project's overview — the same shape as GET /api/Project/GetOverview above.

Members of the project's team can call it. So can administrators of the community, while the project belongs to that one community only.

Request body attributes

Takes the same fields as the response of GET /api/Project/GetEditInfoOverview above, sent back modified. The ones that need care:

  • Name
    id
    Type
    integer
    Description

    Required. The ID of the project to update.

  • Name
    communityId
    Type
    integer
    Description

    The community whose form answers you are writing. Required to save answers — with 0 or nothing, the profile fields are still saved but answers are left alone in every community.

  • Name
    countryId
    Type
    integer
    Description

    The ID of the project's country. 0 means "not set".

  • Name
    categoryId
    Type
    integer
    Description

    The ID of the project's industry category. 0 means "not set".

  • Name
    unGoalId
    Type
    integer | null
    Description

    The project's primary UN goal. null or 0 clears it.

  • Name
    projectTags
    Type
    array of string
    Description

    Replaces the project's tags wholesale. Omitting it or sending an empty array clears them all.

  • Name
    projectSustainableDevelopmentGoals
    Type
    array of integer
    Description

    Replaces the project's SDGs wholesale, with the same caveat.

  • Name
    answers
    Type
    array
    Description

    The project's answers to the community's project form. Described under answers array items below.

answers array items

Leaving answers out — or sending an empty array — leaves the project's existing answers untouched. Send a non-empty array and it replaces the answer set for that community: entries are created or updated, and any stored answer you leave out is deleted.

  • Name
    id
    Type
    integer
    Description

    0 for a new answer. To update an answer in place, send back the id you read from GET /api/Project/GetOverview.

  • Name
    formQuestionId
    Type
    integer
    Description

    Required. The ID of the project form question being answered.

  • Name
    formId
    Type
    integer
    Description

    The ID of the form the question belongs to. Resolved from formQuestionId, so 0 is fine.

  • Name
    answer
    Type
    string | null
    Description

    The answer value, for the answer types that carry one.

  • Name
    optionAnswerOrder
    Type
    integer
    Description

    The selected option's questionOptionOrder, for the choice types.

  • Name
    optionRowAnswerOrder
    Type
    integer
    Description

    The row index, for table questions. 0 otherwise.

Answer shapes by question type

  • Name
    Short text, long text, numeric, money
    Description

    One entry, with the value in answer.

  • Name
    Calendar
    Description

    One entry, with an ISO 8601 date-time in answer.

  • Name
    Radio choice, dropdown choice, scale
    Description

    One entry, with the chosen option's order in optionAnswerOrder.

  • Name
    Checkbox choice, multiple choice
    Description

    One entry per selected option — several entries sharing a formQuestionId, each with its own optionAnswerOrder.

  • Name
    Country
    Description

    One entry, with the country's ID in optionAnswerOrder.

  • Name
    Table
    Description

    One entry per cell: the column in optionAnswerOrder, the zero-based row in optionRowAnswerOrder, and the cell's value in answer.

Two things the server does for you. An answer to a question that is restricted to a circle you cannot edit is kept, not deleted, when you leave it out — so a client that never rendered the question cannot wipe it. And an answer whose formQuestionId is not on that community's form is ignored rather than failing the whole save.

Answers are held per community. A project in three communities keeps three independent sets, so a save with one communityId never touches the others.

Possible errors

  • Name
    401 Unauthorized
    Description

    The request is missing valid authentication.

  • Name
    403 Forbidden
    Description

    You may not edit this project.

Request

POST
/api/Project/SaveEditInfoOverview
curl -X POST https://api.babele.co/api/Project/SaveEditInfoOverview \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id":1714,"name":"SolarKit","description":"Modular off-grid solar kits for rural clinics.","city":"Nairobi","latitude":-1.2921,"longitude":36.8219,"countryId":110,"categoryId":6,"unGoalId":7,"logoImage":"project_files/solarkit-logo.png","mainImageOrVideo":"project_files/solarkit-cover.jpg","websiteUrl":"https://solarkit.example.com","twitterUrlSuffix":"solarkit","facebookUrlSuffix":"","googleUrlSuffix":"","linkedInUrlSuffix":"solarkit-inc","flickrUrlSuffix":"","developmentStage":"Growth","projectModel":"For-profit","communityId":999,"projectTags":["energy","healthcare"],"projectSustainableDevelopmentGoals":[7,13],"answers":[{"id":9012,"formId":0,"formQuestionId":781,"answer":"Off-grid clinics across East Africa.","optionAnswerOrder":0,"optionRowAnswerOrder":0},{"id":0,"formId":0,"formQuestionId":782,"answer":null,"optionAnswerOrder":2,"optionRowAnswerOrder":0}]}'

Response

{
"id": 1714,
"name": "SolarKit",
"description": "Modular off-grid solar kits for rural clinics.",
"city": "Nairobi",
"countryId": 110,
"countryName": "Kenya",
"categoryId": 6,
"categoryName": "Energy",
"unGoalId": 7,
"unGoalName": "Affordable and Clean Energy",
"developmentStage": "Growth",
"projectModel": "For-profit",
"websiteUrl": "https://solarkit.example.com",
"canEditProjectInfo": true,
"isProjectTeamMember": true,
"lastUpdated": "2026-08-07T11:02:18.443091Z"
}

POST/api/Project/SaveFieldEditInfo

Update a single project field

This endpoint allows you to write one named profile field and leave everything else alone. It is the only way to set the project's problem, solution and impact statements, which are not part of the update payload above. It echoes your request back.

Request body attributes

  • Name
    id
    Type
    integer
    Description

    Required. The ID of the project.

  • Name
    communityId
    Type
    integer
    Description

    The community you are editing the project in. Send 0 outside a community.

  • Name
    projectFieldEditInfoType
    Type
    integer
    Description

    Required. Which field to write: 1 name, 2 description, 3 city, 4 problem solved, 5 our solution, 6 how we measure impact, 7 website. 0 is undefined and writes nothing.

  • Name
    fieldValue
    Type
    string | null
    Description

    The new value for that field.

Possible errors

  • Name
    403 Forbidden
    Description

    You may not edit this project.

Request

POST
/api/Project/SaveFieldEditInfo
curl -X POST https://api.babele.co/api/Project/SaveFieldEditInfo \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id":1714,"communityId":999,"projectFieldEditInfoType":4,"fieldValue":"Rural clinics lack reliable power for refrigeration and equipment."}'

Response

{
"id": 1714,
"communityId": 999,
"projectFieldEditInfoType": 4,
"fieldValue": "Rural clinics lack reliable power for refrigeration and equipment."
}

POST/api/Project/SaveTags

Update a project's tags

This endpoint allows you to replace a project's tags without touching any other field. It responds with 200 OK and an empty body.

Tags belong to the project, not to one community — a change here is visible in every community the project belongs to, whatever communityId you send.

Request body attributes

  • Name
    projectId
    Type
    integer
    Description

    Required. The ID of the project.

  • Name
    communityId
    Type
    integer
    Description

    The community you are working in.

  • Name
    projectTags
    Type
    array of string
    Description

    The complete set of tag names. Anything you leave out is removed; an empty array clears them all.

Request

POST
/api/Project/SaveTags
curl -X POST https://api.babele.co/api/Project/SaveTags \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJleGFtcGxlIiwiZXhwIjoxNzQzODY1MjA3fQ.DEMO_SIGNATURE_NOT_A_REAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":1714,"communityId":999,"projectTags":["energy","healthcare","climate"]}'

Response

200 OK